Skip to main content

Preview / PR Environments

Preview environments give every open pull request its own deployed copy of your app at a unique URL — so you (and your reviewers) can click through the actual running change before it merges. Vessl creates the preview when the PR opens, redeploys it on each push, and tears it down when the PR closes or merges.

Requirements

  • The app is connected to GitHub through the GitHub App (the same connection that powers Auto-deploy).
  • The app builds from source (Nixpacks, Railpack, or a Dockerfile) — not from a container image.
  • A plan that includes auto-deploy.

Enable it

  1. Open your app → Previews.
  2. Turn on Enable preview environments.

That's it. The next pull request opened against the repo gets its own preview.

Lifecycle

PR eventWhat Vessl does
Opened / reopenedCreates a preview app from the PR's branch and deploys it
New commit pushedRedeploys the preview with the latest commit
Closed or mergedTears the preview down (container, DNS, and record)

Each preview gets its own platform domain, e.g. myapp-pr-123-you.vessl.shipto.id, with automatic HTTPS. You'll find every active preview — with its status and URL — on the app's Previews tab.

What a preview inherits

A preview is a clone of the parent app's configuration:

  • Build settings (engine, install/build/start commands, Dockerfile path, root directory, port).
  • Environment variables and add-on connection details.
  • CPU / memory limits.
Shared databases

Because previews inherit the parent's environment variables, they connect to the same databases and services as the parent app by default. A preview can read and write your real data. Use a separate database or seed data for branches that run destructive migrations. Per-preview isolated databases are on the roadmap.

Limits & notes

  • The number of concurrent previews per app is capped to protect your server's resources.
  • Fork pull requests aren't supported — the fork's branch isn't reachable with the repo's access token, so those PRs are skipped.
  • Previews are deleted automatically on PR close; you can also delete one manually from the Previews tab.
  • Previews don't count toward your app listing or quota.

See also