{"slug": "drizzle", "name": "Drizzle", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 4, "commenters": 9, "warners": 2, "score": 2.573, "rising": 0.02, "first": "2025-12-12", "latest": "2026-09-28", "why": "lately I've been happy with Drizzle for TS. It's very performant and expressive.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 4, "neutral": 3, "compare": 0, "warn": 2}, "spark": [0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "lately I've been happy with Drizzle for TS. It's very performant and expressive.", "icon": true, "domain": null, "github_repo": "github.com/drizzle-team/drizzle-orm", "official_url": "https://orm.drizzle.team", "pricing": "", "aliases": ["Drizzle", "Drizzle ORM"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 791901105, "item_id": 49493819, "url": "https://news.ycombinator.com/item?id=49493819", "by": "Escapado", "date": "2026-08-29", "stance": "recommend", "quote": "it plays very well drizzle in my opinion", "excerpt": "I use it heavily for form validation on the client and the server and it plays very well drizzle in my opinion. In the past I also used it a bunch for validating responses from a product API as it was not always guaranteed that the data had the agreed shape and we could hence account for that during runtime and surface problems in a simple way.", "context": "", "use_case": "database ORM with Zod", "switched_from": "", "story": "Zod v4.5 adds schema compilation (3-9x faster validation)"}, {"id": 780596497, "item_id": 48787281, "url": "https://news.ycombinator.com/item?id=48787281", "by": "pier25", "date": "2026-07-04", "stance": "recommend", "quote": "lately I've been happy with Drizzle for TS. It's very performant and expressive.", "excerpt": "I was against ORMs until I used EF Core in .NET which I really loved. A good ORM is amazing for productivity and when needed you can always write raw SQL. I don't use .NET anymore but lately I've been happy with Drizzle for TS. It's very performant and expressive. After years it seems that they're finally going to release v1.0 soon. Personally I would never go back to writing all my queries with SQL, manually mapping", "context": "", "use_case": "ORM for TypeScript", "switched_from": "EF Core", "story": "What ORMs have taught me: just learn SQL (2014)"}, {"id": 754837376, "item_id": 47177336, "url": "https://news.ycombinator.com/item?id=47177336", "by": "deaux", "date": "2026-02-26", "stance": "recommend", "quote": "out of the two it's a no-brainer.", "excerpt": "Supreme irony: this website itself is a better exercise in showing what Claude Code uses than the data provided. Everything current Claude Code i.e. Opus 4.6 chooses by default for web is exactly what this linked blog uses. Jetbrains Mono is as strong of a tell for web as \"Not just A, but B\" for text. >99% of webpages created in the last month with Jetbrains Mono will be Opus. Another tell is the overuse of this font", "context": "", "use_case": "database ORM", "switched_from": "", "story": "What Claude Code Chooses"}, {"id": 740014593, "item_id": 46250912, "url": "https://news.ycombinator.com/item?id=46250912", "by": "zackify", "date": "2025-12-12", "stance": "recommend", "quote": "Particularly with drizzle, it means I can use sqlite on device with expo-sqlite", "excerpt": "I love jsonb support in sqlite. Particularly with drizzle, it means I can use sqlite on device with expo-sqlite, and store our data format in a single field, with very little syntax, and the schema and queries all become fully type safe. Also being able to use the same light orm abstraction server side with bun:sqlite is huge.", "context": "", "use_case": "type-safe queries", "switched_from": "", "story": "SQLite JSON at full index speed using generated columns"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 782861600, "item_id": 48928850, "url": "https://news.ycombinator.com/item?id=48928850", "by": "souvlakee", "date": "2026-07-15", "stance": "warn", "quote": "Drizzle has no way to declare STRICT tables.", "excerpt": "Sadly, the ORM layer lags here: Drizzle has no way to declare STRICT tables. The request has been open since March 2023 (issue #202, now discussion #2435) and didn't make the v1.0 beta either. The only workaround is hand-appending STRICT to generated migration SQL, which doesn't work at all if you use `drizzle-kit push`. https://github.com/drizzle-team/drizzle-orm/discussions/2435", "context": "", "use_case": "SQLite ORM", "switched_from": "", "story": "SQLite should have (Rust-style) editions"}, {"id": 764007168, "item_id": 47750448, "url": "https://news.ycombinator.com/item?id=47750448", "by": "hk__2", "date": "2026-04-13", "stance": "warn", "quote": "I quickly hit several limitations of Drizzle and I abandonned the project.", "excerpt": "Not a big thing, but I\u2019m happy to work again on a side project I started last year and abandoned because of some limitations from the stack I chose. It\u2019s https://napodico.it, a very simple online Neapolitan dictionary. Nothing extraordinary here but it\u2019s something that will tremendously help me organize my notes on Neapolitan words and expressions that are currently scattered across Google docs. I\u2019ve built https://ww", "context": "", "use_case": "ORM", "switched_from": "", "story": "Ask HN: What Are You Working On? (April 2026)"}]}], "who": [], "tags": [], "use_cases": ["database access in web apps", "database orm with zod", "sql layer", "sqlite orm", "orm for typescript", "orm"], "compared": [{"slug": "mongodb", "name": "MongoDB", "co": 1, "switched_from": 1, "switched_to": 0}, {"slug": "ef-core", "name": "EF Core", "co": 1, "switched_from": 1, "switched_to": 0}, {"slug": "sqlalchemy", "name": "SQLAlchemy", "co": 1, "switched_from": 0, "switched_to": 1}], "makers": [{"id": 798894704, "item_id": 49930919, "url": "https://news.ycombinator.com/item?id=49930919", "by": "felix-h", "date": "2026-10-02", "stance": "neutral", "quote": "On the backend we use Drizzle with Neon, deployed and monitored via Vercel.", "excerpt": "eventfirst | Senior Full-Stack Engineer | Berlin, Germany | REMOTE (CET) | Full-time | eventfirst.com We are applying AI to organize corporate events. We are looking for a senior engineer with at least ten years of full stack experience, a strong focus on product and UX, and some experience building an AI chat based product. Our tech stack is Typescript, React, Next.js and Tailwind. On the backend we use Drizzle with", "context": "hiring for eventfirst", "use_case": "backend ORM", "switched_from": "", "story": "Ask HN: Who is hiring? (October 2026)"}], "threads": [{"url": "https://news.ycombinator.com/item?id=49922569", "title": "Ask HN: Who is hiring? (October 2026)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49879000", "title": "MongoDB CEO resigns to join Meta", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49493018", "title": "Zod v4.5 adds schema compilation (3-9x faster validation)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49447178", "title": "Show HN: Typebase \u2013 A single-folder back end you write in TypeScript", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48928135", "title": "SQLite should have (Rust-style) editions", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48742175", "title": "What ORMs have taught me: just learn SQL (2014)", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1, "neutral": 1}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {}, "2026-04": {"warn": 1}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 1, "warn": 1}, "2026-08": {"neutral": 1, "recommend": 1}, "2026-09": {"neutral": 1}, "2026-10": {}}, "quotes": [{"id": 798123569, "item_id": 49882723, "url": "https://news.ycombinator.com/item?id=49882723", "by": "stevefan1999", "date": "2026-09-28", "stance": "neutral", "quote": "I recently switched to Drizzle", "excerpt": "MongoDB is a natural choice if you are working with denormalized deeply hierarchical data structure like JSON. It is also natural to JavaScript devs since the shell itself is JavaScript. This makes it super effective on modern web framework although I recently switched to Drizzle", "context": "", "use_case": "database access in web apps", "switched_from": "MongoDB", "story": "MongoDB CEO resigns to join Meta"}, {"id": 791901105, "item_id": 49493819, "url": "https://news.ycombinator.com/item?id=49493819", "by": "Escapado", "date": "2026-08-29", "stance": "recommend", "quote": "it plays very well drizzle in my opinion", "excerpt": "I use it heavily for form validation on the client and the server and it plays very well drizzle in my opinion. In the past I also used it a bunch for validating responses from a product API as it was not always guaranteed that the data had the agreed shape and we could hence account for that during runtime and surface problems in a simple way.", "context": "", "use_case": "database ORM with Zod", "switched_from": "", "story": "Zod v4.5 adds schema compilation (3-9x faster validation)"}, {"id": 791862691, "item_id": 49491418, "url": "https://news.ycombinator.com/item?id=49491418", "by": "scrollaway", "date": "2026-08-29", "stance": "neutral", "quote": "sql is nk-db, built on top of drizzle", "excerpt": "Scratching my head a little bit here, I'm not sure how this differs from NextJS (or Vite) with a layer of drizzle & better-auth. Not that that layer isn't important. We ended up building something like this at Ingram, nextkit: https://github.com/ingram-technologies/nextkit - but we distribute it as a set of micro libraries that work well together rather than a unified framework. (Auth is nk-auth, built on top of bett", "context": "", "use_case": "SQL layer", "switched_from": "", "story": "Show HN: Typebase \u2013 A single-folder back end you write in TypeScript"}, {"id": 782861600, "item_id": 48928850, "url": "https://news.ycombinator.com/item?id=48928850", "by": "souvlakee", "date": "2026-07-15", "stance": "warn", "quote": "Drizzle has no way to declare STRICT tables.", "excerpt": "Sadly, the ORM layer lags here: Drizzle has no way to declare STRICT tables. The request has been open since March 2023 (issue #202, now discussion #2435) and didn't make the v1.0 beta either. The only workaround is hand-appending STRICT to generated migration SQL, which doesn't work at all if you use `drizzle-kit push`. https://github.com/drizzle-team/drizzle-orm/discussions/2435", "context": "", "use_case": "SQLite ORM", "switched_from": "", "story": "SQLite should have (Rust-style) editions"}, {"id": 780596497, "item_id": 48787281, "url": "https://news.ycombinator.com/item?id=48787281", "by": "pier25", "date": "2026-07-04", "stance": "recommend", "quote": "lately I've been happy with Drizzle for TS. It's very performant and expressive.", "excerpt": "I was against ORMs until I used EF Core in .NET which I really loved. A good ORM is amazing for productivity and when needed you can always write raw SQL. I don't use .NET anymore but lately I've been happy with Drizzle for TS. It's very performant and expressive. After years it seems that they're finally going to release v1.0 soon. Personally I would never go back to writing all my queries with SQL, manually mapping", "context": "", "use_case": "ORM for TypeScript", "switched_from": "EF Core", "story": "What ORMs have taught me: just learn SQL (2014)"}, {"id": 764007168, "item_id": 47750448, "url": "https://news.ycombinator.com/item?id=47750448", "by": "hk__2", "date": "2026-04-13", "stance": "warn", "quote": "I quickly hit several limitations of Drizzle and I abandonned the project.", "excerpt": "Not a big thing, but I\u2019m happy to work again on a side project I started last year and abandoned because of some limitations from the stack I chose. It\u2019s https://napodico.it, a very simple online Neapolitan dictionary. Nothing extraordinary here but it\u2019s something that will tremendously help me organize my notes on Neapolitan words and expressions that are currently scattered across Google docs. I\u2019ve built https://ww", "context": "", "use_case": "ORM", "switched_from": "", "story": "Ask HN: What Are You Working On? (April 2026)"}, {"id": 754837376, "item_id": 47177336, "url": "https://news.ycombinator.com/item?id=47177336", "by": "deaux", "date": "2026-02-26", "stance": "recommend", "quote": "out of the two it's a no-brainer.", "excerpt": "Supreme irony: this website itself is a better exercise in showing what Claude Code uses than the data provided. Everything current Claude Code i.e. Opus 4.6 chooses by default for web is exactly what this linked blog uses. Jetbrains Mono is as strong of a tell for web as \"Not just A, but B\" for text. >99% of webpages created in the last month with Jetbrains Mono will be Opus. Another tell is the overuse of this font", "context": "", "use_case": "database ORM", "switched_from": "", "story": "What Claude Code Chooses"}, {"id": 742366582, "item_id": 46397911, "url": "https://news.ycombinator.com/item?id=46397911", "by": "bryanstjohn", "date": "2025-12-26", "stance": "neutral", "quote": "Express/TypeScript with Drizzle ORM & Postgres.", "excerpt": "Hi HN, I\u2019m Bryan founder of ForwardToAudio. The Problem: Like many of you, I subscribe to way too many long-form newsletters (Substack, technical digests, etc.), but I never find the time to actually sit down and read them. I tried using standard screen readers, but listening to them read URLs, \"view in browser\" links, and footer disclaimers was unbearable. The Solution: I built a tool that creates a private podcast ", "context": "", "use_case": "backend database access", "switched_from": "", "story": "Show HN: ForwardToAudio \u2013 Turn newsletters into a private podcast using AI"}, {"id": 740014593, "item_id": 46250912, "url": "https://news.ycombinator.com/item?id=46250912", "by": "zackify", "date": "2025-12-12", "stance": "recommend", "quote": "Particularly with drizzle, it means I can use sqlite on device with expo-sqlite", "excerpt": "I love jsonb support in sqlite. Particularly with drizzle, it means I can use sqlite on device with expo-sqlite, and store our data format in a single field, with very little syntax, and the schema and queries all become fully type safe. Also being able to use the same light orm abstraction server side with bun:sqlite is huge.", "context": "", "use_case": "type-safe queries", "switched_from": "", "story": "SQLite JSON at full index speed using generated columns"}]}