Skip to main content

Migration Guide

Migrate from Firebase or Supabase to EdgeBase.

From Firebase

Key Differences

FeatureFirebaseEdgeBase
DatabaseNoSQL (document)SQL (SQLite)
SchemaSchemalessSchema-defined
QueriesLimited composabilityFull SQL, JOINs
Auth pricing$275/100K MAUFree
Self-hosting✅ 3 modes

Mapping Concepts

FirebaseEdgeBase
db.table('posts').add(data)admin.db('shared').table('posts').insert(data)
doc.get()admin.db('shared').table('posts').doc(id).get()
query.where('field', '==', value)admin.db('shared').table('posts').where('field', '==', value)
onSnapshot()admin.db('shared').table('posts').onSnapshot()
firebase.auth().signInWithEmailAndPassword()client.auth.signIn({ email, password })
Firestore RulesEdgeBase Access Rules

Migration Steps

  1. Schema: Define your schema in edgebase.config.ts
  2. Auth: OAuth providers config is similar; update redirect URLs
  3. Data: Export Firestore → JSON → import via admin.table().insertMany()
  4. Rules: Convert Firestore rules to EdgeBase rule expressions
  5. SDK: Replace firebase imports with @edgebase/web

From Supabase

Key Differences

FeatureSupabaseEdgeBase
DatabasePostgreSQLSQLite (per-DO)
ArchitectureCentralizedEdge-distributed
Cold start~500ms~0ms
Pricing$25/month base$5/month base

Mapping Concepts

SupabaseEdgeBase
supabase.from('posts').select()admin.db('shared').table('posts').getList()
supabase.from('posts').insert(data)admin.db('shared').table('posts').insert(data)
.eq('status', 'published').where('status', '==', 'published')
RLS PoliciesAccess Rules
Edge FunctionsApp Functions

Migration Steps

  1. Schema: Export PostgreSQL schema → convert to EdgeBase config
  2. Data: pg_dump → JSON → insertMany() import
  3. Auth: Similar OAuth setup; update provider configs
  4. RLS → Rules: Convert Row Level Security to EdgeBase rule expressions
  5. Functions: Port Edge Functions to App Functions