SupaForge vs. Supabase CLI db diff
SupaForge covers RLS, auth, storage, cron, Edge Functions — not just schema.
What Supabase CLI db diff Does
The built-in supabase db diff command is a solid tool for detecting Postgres schema changes between your local development database and a remote Supabase project. It generates DDL statements for tables, columns, indexes, constraints, views, and functions.
For teams that work exclusively through local development and migrations, this is a natural fit. But in practice, many Supabase teams also use the dashboard to tweak settings — and that's where db diff stops.
What SupaForge Adds
SupaForge is purpose-built for comparing two live Supabase environments — staging vs. production, or any pair of projects. It runs every check, not just schema:
- Postgres schema & data — powered by DBDiff under the hood
- RLS policies — detects missing, changed, or extra policies
- Auth settings — OAuth providers, MFA, JWT config, CAPTCHA, 20+ settings
- Storage buckets — bucket metadata, policies, CORS
- Cron jobs — pg_cron schedule differences
- Reference data — seed tables, lookup data, feature flags
- Database webhooks — pg_net and supabase_functions.hooks
- Edge Functions — version mismatches across environments
- Realtime publications — Postgres publication config drift
- Vault secrets — missing or mismatched vault entries
- Extensions — Postgres extensions enabled in one env but not the other
| Feature | supabase db diff | SupaForge |
|---|---|---|
| Schema diffing | ✅ DDL output | ✅ Full DDL via DBDiff engine |
| RLS policies | ❌ | ✅ Dedicated check |
| Auth settings | ❌ | ✅ 20+ settings compared |
| Storage buckets | ❌ | ✅ Metadata + policies |
| Cron jobs | ❌ | ✅ pg_cron comparison |
| Reference data | ❌ | ✅ Row-level data diff |
| Webhooks | ❌ | ✅ pg_net hook diff |
| Edge Functions | ❌ | ✅ Version detection |
| Comparison mode | Local ↔ remote | Remote ↔ remote (any 2 envs) |
| Promote / apply | Manual migration apply | One-command promote with dry-run |
| Score / summary | No | Drift score 0–100 + severity breakdown |
Example: Scanning Beyond Schema
npm i -g @akalforge/supaforge{
"environments": {
"staging": {
"dbUrl": "postgresql://user:pass@db.STAGING_REF.supabase.co:5432/postgres",
"projectRef": "STAGING_REF",
"apiKey": "your-staging-service-role-key"
},
"production": {
"dbUrl": "postgresql://user:pass@db.PROD_REF.supabase.co:5432/postgres",
"projectRef": "PROD_REF",
"apiKey": "your-production-service-role-key"
}
},
"source": "staging",
"target": "production"
}supaforge scansupaforge scan --check rlssupaforge scan --check authsupaforge scan --check storageWhen to Use supabase db diff
If your workflow is entirely local-first — you never touch the dashboard, and all changes go through migration files — then supabase db diff remains an excellent choice for schema work. SupaForge complements it by catching everything else.
Summary
supabase db diff covers Postgres schema between local and remote. SupaForge covers every check between any two live environments — making it the more comprehensive option for teams that use the Supabase dashboard alongside code.