Impact Score: 5/10
Prisma 5.12.0 — Release Notes & Engineering Impact
Source available — automated, not human-reviewed
Component: prisma · Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
⚡ Executive Summary (TL;DR)
Prisma 5.12.0. Source highlight: Today, we are excited to share the `5.12.0` stable release 🎉
Who Does This Impact? (Role-Based Analysis)
💻 Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
📊 Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
⚙️ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
📄 View Raw Release Notes (Original Developer Log)
Today, we are excited to share the `5.12.0` stable release 🎉
🌟 **Help us spread the word about Prisma by starring the repo or [posting on X](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@prisma%20release%20v5.12.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/5.12.0) about the release.**
## Highlights
### Cloudflare D1 (Preview)
This release brings Preview support for [Cloudflare D1](https://developers.cloudflare.com/d1/) with Prisma ORM 🥳
D1 is Cloudflare’s SQLite database that can be used when deploying applications with Cloudflare.
When using Prisma ORM with D1, you can continue to: model your database with Prisma schema language, specify `sqlite` as your database provider in your Prisma schema, and interact with your database using Prisma Client.
To use Prisma ORM and D1 on Cloudflare Workers or Cloudflare Pages, you need to set `sqlite` as your database provider and use the `@prisma/adapter-d1` database adapter via the `driverAdapters` Preview feature, released back in version [5.4.0](https://github.com/prisma/prisma/releases/tag/5.4.0).
Here is an example of sending a query to your D1 database using Prisma Client in your Worker:
```ts
// src/index.ts file
import { PrismaClient } from '@prisma/client'
import { PrismaD1 } from '@prisma/adapter-d1'
// Add the D1Database to the Env interface
export interface Env {
// This must match the binding name defined in your wrangler.toml configuration
DB: D1Database
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext
): Promise<Response> {
// Make sure the database name matches the binding name in wrangler.toml and Env interface
const adapter = new PrismaD1(env.DB)
// Instantiate PrismaClient using the PrismaD1 driver adapter
const prisma = new PrismaClient({ adapter })
const users = await prisma.user.findMany()
const result = JSON.stringify(users)
return new Response(result)
},
}
```
📚 **Documentation:** [D1 Documentation](https://prisma.io/docs/orm/overview/databases/cloudflare-d1)
✍️ **Blog post:** [Build Applications at the Edge with Prisma ORM & Cloudflare D1 (Preview)](https://www.prisma.io/blog/build-applications-at-the-edge-with-prisma-orm-and-cloudflare-d1-preview)
📣 **Share your feedback:** [D1 Driver Adapter](https://github.com/prisma/prisma/discussions/23646)
🚀 **Example project:** [Deploy a Cloudflare Worker with D1](https://github.com/prisma/prisma-examples/tree/latest/deployment-platforms/edge/cloudflare-workers/with-d1)
### `createMany()` for SQLite
Bringing support for `createMany()` in SQLite has been a [long-awaited feature](https://github.com/prisma/prisma/issues/10710) ⭐
`createMany()` is a method on Prisma Client, released back in version [2.16.0](https://github.com/prisma/prisma/releases/tag/2.16.0), that lets you insert multiple records into your database at once. This can be really useful when seeding your database or inserting bulk data.
Here is an example of using `createMany()` to create new users:
```ts
const users = await prisma.user.createMany({
data: [
{ name: 'Sonali', email: '[email protected]' },
{ name: 'Alex', email: '[email protected]' },
{ name: 'Yewande', email: '[email protected]' },
{ name: 'Angelina', email: '[email protected]' },
],
})
```
Before this release, if you wanted to perform bulk inserts with SQLite, you would have most likely used `$queryRawUnsafe` to execute raw SQL queries. But now you don’t have to go through all that trouble 🙂
With SQLite, `createMany()` works exactly the same way from an API standpoint as it does with other databases except it does not support the `skipDuplicates` option. At the behavior level, SQLite will split `createMany()` entries into multiple `INSERT` queries when the model in your schema contains fields with attributes like `@default(dbgenerated())` or `@default(autoincrement())` and when the fields are not consistently provided with values across the entries.
📚**Documentation:** [`createMany()` - Prisma Client API Reference](https://www.prisma.io/docs/orm/reference/prisma-client-reference#createmany)
## Fixes and Improvements
### Prisma Client
- [N+1 Issue with `Decimal` data type and combining queries (batching)](https://github.com/prisma/prisma/issues/5952)
- [Batched `findUnique()` error out when the field is of `Boolean` type](https://github.com/prisma/prisma/issues/22384)
- [`relationJoins` MySQL converts nested Decimal to float](https://github.com/prisma/prisma/issues/23233)
- [Unexpected query leading to querying full table when using batched `findUnique()`](https://github.com/prisma/prisma/issues/23343)
- [`node-postgres` (pg) errors with misleading `P2010 PrismaClientKnownRequestError` when using `@prisma/adapter-pg` with SSL (`?sslmode=require`)](https://github.com/prisma/prisma/issues/23390)
- [D1 DateTime type does not work](https://github.com/prisma/prisma/issues/23479)
## Credits
Huge thanks to @yubrot, @skyzh, @anuraaga, @onichandame, @LucianBuzzo, @RobertCraigie, @arthurfiorette, @elithrar for helping!