Skip to main content
Updated October 19, 2026 With previews on, every open pull request gets its own copy of your app at its own https address. The copy is built from the pull request’s latest commit, rebuilt on every push and deleted when the pull request is closed or merged. Previews are free.

Before you start

  • A website or API deployed from GitHub. Other app types, and apps from a Docker image or a template, have no previews.
  • Pull requests from a branch of the same repository. Pull requests from forks are never built. Draft pull requests are built.

How many previews you get

The app’s size sets how many previews can run at the same time. When all of them are in use, a new pull request gets no preview until one closes. Running previews are never removed to make room.

Turn on previews

1

Open Settings

Open the app and go to Settings, Preview environments.
2

Turn them on

Tick Preview environments and click Save.
TODO: Preview environments section in app Settings with the toggle on
3

Open a pull request

Open a pull request on the app’s repository. Its preview appears on the Deploys tab within a minute.

Find and manage previews

On the Deploys tab, Preview environments lists one row per pull request, with its state, its address and when it expires.
  • Redeploy builds the preview again from the pull request’s latest commit.
  • Delete removes the preview. Your app is not touched, and the next push to the pull request builds a new preview.
To read a preview’s output, open Logs and pick the pull request under Source.

What a preview runs with

  • Environment variables: the app’s own, secrets included.
  • Databases: none. A preview never gets the login of a database linked to the app, and a preview of an app that needs its database starts without one. A connection string you added yourself as an environment variable does reach previews.
  • Sleeping: previews sleep when idle. The first request after a quiet period takes a few seconds longer.
  • Expiry: a preview is deleted when its pull request closes, or 7 days after its last push.
When a spend cap set to pause stops your apps, their previews pause too.

Do it from your tools

$APP_ID is the app’s ID from List app services or raff apps list. $RAFF_API_KEY is an API key.

Next steps

Roll back a deploy

Go back if a merged change breaks the app.

Reconnect GitHub to Raff Apps

Fix pushes that stopped deploying.
Last modified on October 19, 2026