Neon. Reproducing a production bug usually means running the failing request against the data that caused it. A Neon branch gives you a copy of your production data in seconds, on its own compute, so you can investigate without affecting the live database.

Branch from now, or from when the bug happened

If the bad state is still in production, branch from the current data:

neon branches create --name repro-bug-1234
neon connection-string repro-bug-1234

Without --parent, the branch comes from your project's default branch (production for projects created in the Console, main for projects created with the CLI or API).

If the bad state only existed for a while, branch from a point in time inside your history window (6 hours on the Free plan, up to 7 days on the Launch plan, up to 30 days on the Scale plan):

neon branches create --name repro-pre-deploy \
  --parent 2026-04-25T09:00:00Z

Branch creation is copy-on-write. No data is copied when you create the branch, and it only diverges as you write. A branch of a 200 GB production database sees all 200 GB with no upfront storage cost (Branching).

Run the failing request against the branch

Point your local app or staging environment at the branch's connection string and replay the failing request. The branch has its own compute, so an expensive EXPLAIN ANALYZE or a forced full table scan won't slow down production.

When you're done, delete the branch:

neon branches delete repro-bug-1234

What it costs

Branches included per project: 10 on the Free plan and Launch plan, 25 on the Scale plan. On paid plans, extra branches cost $1.50/branch-month, metered hourly (about $0.002/hour) (Plans). Compute is the larger cost: two hours at 0.25 CU is 0.5 CU-hours, about $0.05 on the Launch plan. Add storage for whatever the branch writes.

tip

To keep PII out of dev environments, use schema-only branches (beta) or anonymize the branch's data.

How other providers compare

  • AWS RDS for Postgres: you restore to a point in time or from a snapshot into a new DB instance. That instance has its own storage and instance-hour bill until you delete it.
  • Aurora (Postgres): an Aurora clone is a new cluster that shares data pages with the source through copy-on-write, so it's the closest AWS match to a branch. A source can have up to 15 copy-on-write clones before new clones become full copies. To get a past state instead of current data, you restore to a point in time into a new cluster.
  • Supabase: preview branches start from migrations and seed.sql, not production data. Dashboard branches (public alpha) can copy production data with the PITR add-on, and paid plans can restore a backup to a new project (beta).

Vendor details verified on 2026-09-23 against the linked pages.

Reproduce bugs on a Neon branch

Free plan, 10 branches per project, no credit card.