Why I stopped using ORMs in 2026 (and what I use instead)
Sequelize, TypeORM, Prisma, Drizzle. I have shipped them all. In 2026 I write SQL by hand. Here is why.
I have used Sequelize, TypeORM, Prisma, Drizzle, and SQLAlchemy in production. In 2026 I write SQL by hand and use a thin query helper. Here is why.
The case against ORMs
You learn the ORM, not the database. When something is slow, you cannot fix it without dropping into the SQL the ORM generated, at which point you are debugging two layers instead of one.
Migrations always become a problem. Every ORM has a migration system. None of them handles the awkward cases (renaming a column with data, splitting a table, backfilling) without dropping to raw SQL.
Type safety is overrated. Drizzle gets close. Prisma gets close. But the moment you do anything non-trivial (window functions, CTEs, full text search), the type safety degrades and you write type-cast escapes.
What I use instead
I write SQL files. I run them through a tiny TypeScript helper that parses parameters, generates a typed function per query, and executes via the standard pg driver. Roughly 200 lines total.
When I would use an ORM
- Prototyping where the schema changes hourly - Internal tools where performance does not matter - A codebase already deeply invested in one
When I would not
- Anything customer-facing at scale - Anything where I will be debugging slow queries at 2am - Anything where the team needs to understand exactly what is happening
The real reason
ORMs solve the wrong problem. The hard part is not "write a SELECT". The hard part is "make this query fast on 50M rows under load". An ORM does not help with that.
Sarma
SarmaLinux
Have a project in mind?
Let's discuss how I can help you implement these ideas in your business.
Get in Touch