Convex vs the alternatives

Convex is the fastest of these to ship on and among the hardest to leave: the query API and function runtime are proprietary, so exiting means rewriting every call site. Supabase, Nhost and plain Neon keep your data and your queries in ordinary Postgres. Zero and ElectricSQL add sync on top of a Postgres you already own.

Last verified
2026-07-20 (3d ago)
Source confidence
42%
Re-verified
every 30 days
Tools
11
Fields
26
11 tools · verified 3d ago
SupabaseManaged Postgres with auth, storage, realtime and edge functions around it.74.6

Features

Reactivity
push
TS inference
Partial
Transactions
mvcc
Local-first sync
No
Optimistic writes
No
Cron & scheduling
Yes
File storage
Yes
Vector search
Yes
Full-text search
Yes
Auth
built-in
Hard limits
Postgres limits apply: about 1 GB per field, no vendor row cap. The real ceilings are connection count and the compute tier you pay for.
Cold start (ms)
250 ms
Function timeout (ms)
2.5 min

Portability & exit

Exit cost
2
Self-hostable
Yes
Bulk export
Yes
Raw SQL
Yes
Schema changes
sql-migrations

Agentic

MCP server
Yes
Agent fit
4

Pricing

Pricing model
flat per org + compute + usage
Entry price (/mo)
$25 /mo
Egress metered
Yes

Traction

GitHub stars
90,000
Backing
venture-backed

Positioning

Positioning
The Postgres development platform — the open-source Firebase alternative.
NhostPostgres plus Hasura GraphQL, auth, storage and serverless functions.72.0

Features

Reactivity
push
TS inference
Partial
Transactions
mvcc
Local-first sync
No
Optimistic writes
No
Cron & scheduling
Yes
File storage
Yes
Vector search
Yes
Full-text search
Yes
Auth
built-in
Hard limits
Postgres limits, plus Hasura's own query-depth and rate limiting on the managed tiers.
Cold start (ms)
Function timeout (ms)

Portability & exit

Exit cost
2
Self-hostable
Yes
Bulk export
Yes
Raw SQL
Yes
Schema changes
sql-migrations

Agentic

MCP server
Yes
Agent fit
3

Pricing

Pricing model
flat per project + usage
Entry price (/mo)
$25 /mo
Egress metered
Yes

Traction

GitHub stars
8,000
Backing
venture-backed

Positioning

Positioning
The open-source Firebase alternative, with GraphQL.
ZeroSync engine that puts a queryable client cache in front of your own Postgres.70.9

Features

Reactivity
push
TS inference
Yes
Transactions
mvcc
Local-first sync
Yes
Optimistic writes
Yes
Cron & scheduling
No
File storage
No
Vector search
Partial
Full-text search
Partial
Auth
bring-your-own
Hard limits
Client cache size is the practical ceiling — the query set you sync has to fit on the device.
Cold start (ms)
Function timeout (ms)

Portability & exit

Exit cost
3
Self-hostable
Yes
Bulk export
Yes
Raw SQL
Yes
Schema changes
sql-migrations

Agentic

MCP server
No
Agent fit
3

Pricing

Pricing model
free (self-host)
Entry price (/mo)
$0 /mo
Egress metered
No

Traction

GitHub stars
3,000
Backing
venture-backed

Positioning

Positioning
A general-purpose sync engine for the web.
PocketBaseOne Go binary: SQLite database, auth, file storage, realtime and an admin UI.66.6

Features

Reactivity
push
TS inference
Partial
Transactions
serialisable
Local-first sync
No
Optimistic writes
No
Cron & scheduling
Partial
File storage
Yes
Vector search
No
Full-text search
Partial
Auth
built-in
Hard limits
One machine. SQLite tops out near a billion bytes per value and a single concurrent writer; everything else is your disk and RAM.
Cold start (ms)
0 ms
Function timeout (ms)

Portability & exit

Exit cost
3
Self-hostable
Yes
Bulk export
Yes
Raw SQL
Yes
Schema changes
declarative-push

Agentic

MCP server
No
Agent fit
3

Pricing

