Infrastructure

Supabase vs Firebase: Open Source Wins on Price, Firebase Wins on Mobile SDK

May 2026 · 10 min read

Verdict up front: Supabase wins on price, SQL ergonomics, and avoiding vendor lock-in. Firebase wins on mobile SDK polish, offline-first apps, and push notifications. For a web-heavy SaaS: Supabase. For a mobile-heavy consumer app: Firebase — but plan for migration cost when you outgrow the free tier.

The pricing reality at three scales

Side project (1k MAU, 500MB data, 5GB bandwidth/month):

  • Supabase Free: €0
  • Firebase Spark: €0

Early startup (10k MAU, 5GB data, 50GB bandwidth):

  • Supabase Pro: €25/month flat
  • Firebase Blaze: ~€40/month (5GB Firestore = €0.90, 50GB bandwidth = €5.40, 10k MAU auth = €0.05, document reads at 1M/day = €31)

Growth stage (100k MAU, 50GB data, 500GB bandwidth):

  • Supabase Team: €599/month flat (250GB database, 1M MAU)
  • Firebase Blaze: ~€400-1,200/month depending on read patterns (Firestore reads are €0.06 per 100k — easy to hit €500+/month if you have chatty clients)

The Firebase pricing surprise: document reads. A poorly-designed Firestore listener subscribed to a 1,000-document collection costs about €1.80/day per active user. At 10k MAU with 10% active daily, that's €5,400/month just in reads. We've seen this exact bill.

Row-level security: the killer Supabase feature

Supabase exposes Postgres row-level security (RLS) policies as the auth model. You write SQL policies like auth.uid() = user_id and the database enforces them. The client SDK never touches a backend — it talks Postgres directly, with RLS as the firewall.

Firestore has security rules, which are similar in concept but use a custom DSL. Rules are checked per document read/write. They work fine but are harder to test (no SQL EXPLAIN equivalent) and harder to compose across multiple collections (no JOINs in rules).

For a typical SaaS with org-based isolation (user belongs to org, can only see org's data), Supabase RLS is one policy:

CREATE POLICY "org_isolation" ON projects
FOR ALL TO authenticated
USING (org_id = (auth.jwt() ->> 'org_id')::uuid);

Firestore equivalent requires either denormalising org_id into every document or running a Cloud Function for every query.

Offline sync

Firestore wins. Out of the box, the iOS and Android SDKs cache reads locally, queue writes for replay, and resolve conflicts via last-write-wins. For mobile apps where users go on planes, subways, or rural areas — this is critical and hard to replicate.

Supabase has some offline support via PostgREST's caching and the supabase-js client, but you have to wire it yourself. There is no equivalent to Firestore's automatic offline mode. We've shipped a Supabase iOS app that runs offline-first, but it took 3 weeks of caching work that Firestore would have given us free.

Auth providers

Both support email/password, magic link, OAuth (Google, GitHub, Apple, Facebook, Twitter), phone OTP, anonymous. Firebase supports more out-of-the-box: Microsoft, Yahoo, Game Center, Play Games. Supabase supports more open standards: SAML SSO (Pro tier), generic OAuth, LDAP via custom integrations.

For B2C apps: Firebase has more provider polish. For B2B with SSO: Supabase Pro at €25/month with SAML beats Firebase Auth's pricing (Identity Platform with SAML is €0.06/MAU above 50 users — expensive at scale).

Realtime

Both support real-time subscriptions. Supabase Realtime uses Postgres logical replication, broadcasts INSERT/UPDATE/DELETE events. Limits: 200 concurrent connections on free tier, 500 on Pro. Firestore listeners scale to 1M+ concurrent connections.

If you need 10k+ concurrent live listeners (a chat app, live auction, sports scores), Firestore is built for it. Supabase Realtime can do thousands but past that you're better off self-hosting Realtime or using a dedicated pubsub.

Side-by-side

FeatureSupabaseFirebase
Free tier limits500MB DB, 50k MAU, 1GB storage1GB Firestore, 10k auth, 5GB storage
Pro / paid tier base€25/month flatPay-as-you-go (no flat tier)
DatabasePostgres (full SQL, JSONB)Firestore (NoSQL document)
Auth: providers20+ including SAML15+ including Game Center
Realtime concurrency cap500 (Pro), 10k (Team)Effectively unlimited
Offline sync (mobile)ManualAutomatic
Push notificationsNone nativeFCM built in
Storage (files)S3-compatibleCloud Storage (GCS-backed)
Functions runtimeDeno Edge FunctionsNode Cloud Functions (2nd gen)
Cold start~100ms (Deno edge)~1-3s (Cloud Functions)
Self-hostableYes (open source)No
Vendor lock-inLow (it's just Postgres)High (Firestore is proprietary)
SAML SSOPro tier (€25/month)Identity Platform (€0.06/MAU above 50)
ComplianceSOC 2, HIPAA (Team tier)SOC 2, HIPAA (BAA available)

When to choose Supabase

  • You know SQL or want to learn it (Postgres is the lingua franca)
  • Avoiding vendor lock-in matters
  • You want predictable flat pricing
  • Web-first product (SaaS dashboard, internal tools, Next.js app)
  • RLS-based multi-tenancy is your security model
  • You might self-host one day

When to choose Firebase

  • Mobile-first product where offline sync matters
  • Push notifications are core to the app
  • You need to scale to 1M+ concurrent listeners
  • Team is mobile-engineer-heavy (more iOS/Android SDK experience than backend)
  • You're already in the Google ecosystem (BigQuery, Vertex AI)

Migration: Firebase → Supabase

Typical migration for a 50k-user app with 5 Firestore collections takes 3-6 weeks. Steps:

  1. Map Firestore collections to Postgres tables (denormalise carefully — Firestore is doc-based, Postgres is relational)
  2. Export Firestore via the GCS export tool
  3. Convert NoSQL docs to SQL rows (Python or Node script)
  4. Migrate auth (Firebase Auth users export → Supabase import via admin API)
  5. Rewrite Cloud Functions → Edge Functions (Deno) or keep them on GCP and just point at the new DB
  6. Rewrite security rules → RLS policies (the hardest part — different mental model)

The riskiest piece: rebuilding offline sync if your mobile app depended on it. Plan for a feature freeze on offline edge cases during migration.

Migrating from Firebase to Supabase?

We've moved 6 production apps from Firestore to Supabase. We know which Firestore patterns translate cleanly and which need a rewrite.

Book a discovery call

Related Posts

PostgreSQL vs MySQLVercel vs Cloudflare PagesSaaS Infrastructure Cost Guide
← All blog posts

Picking a backend for your next project?

Free 20-minute call to map your features against Supabase, Firebase, and the obvious-but-overlooked option: a plain Postgres droplet for €12/month if your scale is small.

Book a discovery call