Tagged template SQLValues are always parameterised. Nested fragments merge with renumbered placeholders. SQL injection is structurally impossible.
Four adapters, one interfaceSQLite (bun:sqlite), PostgreSQL, MySQL (Bun native), and MSSQL (mssql). Switch adapters without changing query code.
Full TypeScript strictnessStrict mode, noUncheckedIndexedAccess, exactOptionalPropertyTypes, verbatimModuleSyntax — all on. No any, no non-null assertions.
No codegenDefine your schema with col() and defineTable(). Types are inferred — no build step, no generated files, no ORM magic.
Batteries includedConnection pooling, transactions with savepoints, deadlock retry, TVP support, prepared queries, read/write routing, failover groups.
Bun-nativeBuilt for Bun 1.x. Uses bun:sqlite, Bun's native Postgres and MySQL clients, and Bun.sleep for backoff. Zero unnecessary dependencies.