Short answer
Neon adds Git-style branching to Postgres. Each branch is an instant, isolated copy of your database with its own connection string. You run migrations, seed data, or experimental queries on a branch without affecting main or anyone else's work.
Why branching beats a shared dev database
A single shared dev database creates queues. Two developers can't run conflicting migrations at the same time. Test data from one task corrupts the assumptions of another. Resets require coordination.
Neon branches solve this because creating one takes about a second and uses no extra storage at first. The branch shares blocks with its parent until it diverges. You're billed for the delta, not a full copy. See how branching works.
Creating a branch per feature
# Branch off main when you start a feature
neon branches create --name feature/add-search --parent main
# Get a connection string scoped to the branch
neon connection-string feature/add-search
# When the PR merges, delete the branch
neon branches delete feature/add-searchIn CI, you can wire this to your pipeline so every PR opens a branch and tears it down on merge. The GitHub Actions guide has working workflows.
Branch limits and costs
| Plan | Branches included | Extra branches |
|---|---|---|
| Free | 10 per project | Not available |
| Launch | 10 per project | $1.50/branch-month (~$0.002/hr) |
| Scale | 25 per project | $1.50/branch-month (~$0.002/hr) |
Extra branches are metered hourly, so a 2-hour branch costs about $0.004. See extra branches.
Auto-expire dev branches
Set a time to live when you create a branch (1 hour, 1 day, or 7 days). Neon deletes it automatically when the timer runs out, which prevents extra-branch charges from creeping up.
How other Postgres platforms handle per-branch isolation
| Platform | Per-branch isolation |
|---|---|
| Neon | Copy-on-write branch per Git branch in about a second, starting from production data. See branching. |
| Supabase | Preview branches create a separate Supabase environment per Git branch via the GitHub integration. Branches don't include production data; you populate them from a seed.sql. Each preview branch runs as a full Supabase project and bills as Branching Compute Hours. |
| AWS RDS for PostgreSQL | No native concept. Teams script pg_dump/restore or use snapshot-restore to create per-branch databases, which can take minutes to hours and bills as a separate full instance per branch. See RDS backups. |
The trade-off for Neon: branches share storage with the parent and divergent blocks bill as a small storage delta, so a dev branch is closer to free at idle. The trade-off for Supabase: no production data leaks into branches, but you also can't reproduce a production bug without seeding the branch yourself.

Try Git-style workflows on Postgres without copying data.








