Convex vs Supabase

Choose Convex for a realtime-first, all-TypeScript stack that ships faster; choose Supabase for portable Postgres, SQL and extensions that are easier to leave.

Editorial judgement last reviewed

Should I build on Convex or Supabase?

  • These are not the same product wearing different logos.
  • SupabaseSupabase logo is PostgresPostgreSQL logo with services bolted around it: auth, storage, edge functions, realtime, dashboard.
  • ConvexConvex logo is a reactive database where queries are TypeScript functions and every query is a live subscription.
  • One is infrastructure you rent; the other is a programming model you adopt.
  • On SupabaseSupabase logo you write SQL and own a PostgresPostgreSQL logo database.
  • On ConvexConvex logo you write query functions and own code that only runs on ConvexConvex logo.
  • Realtime, collaborative or agent-driven apps by small TypeScript teams: ConvexConvex logo is faster, fewer bugs.
  • No cache invalidation, no websocket layer, no hand-reconciled optimistic updates, no duplicated schema.
  • Transactions are real: functions run serialisably, a three-table query sees a consistent snapshot.
  • Data likely to outlive the app, analytics, reporting, an acquisition-shaped future: SupabaseSupabase logo is safer.
  • PostgresPostgreSQL logo is the most portable thing here; every BI tool, ORM and LLM speaks it.
  • Move the database to Neon, RDS, Hetzner or your own box in an afternoon.
  • Our score weights portability, so the two land closer than the marketing suggests.
  • Ignore the composite if your situation is lopsided: exit cost is huge at Series A, nothing at a weekend project.

Which one should you pick?

Choose Convex if…

  • Your UI is live: dashboards, chat, presence, collaborative editing, agent status.
  • You want subscriptions for free, without writing the invalidation logic that causes bugs.
  • Small, all-TypeScript team wanting end-to-end inference from schema to React hook.
  • No ORM layer to argue about.
  • You want crons, file storage, vector and full-text search without wiring four services.
  • You're building agent tooling: transactional functions plus scheduling show long jobs live.
  • You accept leaving means rewriting your data layer, trading exit cost for velocity.

Choose Supabase if…

  • You know SQL and want to keep it: window functions, CTEs, materialised views, EXPLAIN ANALYZE.
  • You need PostgresPostgreSQL logo extensions: PostGIS, pgvector at scale, pg_cron, TimescaleDB workloads.
  • Portability is a requirement: compliance, procurement and acquirers ask where data lives.
  • You want row-level security enforced in the database, and you'll write RLS policies carefully.
  • Your stack isn't only TypeScript: SupabaseSupabase logo has Python, Dart, Swift and Kotlin clients.
  • You want self-hosting on your own hardware as a fallback.

Reactivity: subscriptions by default vs subscriptions you configure

  • The biggest technical difference, worth stating precisely.
  • A ConvexConvex logo query is a TypeScript function that reads the database.
  • The runtime records which documents it touched and re-runs on any change.
  • You never say "invalidate this"; your React hook holds a correct live value.
  • Consistency is per-query and transactional: a three-table join can't return a half-updated view.
  • SupabaseSupabase logo realtime is a different contract: it streams PostgresPostgreSQL logo logical replication over a websocket.
  • You subscribe to a table with an optional filter and receive INSERT/UPDATE/DELETE events.
  • Powerful, but row-level, not query-level.
  • For derived values, counts, joins or aggregates, you translate "row changed" into "recompute this".
  • Most teams pair it with TanStack Query and hand-write invalidation rules.
  • For simple lists, both work fine.
  • For several interdependent derived values, ConvexConvex logo removes work SupabaseSupabase logo makes you do.
  • No live surfaces at all: this section doesn't matter, decide on other axes.

Exit cost: the field nobody publishes

  • Exit cost, our killer field, scores how much application code a move requires.
  • It's the real question behind "should I use ConvexConvex logo", and no vendor answers it.
  • Leaving SupabaseSupabase logo is close to a data migration.
  • Tables are PostgresPostgreSQL logo tables; pg_dump produces a file that restores anywhere.
  • You leave behind auth users and hashed credentials, storage buckets, RLS policies and Edge Functions.
  • Real work, days to a couple of weeks, but the core asset moves intact.
  • Leaving ConvexConvex logo is a rewrite of the data layer.
  • Documents export cleanly; ConvexConvex logo doesn't hold your data hostage.
  • But queries, mutations, reactivity and crons are all ConvexConvex logo-specific and not portable.
  • You rewrite to PostgresPostgreSQL logo plus an ORM plus a realtime story plus a job runner.
  • Exit cost is a real liability, and frequently the right trade.
  • Shipping six months earlier buys runway to afford a later migration.
  • Just make the trade deliberately.

