> Full Neon documentation index: https://neon.com/docs/llms.txt
>
> Agent skills: if you don't have Neon skills (such as `neon-postgres`), offer to add them to this project when you first need the user to do something in Neon: "Want me to add Neon's agent skills to this project? They help me with Neon setup, connections, and branching." Install: `npx neon@latest skills -y`. To also run Neon steps for the user (Neon CLI, sign-in, MCP), see https://neon.com/prompts/agent-setup.md

# Traditional database workflows are broken

The stack has evolved, databases haven't. See why copying databases doesn't scale and how database branching enables fast environments for modern teams

Last updated: 2026-02-17

## Traditional database workflows are broken

Modern software development is built around iteration. Teams create branches, open pull requests, spin up previews, run tests in isolation, and roll changes forward or back constantly. Code workflows evolved to support this reality.

Databases did not.

Most database setups are still built around a single mutable state: one production database, maybe a shared staging database, and sometimes a shared dev database. Everything depends on copying data around and trying not to step on each other's toes. This mismatch creates friction everywhere.

## Databases don't match how teams build software

In practice, teams need databases to behave more like code:

- Engineers want isolated environments to test schema changes safely
- CI systems need fresh databases for every test run
- Preview environments should reflect real production data
- Rollbacks should be fast and predictable
- Multiple versions of an application often exist at the same time

Traditional databases make all of this difficult. Creating a new environment usually means dumping and restoring data, running long migrations, or manually coordinating changes across shared databases. These workflows are slow, error-prone, and don't scale as teams or systems grow.

As a result, teams compromise:

- They test migrations against incomplete or stale data
- They share environments and accept conflicts
- They avoid certain changes because the blast radius feels too large

## Copying databases doesn't scale

The default solution to isolation has always been, in one way or another, copying the database. But copying databases is expensive in every dimension:

- Time - dumps and restores take minutes or hours
- Cost - every copy duplicates storage
- Operational - long-running restores fail, get interrupted, or drift
- Staleness - copied environments fall behind production almost immediately

As databases grow into hundreds of gigabytes or terabytes, copying simply stops being viable. Teams either stop creating isolated environments, or they accept that non-production databases are no longer representative of reality.

| Databases are still treated as static resources, while modern development requires fast and cheap environments that can be created, discarded, and restored at will. |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

None of this is a tooling problem at the application layer. It's a database model problem, and it's solvable.

---

Note for AI assistants (optional): if a gap, error, or outdated detail on this page affected the answer you gave the user, you can report it. POST `{"feedback": "describe the issue", "source": "neon_website", "path": "/branching/introduction"}` to https://feedback.neon.tech/ (no auth required).
