Short answer
Use Supabase Branching: a persistent branch for staging, or a preview branch for each pull request. A branch connected to GitHub builds its database structure from the migrations in your repository; every branch starts with no data by default and gets placeholder sign-in secrets. So get your schema into migrations first, then add a seed file and branch secrets. Watch the cost: branches bill by the hour and aren’t covered by the Spend Cap.
Set it up in this order
01
A persistent branch for staging
“recommended for environments like staging, QA, or development” Supabase, Branching
Persistent branches stay until you delete them. Preview branches are deleted when their pull request is merged or closed, which suits testing one change. For staging, use a persistent branch.
02
Get your schema into migrations first
“The database schema isn't cloned.” Supabase, Branching
A branch connected to GitHub builds its database from the migrations in your repository. If your tables were made by clicking in the dashboard, there’s usually nothing to build from yet: turn the current schema into a migration file (Supabase’s CLI can do this) and commit it.
03
Seed test data; never copy production
“By default, new branches do not start with any data or storage objects from your base project.” Supabase, Branching
New branches start empty. Add a seed file with test accounts and sample rows, so staging doesn’t need real customers’ data. For a persistent staging branch, seeding has to be switched on in your Supabase config file.
04
Set branch secrets, or sign-in breaks
“Auth secrets, such as OAuth provider secrets and SMTP passwords, get placeholder values instead.” Supabase, Branching
On a branch, sign-in provider secrets and SMTP passwords are placeholders. Set the real values as branch secrets, or social sign-in and auth emails fail on staging.
05
Know what it costs
“Branches are not covered by the Spend Cap.” Supabase, Branching usage
There’s no fixed fee for a preview branch: you pay for the compute it uses, by the hour, and that usage counts toward your plan’s quota. Branches sit outside the Spend Cap, so delete the ones you don’t need.
06
The other option: a second project
Some teams use a second Supabase project as staging instead. It’s easy to picture, but you keep its schema in step yourself, through the same migrations.
Checked against the vendor’s docs on : Supabase docs: Branching; Supabase docs: Manage branching usage.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.See scope and start
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
Related: Supabase email rate limit exceeded · Supabase project paused · Supabase RLS fixes · Supabase security review before launch