Why we chose Drizzle ORM over Prisma.
After years of using Prisma across client projects, we switched to Drizzle for disposal.space. Here's the reasoning — and the tradeoffs we accepted.
Prisma served us well — until it didn't.
Prisma was our default ORM for three years. It has an excellent developer experience, strong TypeScript integration, and a mature migration system. For most projects, it's still a great choice.
But as disposal.space grew in complexity, we started hitting friction. Prisma's query engine — a Rust binary that runs alongside your app — added cold start latency on serverless. The generated client grew large. And some queries we needed (window functions, CTEs, lateral joins) were impossible to express without dropping to raw SQL.
We weren't looking to switch. We were forced to evaluate alternatives when our cold start times on Vercel Edge crossed the 3-second mark.
What Drizzle gets right.
Drizzle ORM takes a fundamentally different approach. Instead of a query engine binary, it generates SQL at build time and runs it directly against your database driver.
Zero runtime overhead
No query engine binary. Drizzle compiles to plain SQL and runs directly on your database driver (postgres.js, node-postgres, etc). Cold starts dropped from 3s to under 500ms.
SQL-like syntax
Drizzle's API mirrors SQL closely. If you know SQL, you know Drizzle. No abstraction leak — you see exactly what query will run.
Tiny bundle size
The entire Drizzle package is ~50KB. Prisma's generated client was adding 2MB+ to our bundle. On serverless, every kilobyte matters.
Full SQL power
Window functions, CTEs, subqueries, json_agg — everything SQL can do, Drizzle can express. No more dropping to $queryRaw for complex queries.
What we gave up.
No tool is perfect. Switching to Drizzle meant accepting some tradeoffs that are worth being honest about.
Prisma Studio. Prisma's built-in database browser is genuinely useful during development. Drizzle Studio exists but is less polished. We mostly use pgAdmin or direct SQL now.
Migration DX. Prisma's migration system is more mature. Drizzle Kit works fine, but generating and applying migrations requires more manual steps. We wrapped it in a few npm scripts.
Ecosystem size. Prisma has a larger ecosystem — more tutorials, more Stack Overflow answers, more integrations. If you hit a Drizzle edge case, you're more likely to be reading source code than blog posts.
Nested relations. Prisma's include/select API for nested relations is more ergonomic than Drizzle's relational query API. For simple CRUD apps, Prisma's DX is still better.
Use the right tool for the job.
We don't think Drizzle is categorically better than Prisma. They optimize for different things.
If you're building a traditional Node.js API with a long-running server, Prisma is still excellent. The developer experience is hard to beat, and the cold start overhead doesn't apply.
If you're on serverless, need complex SQL, or care deeply about bundle size and startup time — Drizzle is the better choice today. That's where we are with disposal.space, and we haven't looked back.
Need help choosing your stack?
We help teams make technology decisions that hold up at scale. Let's talk about your architecture.