The usual backend setup is an assembly job. You pick a database, wire in authentication, set up a connection pool, figure out how to push updates to the client without polling, deploy it somewhere, then keep that somewhere alive. Each piece is manageable. Together, they eat your week.
Convex skips all of it.
What you don’t have to build
Real-time by default — no WebSocket server to configure, no subscription layer to design. Convex functions run server-side, subscribe to whatever data they return, and push updates to the client automatically. You write a query. The client stays current. That’s the whole thing.
The functions are serverless in the way that actually matters: you write plain TypeScript, define whether it reads or mutates, and deploy. No infrastructure layer between you and production. Convex handles the scaling, the cold starts, the regional routing.
The database isn’t a separate service you connect to. It’s part of the runtime. You query it from your functions with full TypeScript types. No SQL strings, no ORM layer, no migration file you’ll regret in six months.
The actual advantage
The pitch for Convex isn’t a feature list. It’s what disappears.
Every hour a real project spends on backend setup before the first feature ships is pure overhead. Authentication boilerplate, connection wrangling, deployment pipelines that need babysitting — that’s not the work. That’s the tax on the work.
Convex removes most of that tax. The dashboard is coherent, local dev mirrors production closely enough that deploys aren’t surprises, and the free tier covers what an early-stage app actually needs.
You’ll hit its limits eventually. Pricing scales fast for high-write workloads, and if you want raw SQL control you won’t find it here. But for the phase where speed is the whole game, you’re not configuring a backend anymore. You’re building the thing.