Prisma Client is an auto-generated, type-safe and modern JavaScript/TypeScript ORM for Node.js that's tailored to your data. Supports PostgreSQL, CockroachDB, MySQL, MariaDB, SQL Server, SQLite & MongoDB databases.
Last release 2 days ago
01 Sep 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
7 years old
10657 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Today, we are issuing the 4.16.2 patch release.
$allModels: { $allOperations } sets query type to never undefined explicitly passed to select/includeNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Today, we are issuing the 4.16.1 patch release.
$extend in factory function when compilerOptions.composite is trueNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
🌟 Help us spread the word about Prisma by starring the repo or tweeting about the release. 🌟
This release promotes the following Preview features to General Availability:
Today, we’re very excited to announce that Prisma Client extensions are Generally Available and production-ready! This means you can use the feature without the clientExtensions Preview feature flag.🚀
Prisma Client extensions are a powerful new feature for adding functionality on top of your Prisma Client in a type-safe manner. With this feature, you can create simple, but flexible solutions.
Prisma Client extensions have 4 different types of components that can be included in an extension:
findMany.const prisma = new PrismaClient().$extends({
name: "extension-name",
result: { /* ... */ },
model: { /* ... */ },
query: { /* ... */ },
client: { /* ... */ },
});
You can also create and publish extensions for others to use. Learn more about how to share extensions in our documentation.
We also made the following improvements to Prisma Client extensions in preparation for General Availability:
Added a top-level $allOperations method for query component that captures all model operations as well as top-level raw queries. Refer to our documentation for more information.
const prisma = new PrismaClient().$extends({
query: {
$allOperations({ args, query, operation, model }) {
/* your extension's logic here */
}
}
})
Prisma.validator can now also be used for extended types:
const prisma = new PrismaClient().$extends({/* ... */})
const data = Prisma.validator(prisma, 'user', 'findFirst', 'select')({
id: true,
})
query callbacks for $queryRaw and $executeRaw will always receive Sql instance as args. This instance can be used to compose a new query using Prisma.sql:
const prisma = new PrismaClient().$extends({
query: {
$queryRaw({ args, query }) {
return query(Prisma.sql`START TRANSACTION; ${args}; COMMIT;`)
}
}
})
$on cannot be called after extending Prisma Client. Therefore, if you want to use event handlers together with extensions, we recommend using the $on method before $extends.
const prisma = new PrismaClient()
.$on(/* ... */)
.$extends({/* ... */})
We updated the import path for utilities used for authoring extension to @prisma/client/extension rather than @prisma/client
+ import { Prisma } from "@prisma/client/extension"
- import { Prisma } from "@prisma/client"
We also took this opportunity to deprecate Prisma Client’s middleware. We recommend using to using Prisma Client query extension components which can be used to achieve the same functionality and with better type safety.
🚧 Middleware will still be available in Prisma Client’s API. However, we recommend using Prisma Client extensions over middleware.
Starting with this release, we’re excited to announce that orderByNulls is now Generally Available! This means you can use the feature without the orderByNulls Preview feature flag.🌟
We introduced this feature in 4.1.0 to enable you to sort records with null fields to either appear at the beginning or end of the result.
The following example query sorts posts by updatedAt, with records having a null value at the end of the list:
await prisma.post.findMany({
orderBy: {
updatedAt: { sort: 'asc', nulls: 'last' },
},
})
To learn more about this feature, refer to our documentation.
We’re excited to see what you will build! Feel free to share with us what you build on Twitter, Slack, or Discord.
This release moves the filteredRelationCount Preview feature to General Availability! This means you can use the feature without the filteredRelationCount Preview feature flag.
We first introduced this feature in 4.3.0 to add the ability to count by filtered relations.
The following query, for example, counts all posts with the title “Hello!”:
await prisma.user.findMany({
select: {
_count: {
select: {
posts: { where: { title: 'Hello!' } },
},
},
},
})
To learn more about this feature, refer to our documentation.
In the last two releases, 4.13.0 and 4.14.0, we added 9 introspection warnings. These warnings surface features in use in your database that cannot currently be represented in the Prisma schema.
In this release, we’re adding one more introspection warning to the list: expression indexes.
On database introspection, the Prisma CLI will surface the feature with a warning, and a comment in your Prisma schema for sections for each feature in use. The warnings will also contain instructions for workarounds on how to use the feature.
select'd explicitly. prisma generate when running it directly after installing prisma$runCommandRaw is not passing the expected data to middleware or client extension.prismaVersion.client available on "@prisma/client/scripts/default-index"distinct fieldPrisma.validatorclientExtensions GA $queryRawUnsafe also triggers $allModels.$allOperations$on applied to an extended client is also bound to the parent client$queryRaw* is broken in interactive transactions together with clientExtensions in 4.16.0-dev.17typesprisma db pull gets rid of @default(uuid()) on re-introspectionLearn about the latest release and other news from the Prisma community by joining us for another "What's new in Prisma" live stream.
The stream takes place on YouTube on Thursday, June 22 at 5 pm Berlin | 8 am San Francisco.
Nothing published for this version