Pricing model
free (self-host only)
Entry price (/mo)
$0 /mo
Egress metered
No

Traction

GitHub stars
48,000
Backing
solo-maintainer

Positioning

Positioning
Open-source backend in one file.
ConvexReactive TypeScript backend: database, functions and live queries in one project.65.5

Features

Reactivity
push
TS inference
Yes
Transactions
occ
Local-first sync
No
Optimistic writes
Yes
Cron & scheduling
Yes
File storage
Yes
Vector search
Yes
Full-text search
Yes
Auth
first-party-addon
Hard limits
1 MiB per document; roughly 16k documents or 8 MiB scanned per query; queries and mutations capped near 1s of compute.
Cold start (ms)
0 ms
Function timeout (ms)
10 min

Portability & exit

Exit cost
4
Self-hostable
Yes
Bulk export
Yes
Raw SQL
No
Schema changes
declarative-push

Agentic

MCP server
Yes
Agent fit
5

Pricing

Pricing model
per-seat + usage
Entry price (/mo)
$25 /mo
Egress metered
Yes

Traction

GitHub stars
8,000
Backing
venture-backed

Positioning

Positioning
The open-source reactive database for app developers.
ElectricSQLPostgres read-path sync: stream subsets of your own database to clients over HTTP.62.0

Features

Reactivity
push
TS inference
Partial
Transactions
mvcc
Local-first sync
Partial
Optimistic writes
Partial
Cron & scheduling
No
File storage
No
Vector search
Partial
Full-text search
Partial
Auth
bring-your-own
Hard limits
Shape size — a shape has to be small enough to hold on the client and cheap enough to re-materialise on the server.
Cold start (ms)
Function timeout (ms)

Portability & exit

Exit cost
2
Self-hostable
Yes
Bulk export
Yes
Raw SQL
Yes
Schema changes
sql-migrations

Agentic

MCP server
No
Agent fit
2

Pricing

Pricing model
free (self-host) + optional cloud
Entry price (/mo)
Egress metered
Partial

Traction

GitHub stars
8,000
Backing
venture-backed

Positioning

Positioning
Postgres sync engine — sync little subsets of your data into local apps.
Neon + DrizzleThe DIY baseline: serverless Postgres, a typed SQL query builder, nothing else.60.5

Features

Reactivity
manual
TS inference
Yes
Transactions
mvcc
Local-first sync
No
Optimistic writes
No
Cron & scheduling
No
File storage
No
Vector search
Yes
Full-text search
Yes
Auth
bring-your-own
Hard limits
Postgres limits. The operational ceiling is your compute size and connection count, both dials you control.
Cold start (ms)
500 ms
Function timeout (ms)

Portability & exit

Exit cost
1
Self-hostable
Partial
Bulk export
Yes
Raw SQL
Yes
Schema changes
sql-migrations

Agentic

MCP server
Yes
Agent fit
4

Pricing

Pricing model
flat + compute-hours + storage
Entry price (/mo)
$19 /mo
Egress metered
Partial

Traction

GitHub stars
18,000
Backing
big-tech

Positioning

Positioning
Serverless Postgres with branching, paired with a typed SQL query builder.
InstantDBClient-side reactive database with a relational graph model and instant sync.57.8

Features

Reactivity
push
TS inference
Yes
Transactions
occ
Local-first sync
Yes
Optimistic writes
Yes
Cron & scheduling
No
File storage
Yes
Vector search
No
Full-text search
No
Auth
built-in
Hard limits
Cold start (ms)
Function timeout (ms)

Portability & exit

Exit cost
4
Self-hostable
Partial
Bulk export
Partial
Raw SQL
No
Schema changes
declarative-push

Agentic

MCP server
Yes
Agent fit
4

Pricing

Pricing model
flat + usage
Entry price (/mo)
$30 /mo
Egress metered
Unknown

Traction

GitHub stars
9,000
Backing
venture-backed

Positioning

Positioning
A modern Firebase — a client-side database that syncs.
AppwriteOpen-source backend platform: databases, auth, storage, functions, self-hostable.54.6

Features

