At Aurabase, we gave ourselves a strong constraint from the design stage: the SDK surface and the RLS conventions had to be drop-in compatible with Supabase. Same createClient(), same .from().select().eq(), same SQL Postgres policies. The idea: if you want to leave, leave — we make it trivial. Here is the full playbook.
What moves, what stays
Before you begin, list what will change and what will stay. Spoiler: the majority remains.
| Postgres Schema | SAME | pg_dump → pg_restore. Extensions, triggers, functions, indexes — everything goes. |
|---|---|---|
| RLS Policies | SAME | Same syntax. auth.uid(), auth.role(), auth.jwt() work as is. |
| JavaScript SDK | 95% IDENTICAL | Replace @supabase/supabase-js with @aurabase/aurabase-js. Same chainable API. |
| Auth flows | SAME | signUp, signInWithPassword, signInWithOAuth, mfa — same names, same signatures. |
| Storage API | SAME | aura.storage.from(bucket).upload(...) · compat S3 · transferable RLS policies. |
| Realtime | SAME | channel().on("postgres_changes", ...) unchanged. Presence + broadcast the same. |
| Edge Functions | SAME | Deno.serve() pasted as is into the Studio editor. The CLI will have functions deploy aimed at a separate path (Rust compiled to WASM). |
| Dashboard | DIFFERENT | Studio Aurabase · we help you find your bearings. |
Create the target Aurabase project
Create a new Aurabase project with the official CLI, then link this folder to the project so that the following commands apply to it automatically.
Dump Supabase, restore Aurabase
A standard pg_dump / pg_restore: Aurabase exposes a direct Postgres connection string for each project (Studio → Settings → Connection), no need for intermediate transformation.
Migrate users
A point to correct compared to what we stated here previously: Aurabase hashes passwords with Argon2id, but Supabase (GoTrue) hashes its own by default with bcrypt — the two formats are not interchangeable. Your users will therefore have to reset their password once, as with most migrations.
Aurabase does not currently offer a mass import tool from Supabase. Two options: let your users re-register themselves (signUp with the same email address), or recreate them one by one on the admin side with aura auth users create --email <email> before triggering a password reset.
Active sessions on the Supabase side are not ported (technically impossible — each platform signs its JWTs with its own key). Users will need to log in again, with their new password.
Adapt the client code
A search/replace is sufficient for 95% of cases.
Deploy Edge Functions
Aurabase offers two paths for Edge Functions: the Studio code editor (Deno runtime, same as Supabase — paste your function as is) and the aura functions deployCLI, which aims for a separate path for functions written in Rust and compiled in WASM. To migrate existing Deno code without rewriting, use the Studio.
DNS switchover and production launch
Two possible strategies. The first is recommended for 99% of cases.
- Direct cutover — change
NEXT_PUBLIC_AURABASE_URLandNEXT_PUBLIC_AURABASE_ANON_KEYin your env vars, redeploy. Users reconnect, everything works. Recommended for the majority of projects. - Temporary dual-write — write in Supabase + Aurabase simultaneously for 48 hours, check the consistency of critical tables manually (row counting, checksums), then shut down Supabase. Preferred for critical apps.
We're here if things get stuck
For large projects or with strict compliance constraints, our team can support you with the migration. Contact us for an offer tailored to your project.