Skip to content

Review Apps

Review apps create a temporary, fully working environment for each pull request. Reviewers click a real link, exercise real code, and see real config — instead of trying to imagine what your branch does from a diff.

When a pull request opens against a connected repository:

  1. Watasu creates a preview app
  2. Provisions the add-ons declared in app.json
  3. Deploys the PR’s source
  4. (Optionally) runs scripts.postdeploy to seed data, run migrations, etc.

When the pull request closes or merges:

  1. (Optionally) runs scripts.pr-predestroy for any cleanup
  2. Tears down the preview app and its add-ons

app.json is required for review apps. It’s how Watasu knows what to provision and configure for each PR.

A minimal app.json for review apps:

{
"env": {
"RAILS_ENV": { "value": "production" }
},
"addons": [
"postgresql:hobby-0",
"valkey:hobby-0"
],
"formation": {
"web": { "quantity": 1, "size": "standard-1x" }
},
"scripts": {
"postdeploy": "bundle exec rails db:prepare && bundle exec rails db:seed",
"pr-predestroy": "bundle exec rails app:cleanup"
}
}

For the full schema, see Reference → app.json Schema.

  • design and product reviews on real UI
  • migration and seed-data validation against real databases
  • integration tests against real attached add-ons
  • stakeholder demos before merging

Review apps are real environments that cost real resources. A few rules of thumb:

  • pick small plans for review-app add-ons (postgresql:hobby-0, valkey:hobby-0) — they don’t need production sizing
  • don’t bake long-lived production secrets into app.json. Set those out-of-band on the parent app.
  • use pr-predestroy for any cleanup that needs to happen before the environment goes away (notifying systems, archiving logs)