Switch from Supabase
Same Postgres, same supabase-js, stronger guarantees.
Import your schema, row-level security, users with their passwords, data and storage in one command. Your app keeps using supabase-js: change the URL and key, and from() and rpc() calls work as before.
What moves
Two commands
- 1
Dry run
Checks the connection, extensions and policies, and writes nothing.
sov import supabase \ --db-url 'postgresql://postgres:PASSWORD@db.REF.supabase.co:5432/postgres' \ --supabase-url https://REF.supabase.co --service-key "$SUPABASE_SERVICE_ROLE_KEY" --dry-run - 2
Import
Schema, then users, then data, then storage. Point supabase-js at your Sovaria URL and anon key.
sov import supabase --db-url '...' \ --supabase-url https://REF.supabase.co --service-key "$SUPABASE_SERVICE_ROLE_KEY"
Everything has a place
Questions
How do my policies change?
Sovaria databases have no anon or authenticated role. A policy TO authenticated becomes TO public with auth.uid() IS NOT NULL added; TO anon policies are reported for you to check.
Do I have to rewrite my app?
No. Change the URL and anon key; supabase-js from() and rpc() calls go to the same REST API shape.
Can I move part of it first?
Yes. --only schema,auth runs parts on their own, and every step can be dry-run first.
Start building on Sovaria
A free project takes a minute. Your data stays behind rules from the first request.