Reactivity
push
TS inference
Partial
Transactions
none
Local-first sync
No
Optimistic writes
No
Cron & scheduling
Yes
File storage
Yes
Vector search
No
Full-text search
Partial
Auth
built-in
Hard limits
Attribute count per collection is bounded by the underlying MariaDB row width — wide documents fail at creation time rather than at scale.
Cold start (ms)
1 s
Function timeout (ms)
15 min

Portability & exit

Exit cost
3
Self-hostable
Yes
Bulk export
Partial
Raw SQL
No
Schema changes
declarative-push

Agentic

MCP server
Yes
Agent fit
3

Pricing

Pricing model
per-seat + usage
Entry price (/mo)
$15 /mo
Egress metered
Yes

Traction

GitHub stars
52,000
Backing
venture-backed

Positioning

Positioning
Build like a team of hundreds — an open-source backend platform.
FirebaseGoogle's app platform: Firestore documents, auth, functions, deep mobile SDKs.51.2

Features

Reactivity
push
TS inference
No
Transactions
occ
Local-first sync
Partial
Optimistic writes
Yes
Cron & scheduling
Yes
File storage
Yes
Vector search
Yes
Full-text search
No
Auth
built-in
Hard limits
1 MiB per document; about one sustained write per second per document; 500 operations per transaction; no joins.
Cold start (ms)
2 s
Function timeout (ms)
60 min

Portability & exit

Exit cost
5
Self-hostable
No
Bulk export
Partial
Raw SQL
No
Schema changes
schemaless

Agentic

MCP server
Yes
Agent fit
2

Pricing

Pricing model
usage only (Blaze pay-as-you-go)
Entry price (/mo)
$0 /mo
Egress metered
Yes

Traction

GitHub stars
Backing
big-tech

Positioning

Positioning
Google's platform for building and running app backends.
TriplitFull-stack database that syncs: local cache, server, relational queries, offline.50.4

Features

Reactivity
push
TS inference
Yes
Transactions
occ
Local-first sync
Yes
Optimistic writes
Yes
Cron & scheduling
No
File storage
No
Vector search
No
Full-text search
No
Auth
bring-your-own
Hard limits
Cold start (ms)
Function timeout (ms)

Portability & exit

Exit cost
4
Self-hostable
Yes
Bulk export
Partial
Raw SQL
No
Schema changes
declarative-push

Agentic

MCP server
No
Agent fit
3

Pricing

Pricing model
Entry price (/mo)
Egress metered
Unknown

Traction

GitHub stars
4,000
Backing
venture-backed

Positioning

Positioning
The full-stack database that syncs.
yespartialnounknown◆ measured · ▸ vendor-claimed · ▪ community · · inferredExpand a row for the source and date behind every cell.
Convex vs alternatives: reactive backend platforms compared pricing, compared line by line

What are the best alternatives to Convex, and how hard is each one to leave?

Convex genuinely wins the thing it claims to win. One TypeScript project holds the schema, the server functions and the client types; queries are reactive by default with no subscription plumbing; mutations are transactional with no connection pool to think about. Nothing else on this list gets a competent developer to a working realtime feature faster, and it is the roster's best fit for a coding agent because the whole surface is typed and in-repo. Its transaction model — optimistic concurrency with automatic retries — is also the only one here that makes serialisable writes the boring default rather than something you opt into.

The cost is not the price and it is not the limits. It is that every read and write in your application is expressed in Convex's query builder, executed by Convex's runtime, and delivered by Convex's reactivity. There is no SQL to port. Leaving is a rewrite of the data layer plus the render model that hangs off it, and open-sourcing the backend does not change that. Convex self-hosting is real and it does bound the vendor risk, but self-hosting Convex is still Convex. Score the exit honestly before you start, not after.

If you want most of the productivity for a fraction of the exit cost, Supabase is the pragmatic answer and has been for three years. Your data is Postgres, your queries are SQL or PostgREST over SQL, and pg_dump is a complete escape hatch. What you give up is coherence: auth, storage, realtime and edge functions are four products stitched together, realtime is a change feed you subscribe to rather than a reactive query, and types come from a CLI step rather than inference. Nhost is the same trade with Hasura's GraphQL in place of PostgREST — smaller, quieter, and worth a look if GraphQL is already in your stack.

