Move from Supabase to Terrabase in minutes
Terrabase speaks the same client protocol as Supabase. Point the SDK at your Terrabase project and your existing code keeps working — no rewrite, no new mental model.
1. Swap the URL and keys
Create a Terrabase project, copy its URL and anon key from the dashboard, and change two lines in your environment. That's the migration.
# .env — the only lines that change-NEXT_PUBLIC_SUPABASE_URL=https://xyzcompany.supabase.co+NEXT_PUBLIC_SUPABASE_URL=https://xyzcompany.terrabase.dev-NEXT_PUBLIC_SUPABASE_ANON_KEY=<old-supabase-anon-key>+NEXT_PUBLIC_SUPABASE_ANON_KEY=<new-terrabase-anon-key>2. Your app code is untouched
The client reads its URL and key from the environment, so the code that creates and uses the client doesn't change at all.
import { createClient } from '@supabase/supabase-js' export const supabase = createClient(process.env.NEXT_PUBLIC_SUPABASE_URL!,process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,) // same import, same call, same types3. What's compatible
Every core primitive maps one-to-one. If you use the official Supabase client libraries, you're already using the Terrabase API.
| Capability | Status | Notes |
|---|---|---|
| Postgres queries | Drop-in | Same PostgREST-style API — .from().select().insert().update(). |
| Auth | Drop-in | Email/password and JWT sessions via the same auth client. |
| Storage | Drop-in | Upload, download, and signed URLs through the storage client. |
| Realtime | Drop-in | Channel subscriptions to Postgres changes over websockets. |
| REST APIs | Drop-in | Auto-generated REST endpoints for every table you expose. |
| Row-Level Security | Drop-in | Policies travel with your schema — bring them as SQL. |
Gotchas worth knowing
Re-register OAuth redirect URLs
Update callback URLs with each auth provider to point at your Terrabase domain, or logins will bounce.
Hunt down hardcoded project refs
Search beyond your .env for any *.supabase.co strings — webhooks, CORS allowlists, and mobile builds included.
Bring your schema and policies
Tables, RLS policies, and functions move as SQL via pg_dump. Data isn't copied automatically — you control the cutover.
Verify exotic extensions
Common Postgres extensions are available out of the box. Confirm anything unusual before you switch production over.
Terrabase isn't open for signups yet — join the waitlist and we'll send your project URL and keys the moment invites go out.
Join the waitlist