Copy-on-write
Each preview branch starts from production-shaped data without copying it.
Each Vercel or Netlify preview connects to its own Postgres branch with production-shaped data. When the preview goes away, so does the branch.
Each preview branch starts from production-shaped data without copying it.
Every preview deployment connects to its own Postgres.
The branch is deleted when the pull request closes.
Reviewers judge a change by what they see in the preview. If the data behind it is shared or fake, they are judging the wrong thing. Seed data never has the shape, the volume or the edge cases of the rows your users actually create.
A schema change in one preview breaks every other preview on the same database.
Data created while reviewing one change shows up in the next review.
Staging drifts, and nobody can say which schema it is on today.
A developer or a coding agent opens a pull request.
The Xata GitHub App creates a branch from your root branch, named after the Git branch. It copies no data, so it is ready in about three seconds.
Vercel and Netlify expose the Git branch name at build time. A short build step turns it into that branch’s connection string and passes it to the app as DATABASE_URL.
When the pull request merges or closes, the GitHub App deletes the branch.
Xata separates Postgres compute from copy-on-write storage.
Connect the Xata MCP server or install the CLI, and your coding agent can create branches, apply migrations and read schema without touching production.
Turn on scale to zero for child branches and a preview nobody opens releases its compute until the next connection.
Learn moreIf production holds personal data, copy it into Xata with masking rules applied and branch previews from the masked copy.
Learn moreProduction-shaped data behind every Vercel and Netlify preview, deleted when the preview goes away.