Supported Environments

Reshot runs the same capture in two places, from the same reshot.config.json and the same reshot run. What changes is the target URL and where credentials come from.

  • Locally, against a production-like server on your machine. This is the fastest way to author a scenario and see a diff before you push.
  • In CI, against the build or preview deployment for a pull request. This is the path that produces the reshot/visual-review status check and the PR summary.

Local path

  1. Run reshot setup
  2. Start your target app with a production-like local server
  3. Run reshot run
  4. Run reshot publish when the capture looks right

CI path

  1. Build and start the app in the workflow, or point the run at the preview deployment
  2. Provide RESHOT_API_KEY and any capture credentials as CI secrets
  3. Run reshot run --headless
  4. Run reshot publish with the head commit SHA and the pull-request URL

See Automation for the workflow template and PR Checks & Merge Gate for the status check.

Supported targets

  • next build && next start, or any equivalent production-like server — on your machine or on the CI runner
  • a preview deployment that renders the same code path you intend to ship
  • certified targets that declare a deterministic readiness contract and pass reshot doctor target / reshot verify publish

Not supported for capture reliability

  • next dev
  • arbitrary hot-reload development servers with non-production rendering behavior
  • targets that rely only on sleeps instead of app-owned readiness markers

Why production-like, in either place

It removes the three main sources of flaky captures:

  • dev-only runtime errors
  • hydration or hot-reload instability
  • route timing that differs from the shipped app

You can still experiment in development mode while authoring scenarios, but a capture you intend to publish should run against a production-like build.

For many Next.js apps, this is the right pattern locally:

Terminal
npm run build
npm run start
reshot run
reshot publish

And in pull-request CI:

Terminal
npm run build
npm run start &
npx reshot run --headless
npx reshot publish

If your app requires a capture-safe flag or a different production start command, declare that in reshot.config.json so reshot setup can show the recommended command directly.