The interesting movement is at the sync layer. ElectricSQL and Zero both refuse to own your database. Electric streams read shapes out of your Postgres over HTTP and leaves writes to your existing API; Zero puts a query-shaped client cache in front of Postgres with server-side mutators. That inverts the lock-in question — you adopt a sync engine, not a backend — which is why they score 2 and 3 on exit cost while delivering local-first behaviour Convex does not have at all. They are also younger, thinner on batteries (no storage, no auth, no cron), and will make you build the parts Convex hands you.

Firebase is the cautionary tale at the other end. It is the only entry here with no self-host path, a proprietary security-rules language, an export format only Firestore can read, and a document model that quietly shapes your schema around its query limitations. It still has the deepest mobile SDKs and Google's operational record, and for a consumer mobile app that will never migrate, that is a defensible choice. For anything you expect to still be running and still be changing in five years, it is the worst deal on this page.

What exit cost actually measures

Every vendor on this page will tell you your data is yours. That is true, and it is not the question. Data extraction is a weekend for nine of these eleven; rewriting the two thousand call sites that read that data is not.

The ladder is about code, not bytes. Rung 1 is standard SQL over the wire — leaving is a connection string. Rung 2 is a standard engine behind a vendor SDK: your schema and your queries port intact, but the auth, storage and realtime call sites get rewritten. Rung 3 is a proprietary API over an open engine you can self-host, so the data leaves cleanly but every read and write is vendor-shaped. Rung 4 adds a proprietary function runtime on top, so queries, mutations, subscriptions and the reactive render model all go. Rung 5 is rung 4 with no self-host and no self-serve bulk export, which makes even the data a project.

Two things fall out of this. First, open source does not lower the score by itself — Appwrite, PocketBase and Convex are all open source and all sit at 3 or 4, because the licence governs who may run the server, not who has to rewrite the client. Second, the sync engines score unusually well for how new they are, because they sit beside a Postgres you already control rather than replacing it.

Where the pricing hides

The sticker prices here cluster between $15 and $30 a month and tell you almost nothing. Three mechanics decide the real bill.

Per-seat pricing. Convex and Appwrite charge per member on top of usage, so a five-person team starts at five times the headline before a single function runs. Supabase charges per organisation; Firebase charges nothing up front. On a small team this is usually the largest single line, and it is the one that does not shrink when you optimise.

Bandwidth. Convex, Supabase, Firebase, Appwrite and Nhost all meter egress separately from storage and compute. Reactive backends push data on every change, so a chatty subscription is a bandwidth line item rather than a CPU one — easy to miss when you model costs against requests per second. Check what your live queries actually re-send when one row changes.

Idle. Firebase, Convex and Neon cost approximately nothing when nobody is using them. A Supabase Pro project bills compute by the hour whether or not it serves traffic, and anything self-hosted bills you for the machine. For side projects and staging environments this dominates everything else on the page.

Realistic migration paths

Convex to Postgres is the hard one, and worth planning before you need it. npx convex export gives you a zip of JSONL per table, which loads into Postgres cleanly enough; the work is in the application. The pattern that survives contact with reality is to put a repository layer between your components and Convex early, so the reactive queries become one seam instead of several hundred. Do it while the app is small — retrofitting it later is most of the cost of the migration itself.

Firebase to anything starts with the export format, the one genuinely closed artefact on this page: the managed Firestore export writes a format only Firestore imports. In practice you paginate collections through the Admin SDK and write your own JSON, which is fine at gigabytes and painful at terabytes. Budget separately for translating security rules into row-level security or middleware, because there is no mechanical translation.

Supabase to plain Postgres is the easy case and worth naming as the reference point: pg_dump, restore anywhere, replace supabase-js calls with your query builder, replace GoTrue with an auth provider. Weeks, not quarters. That gap — weeks against quarters — is the entire content of the exit-cost column.

Adding a sync engine later is the underrated option. Because Electric and Zero sit beside Postgres rather than replacing it, "start on Neon and Drizzle, add Zero when the UI needs to feel instant" is a real sequence rather than a rewrite. None of the all-in-one platforms support that shape.