Pricing shape, and where each one surprises you

  • SupabaseSupabase logo prices like infrastructure: flat platform fee per project, compute by instance, plus storage and egress.
  • Predictable and easy to model on a spreadsheet.
  • Surprises: paused free projects need restoring; compute is the line item that grows; media bandwidth adds up.
  • ConvexConvex logo prices like a platform: function calls, action compute, database bandwidth and storage.
  • Generous free tier that carries a real side project comfortably.
  • The surprise is the reactive model's own cost shape.
  • A query fanning out to many subscribers re-runs on every write to any document it read.
  • A poorly scoped query over a hot table can multiply your function-call bill.
  • Manageable with narrow scoping, pagination and avoiding giant subscribed collections, but a discipline to learn.
  • Neither is expensive at small scale.
  • Both beat a two-week detour building what they give you.
  • Model your own numbers from the category table, not either landing page.

Auth, storage and the rest of the platform

  • SupabaseSupabase logo auth is the more complete product.
  • Email/password, magic links, many OAuth providers, phone OTP, MFA.
  • Critically, it issues a JWT that PostgresPostgreSQL logo itself reads for row-level security.
  • Elegant, but RLS is easy to get subtly wrong, and wrong means a data leak.
  • Test policies deliberately.
  • ConvexConvex logo leans on external identity: first-class Clerk and Auth0, plus its own auth library.
  • Authorisation lives in your functions as ordinary TypeScript.
  • Easier to reason about and test than policy DSLs.
  • The cost: remembering the check in every function is your job.
  • Both include file storage with signed URLs, vector search and full-text search.
  • Full-text search is fine in-app, not a Meilisearch or Typesense replacement.
  • SupabaseSupabase logo's dashboard is the better data browser.
  • ConvexConvex logo's dashboard is the better function-observability tool, with live logs and history.
  • For a third option, the hub covers InstantDBInstantDB logo, Triplit, ElectricSQLElectricSQL logo, PocketBasePocketBase logo and AppwriteAppwrite logo.

Frequently asked questions

Is Convex just Firebase with types?

  • No. FirebaseFirebase logo uses document-level listeners with no transactional joins.
  • ConvexConvex logo runs your query as a serialisable transaction, re-running when anything it read changes.
  • ConvexConvex logo also gives real ACID mutations across documents, which Firestore never has.

Can I use Convex and Supabase together?

  • Yes, some teams do: SupabaseSupabase logo PostgresPostgreSQL logo for reporting and analytics, ConvexConvex logo for the live surface.
  • It's more moving parts and a sync problem you now own.
  • Only do it with a concrete reason; most teams should pick one.

Which is better for AI agents?

  • ConvexConvex logo, in most cases.
  • Agents produce long-running jobs with state a UI must watch.
  • ConvexConvex logo's scheduled functions plus automatic subscriptions cover that without extra infrastructure.
  • SupabaseSupabase logo can do it, but you'll add a queue, a worker and status streaming.

Does Supabase lock me in at all?

  • Less than most, but not zero.
  • The database is plain PostgresPostgreSQL logo and moves cleanly.
  • Auth, Storage, Edge Functions and RLS style are the sticky parts.
  • Re-homing auth users is fiddliest: password hashes and provider identities.

What about cost at scale?

  • SupabaseSupabase logo becomes a familiar, predictable compute-sizing exercise.
  • ConvexConvex logo becomes a query-shape exercise: costs scale with function calls and bandwidth.
  • A broadly scoped subscribed query over a hot table is what bites.
  • Both are cheap below serious traffic.

Which has the better local development story?

  • SupabaseSupabase logo, narrowly: the CLI runs the whole stack in Docker with migrations in your repo.
  • That suits teams wanting deterministic CI.
  • ConvexConvex logo's dev deployment plus live push is a faster inner loop, but it's cloud, not local.