all posts

The best Convex alternatives in 2026

Ajay Kumar··10 min read

Convex is unusually coherent for a backend platform. You write TypeScript functions, they run in a managed runtime with transactional guarantees, and query results are reactive — a client subscribed to a query updates when the underlying data changes, with no cache invalidation code anywhere. When it fits, it eliminates a genuinely large amount of plumbing.

It is also three products bundled together, and people look for alternatives for three unrelated reasons. I'm Ajay, I build PandaStack, which is on this list and is not a Convex replacement in the way most of the others are — I will say where it does and does not apply.

Which of the three did you come for?

  • The sync engine. Reactive queries that push to subscribed clients. This is Convex's most distinctive part and the hardest to replace, because most alternatives give you real-time messaging and leave the query-invalidation logic to you.
  • The function runtime. TypeScript on the server with no deployment story to build. Widely available elsewhere, in a dozen shapes.
  • The database. A document store with transactions and a typed schema. The most replaceable component, and the one people most often say they want when they mean one of the other two.

There is a fourth reason that is not about features at all: wanting your data in a database you can point any tool at. Convex's store is its own, and 'I want to run a SQL query against production without an export' is a legitimate and common reason to leave.

1. Supabase

The default alternative and the right first thing to price. It is Postgres — real, ordinary, unremarkable Postgres — with auth, storage, edge functions and realtime layered on top. Every tool you have ever used works against it, and if you leave Supabase later you leave with a Postgres database rather than an export job.

The gap is precisely the sync engine. Supabase Realtime streams database changes to clients, which is the raw material, but it is not Convex's reactive-query model: you subscribe to changes on a table and work out what that means for your rendered state. For a lot of applications that is fine and the row-level-security model is worth the trade. For an app whose entire UX is derived views updating live, you will rebuild something.

2. Firebase

The original of the species, and still the most complete realtime-first backend if mobile clients and offline behaviour matter. Firestore's listener model is closer to Convex's spirit than Supabase's is, and the client SDKs across platforms are more mature than anyone else's on this list.

The cost is the well-documented one: a query model that constrains how you can ask questions, pricing that is a function of document reads in a way that surprises people at scale, and a data model that is genuinely hard to leave.

3. InstantDB

The closest thing on this list to Convex's actual idea — a sync engine as the product, with optimistic updates and relational queries that stay live on the client. If the reactive part is what you would miss, this is the one to try rather than the bigger names.

Smaller and younger than everything else here, with a correspondingly smaller ecosystem. That is a real consideration for a business application and less of one for a product still finding its shape.

4. Cloudflare Durable Objects with D1

The build-it-yourself option with the best primitives. A Durable Object is a single-threaded, strongly consistent coordination point with WebSocket support built in, which is genuinely the hard part of a sync engine. D1 gives you SQLite for durable state.

You are constructing the reactive layer, not buying it. That is weeks of work, not days, and it only makes sense if the sync semantics you want are specific enough that no product matches them.

5. Appwrite

An open-source backend platform with databases, auth, storage, functions and realtime subscriptions, available managed or self-hosted. The self-hosting option is the differentiator — if part of the reason you are leaving Convex is not wanting your backend to be somebody else's runtime, this addresses that directly.

The realtime model is subscription-to-changes rather than reactive-query, so the same caveat as Supabase applies.

6. A sync engine over your own Postgres

The most interesting recent development in this space is that sync engines have unbundled from backends. Rocicorp's Zero, ElectricSQL and similar projects sit in front of a Postgres database you own and give clients a local, queryable, live-updating replica.

This is the option to look at hardest if you want Convex's client experience with a database you control. It is more assembly than a single product, and the category is moving quickly enough that maturity varies a lot between projects.

7. Your own server, hosted properly

This is PandaStack's position and it is deliberately not a like-for-like swap. PandaStack does not have a reactive query engine or a document store. What it has is somewhere to run an ordinary backend — your framework, your code, WebSockets included — next to a managed Postgres, without the deployment work being the reason you were on a backend platform in the first place.

That matters for one specific kind of Convex user: the person who adopted a BaaS because standing up and operating a backend was the annoying part, and who has since discovered that the platform's constraints cost more than the plumbing did.

# The whole deployment story: connect a repo, push.
# Detection reads package.json, runs your build, starts your server.
git push origin main

# The database is ordinary Postgres — psql, Drizzle, Prisma, anything.
psql "$DATABASE_URL" -c "select count(*) from documents;"

The honest limitations: reactivity is entirely yours to build, whether that means WebSockets and your own invalidation or one of the sync engines above pointed at your database. And if what you loved about Convex was never writing a backend, this is the opposite of what you want.

Apps here are Firecracker microVMs that scale to zero, and billing is one rate card — $0.054 per active vCPU-hour and $0.0162 per working-set GiB-hour, never per request. A WebSocket server that is idle overnight bills nearly nothing, which is the case where per-invocation platforms tend to price badly.

The decision, compressed

  1. If you want the reactive model and are leaving for other reasons, look at InstantDB or a sync engine over Postgres. Do not assume Supabase Realtime is the same thing.
  2. If you want ordinary SQL and a database you can point tools at, Supabase is the shortest path and the safest exit.
  3. If self-hosting is the requirement, Appwrite or a sync engine over your own Postgres.
  4. If you have concluded that a backend platform's constraints cost more than a backend does, host a server and a Postgres and keep the sync question separate.
  5. Before any of it, check how much of your app genuinely needs live updates. It is frequently one or two views, and one WebSocket channel is a smaller change than a platform migration.

Frequently asked questions

Is Supabase Realtime equivalent to Convex's reactive queries?

No, and this is the most common mistaken assumption when migrating. Supabase Realtime streams database change events to subscribed clients — inserts, updates, deletes on a table. Convex re-runs your query and pushes the new result, so the client never reasons about invalidation. With Supabase you receive the change and work out what it means for the views you have rendered. That logic is yours to write and it is the bulk of the migration cost.

Can I self-host Convex?

Convex has published a self-hosting path, so it is not strictly a closed platform. The usual reasons people still look elsewhere are the operational burden of running it yourself and the fact that the data lives in Convex's own store rather than a database with a broad tool ecosystem. If self-hosting is your requirement, weigh that against Appwrite or a plain Postgres, which have far larger operational communities.

What is a sync engine and why is it suddenly a category?

A sync engine keeps a queryable replica of some subset of server data on the client and keeps it live, so the UI reads from local state and writes optimistically. It used to be bundled inside backend platforms like Convex and Firebase. Projects such as Zero and ElectricSQL have unbundled it — they sit in front of a Postgres you own — which means you can now get the client experience without adopting the whole backend.

Do I need a realtime backend at all?

Less often than the architecture suggests. Many applications have one or two genuinely collaborative views and a long tail of pages where a refetch on focus is indistinguishable from live. Auditing which views actually need push updates is worth doing before any migration, because the answer frequently turns a platform decision into a single WebSocket channel.

Keep reading

Run code in a microVM in one API call.

49ms p50 cold start. Fork, snapshot, and scale to zero.

Start free
Written by Ajay Kumar, Founder, PandaStack.