Supabase: what each plan actually gives you.
Supabase backs up Pro, Team, and Enterprise projects daily: Pro keeps 7 days, Team
keeps 14, Enterprise up to 30. The free plan gets none, and Supabase's own
documentation says free projects should export regularly with the CLI and keep
off-site copies. Free projects are also paused after a week of inactivity. If your
vibe-coded app runs on free-tier Supabase, and most Lovable and Bolt builds start
there, your current backup count is zero.
Point-in-time recovery is the upgrade: instead of restoring to last night, you
restore to any second you choose. It is an add-on for paid plans, needs at least
the Small compute size, replaces the daily-backup mechanism, and starts around
USD 100 per month for a 7-day window. For most early apps, daily backups plus an
off-site dump are enough; buy PITR when an hour of lost writes would cost real
money.
Three gotchas worth knowing before the bad day: database backups cover the
database only, so files in Storage buckets are not included (only their metadata);
custom-role passwords are not stored and need resetting after a restore; and
deleting a project permanently deletes its backups with it.
The off-site copy costs nothing but a cron job. With the Supabase CLI installed,
these three commands dump roles, schema, and data (the official backup sequence):
supabase db dump --db-url "$SUPABASE_DB_URL" -f roles.sql --role-only
supabase db dump --db-url "$SUPABASE_DB_URL" -f schema.sql
supabase db dump --db-url "$SUPABASE_DB_URL" -f data.sql --use-copy --data-only
Run them nightly from a GitHub Action or any machine you control, and ship the
files somewhere that is not Supabase: object storage, an encrypted disk, anywhere
with a different login. Restoring into a fresh project is one command:
psql \
--single-transaction \
--variable ON_ERROR_STOP=1 \
--file roles.sql \
--file schema.sql \
--command 'SET session_replication_role = replica' \
--file data.sql \
--dbname "$NEW_PROJECT_DB_URL"
Note what that gives you: a rehearsable, non-destructive restore. The copy lands in
a new project, production is never touched, and you can prove the backup works
without betting anything on it.