Today we’re announcing a feature that is going to change the way teams test and evaluate code changes. Continuous delivery works best when all team members — designers and testers included — can efficiently visualize and review the result of proposed changes. With Review Apps enabled, Heroku will spin up temporary test apps for every pull request that’s opened on GitHub, complete with fresh add-ons and other config required to make the app run. Instead of relying only on code reviews and unit tests run by CI, teams can use Review Apps to immediately try out and debug code branches in a production-like environment on Heroku. Review apps speed up team decision-making so that you can deliver better apps faster, and with greater confidence.
The Review Apps feature builds on the GitHub Integration announced in February and combines two things in this world that are good and righteous:
- Heroku apps and the ease and speed of creating them from
- GitHub pull requests for reviewing and discussing changes to source code
This is great if you’re using GitHub Flow to propose, discuss and merge changes to your code. Because pull request branches are deployed to new apps on Heroku, it’s quick and simple for you and your collaborators to test and debug changes proposed in the PR and decide whether it’s ready to merge, needs more work or to close it because it’s not the experience you want.
Read on below, or check the Dev Center docs for details.
Configuring review apps is simple:
- Find the app in Heroku Dashboard and select the “Deploy” tab
- Make sure the app is connected to a GitHub repo
- Find the Review apps section and hit “Enable Review Apps”
You can use Review Apps in either manual or automatic mode. In manual mode, Heroku will display the PRs currently open on the repo and let you create apps for PRs that you want to test. In automatic mode, Heroku will immediately create apps for any PR opened on the repo. Heroku will keep apps updated as you push changes to branches and update the activity stream on GitHub with deploy notifications for the associated app, or post errors if a build or app-setup fails. Whether manual or automatic, Review Apps are torn down as soon the associated GitHub pull request is closed, so that no resources are wasted.
See the Dev Center documentation for details on how to get started with Review Apps.
Review Apps is a deceptively simple feature: It combines the ease of Git branching and GitHub pull requests with the simplicity of spinning up new Heroku apps. Under the covers, however, we had to get a lot of things right to remove all manual tasks from the process of setting up a new app for every pull request opened:
- Templating app creation with
app.jsonhas to be expressive enough to fully specify what’s required for an app to run
- Builds have to be reliable and Buildpacks have to be able to create complete, working slugs from code written with a wide range of languages and frameworks
- Provisioning add-ons from any of Heroku’s 100+ partners must be fast and reliable
Review Apps is a feature that’s hard to imagine outside of a Platform-as-a-Service like Heroku. Sophisticated development teams can commit time and resources to build and maintain custom scripts that do something similar, but without fungible containers and fast add-on provisioning, deploying every pull request opened on a repo is complicated and costly. With Heroku Review Apps, we’re bringing sophisticated and powerful continuous delivery flows to smaller teams and individual developers.
We’re using Review Apps extensively at Heroku and beta testers are also excited:
Screenshots are all well and good, and seeing a diff of the code is great, but being able to fire up the new version of your app there and then in your browser to click through everything yourself takes visualising a change to a whole other level.
Review apps are amazing for dealing the with the 'Sure the Pull Request passes tests and has clean code, but does its feature actually work?' problem.
PR branches running in full-fledged Heroku apps will inform your team’s discussions because code changes can be easily tested and debugged by you and your team in a production-like environment. That will help you make better pull request review decisions, let testers, designers, product managers, and QA more easily test upcoming changes and ultimately let you deliver better tested and more reliable apps with Heroku.