What is convex vs alternatives: reactive backend platforms compared?

Convex vs alternatives: reactive backend platforms compared

On toolweight, Convex vs alternatives: reactive backend platforms compared means the 11 tools benchmarked on this page — Convex, Supabase, Firebase, Appwrite, PocketBase, InstantDB, Nhost, Triplit, Zero, ElectricSQL, Neon + Drizzle — judged on the same 26 fields, from the same sources, on the same date. The question it exists to answer: What are the best alternatives to Convex, and how hard is each one to leave?

How does toolweight compare these?

Every cell was written from vendor documentation, public pricing pages and hands-on knowledge of the SDKs, then tagged with its provenance. Cells marked vendor-claimed come off a specific docs or pricing URL and carry the date the claim was last plausibly true. Cells marked inferred are judgement calls or values reasoned from adjacent facts. Where a fact is genuinely not published — Triplit's hosted pricing, several function timeouts, every star count to better than a thousand — the cell is null and renders as an em dash rather than a confident guess. Prices are the lowest paid tier, monthly, in USD, excluding usage.

Exit cost is the field this page exists for. It is a 1–5 judgement score, lower is better, and it measures one thing: how much application code you rewrite to move off the platform, assuming the data is already extracted. It deliberately ignores how good the platform is, how cheap it is, and how likely the vendor is to survive. A high score is not a verdict against a tool — it is the size of the bet you are placing. The five rungs are defined in the column tooltip, every score is a judgement rather than a measurement, and the reasoning for each sits in that tool's cell note.

Full methodology and sourcing policy →

Frequently asked questions

Is Convex a good idea if I might need to leave later?

Only if you price the exit now. Convex has no SQL surface, so every query, mutation and subscription is rewritten on the way out, and the reactive render model has no drop-in equivalent. That is a 4 out of 5 on our exit-cost ladder. If the codebase is likely to outlive the decision and you are not certain, start on Postgres instead.

Does self-hosting Convex remove the lock-in?

No — it removes vendor risk, which is a different problem. The convex-backend repository is open under FSL-1.1-Apache-2.0 and self-hosting is documented, so Convex disappearing cannot strand you. But a self-hosted Convex still speaks the Convex query API, so the cost of moving your application to something that is not Convex is unchanged. Exit cost and vendor risk are separate columns for a reason.

Supabase or Convex for a new TypeScript app?

Convex if the app is realtime-shaped and the team is small — you will ship the first version faster and write no subscription plumbing. Supabase if you want the data to stay in Postgres, need raw SQL, or expect analytics and BI tools to read the same database. The productivity gap is real but narrower than it was; the portability gap is not narrowing at all.

What is the actual difference between Zero and ElectricSQL?

Direction and scope. Electric streams read-only shapes out of your Postgres over HTTP and says nothing about writes — you keep your own API. Zero syncs queries into a client-side cache and handles writes through custom mutators that run against your Postgres, so it owns more of the loop. Electric is the smaller commitment; Zero gives you more in return for it.

Is Firebase still a reasonable default in 2026?

For consumer mobile apps that will never migrate, yes — the SDKs, offline persistence and Google's operations remain hard to beat. For anything else it is the worst exit on this page: no self-host, a proprietary rules language, an export format only Firestore reads, and a document model that shapes your schema around its query engine. Choose it deliberately, not by habit.

Which of these is genuinely local-first?

InstantDB, Triplit and Zero, with ElectricSQL covering the read half. All four keep a real client-side store, resolve queries locally and reconcile with the server. Firebase's offline persistence gets close for simple cases. Convex and Supabase are not local-first: they are fast realtime backends with optimistic-update helpers, which is a different guarantee once the network is gone.

How should a small team weight exit cost against speed?

By expected lifespan. Under twelve months and pre-product-market-fit, exit cost is nearly free and shipping speed is everything — take Convex or Instant. Past that, rewriting an entire data layer is measured in engineer-months and the Postgres options claw it back. The honest framing is that Convex charges its fee at the end, in one payment, and you cannot pay it early.