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 3 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
Today, we are issuing the 5.7.1 patch release.
This patch fixes multiple small problems in our relationJoins preview feature. If you ran into problems when testing relationJoins before, please give it another go with 5.7.1 and share your feedback or create a bug report if you encounter any issues.
relationJoins: Int[] return as nullrelationJoins: fails when filtering includes by isNot: nullrelationJoins: "The table (not available) does not exist in the current database."relationJoins: PostgresError { code: "54023", message: "cannot pass more than 100 arguments to a function", severity: "ERROR", detail: None, column: None, hint: None }relationJoins: Inconsistent column data: Unexpected conversion failure from String to datetime. Reason: $trailing inputNothing 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 posting on X (formerly Twitter) about the release.
✨ In this release, we improved the SQL queries Prisma Client generates for you with two new Preview features, the driver adapters, and support for the database drivers we currently support. 5.7.0 will be the last release of the year. Stay tuned for the next one in January! ✨
JOINs for relation queries for PostgreSQL and CockroachDBWe’re excited to announce Preview support for JOINs in Prisma Client when querying relations. Support for JOINs has been a long-standing feature request, and this release adds support for PostgreSQL and CockroachDB. The upcoming releases will expand support for other databases Prisma supports.
To get started using JOINs, enable the Preview feature in your Prisma schema:
// schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["relationJoins"]
}
Run prisma generate to regenerate Prisma Client and enable the Preview feature.
Prisma Client will use a JOIN in your query to fetch relation data for a majority of the cases.
Example queries
<details>
<summary><b>1-1 relation queries example</b></summary>
Prisma Client query
await prisma.user.findUnique({
where: {
id: 1
},
include: {
profile: true
}
})
SQL
SELECT
"t1"."id",
"t1"."name",
"User_profile"."__prisma_data__" AS "profile"
FROM
"public"."User" AS "t1"
LEFT JOIN LATERAL (
SELECT
COALESCE(JSON_AGG("__prisma_data__"), '[]') AS "__prisma_data__"
FROM
(
SELECT
"t4"."__prisma_data__"
FROM
(
SELECT
JSON_BUILD_OBJECT(
'id',
"t3"."id",
'bio',
"t3"."bio",
'userId',
"t3"."userId"
) AS "__prisma_data__"
FROM
(
SELECT
"t2".*
FROM
"public"."Profile" AS "t2"
WHERE
"t1"."id" = "t2"."userId"
) AS "t3"
) AS "t4"
) AS "t5"
) AS "User_profile" ON TRUE
WHERE "t1"."id" = $1
LIMIT $2
</details>
<details>
<summary><b>1-m relation queries example</b></summary>
Prisma Client query
await prisma.user.findUnique({
where: {
id: 1
},
include: {
posts: true
}
})
SQL
SELECT
"t1"."id",
"t1"."name",
"User_posts"."__prisma_data__" AS "posts"
FROM
"public"."User" AS "t1"
LEFT JOIN LATERAL (
SELECT
COALESCE(JSON_AGG("__prisma_data__"), '[]') AS "__prisma_data__"
FROM
(
SELECT
"t4"."__prisma_data__"
FROM
(
SELECT
JSON_BUILD_OBJECT(
'id',
"t3"."id",
'title',
"t3"."title",
'content',
"t3"."content",
'published',
"t3"."published",
'authorId',
"t3"."authorId"
) AS "__prisma_data__"
FROM
(
SELECT
"t2".*
FROM
"public"."Post" AS "t2"
WHERE
"t1"."id" = "t2"."authorId"
/* root select */
) AS "t3"
/* inner select */
) AS "t4"
/* middle select */
) AS "t5"
/* outer select */
) AS "User_posts" ON TRUE
WHERE "t1"."id" = $1
LIMIT $2
</details>
<details>
<summary><b>m-n relation queries example</b></summary>
Prisma Client query
await prisma.post.findUnique({
where: {
id: 1
},
include: {
tags: true
}
})
SQL
SELECT
"t1"."id",
"t1"."title",
"t1"."content",
"t1"."published",
"t1"."authorId",
"Post_tags_m2m"."__prisma_data__" AS "tags"
FROM
"public"."Post" AS "t1"
LEFT JOIN LATERAL (
SELECT
COALESCE(JSON_AGG("__prisma_data__"), '[]') AS "__prisma_data__"
FROM
(
SELECT
"Post_tags"."__prisma_data__"
FROM
"public"."_PostToTag" AS "t2"
LEFT JOIN LATERAL (
SELECT
JSON_BUILD_OBJECT('id', "t4"."id", 'name', "t4"."name") AS "__prisma_data__",
"t4"."id"
FROM
(
SELECT
"t3".*
FROM
"public"."Tag" AS "t3"
WHERE
"t2"."B" = "t3"."id"
/* root select */
) AS "t4"
) AS "Post_tags" ON TRUE
WHERE
"t2"."A" = "t1"."id"
) AS "Post_tags_m2m_1"
) AS "Post_tags_m2m" ON TRUE
WHERE "t1"."id" = $1
LIMIT $2
</details>
Share your feedback and create a bug report if you encounter any issues.
distinct option now uses SQL queries (Preview)From this release, Prisma Client’s distinct option now uses the native SQL DISTINCT ON for unordered queries with PostgreSQL and CockroachDB. The upcoming releases will expand support for the other databases that Prisma supports.
Prisma Client already supports querying for distinct records. However, Prisma Client took care of the post-processing for distinct records in memory.
To get started, enable the Preview feature in your Prisma schema:
// schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["nativeDistinct"]
}
Regenerate your Prisma Client to get started using the Preview feature.
Given the following Prisma Client query:
await prisma.user.findMany({
distinct: ['role'],
select: {
role: true,
},
})
Before 5.7.0
Previously, Prisma Client handled the post-processing to select distinct records in-memory. Therefore, the following query was generated and executed against your database:
SELECT
"public"."User"."id",
"public"."User"."role"::text
FROM
"public"."User"
WHERE
1 = 1 OFFSET $1
After 5.7.0
SELECT DISTINCT ON ("public"."User"."role")
"public"."User"."id",
"public"."User"."role"::text
FROM
"public"."User"
WHERE
1 = 1 OFFSET $1
Share your feedback and create a bug report if you encounter any issues.
In this release, we improved Prisma support when deploying to Netlify on Node.js v20. Previously, the Prisma Client could not resolve the location of the Query Engine after deploying to Netlify when using Node.js v20. If you run into this issue, we recommend updating to Prisma v5.7.0.
We recommend giving this comment on GitHub a read if you are not yet able to upgrade Prisma, to learn how to get around the error.
InterpretationError("Unable to convert expression result into a set of selection results", None) (starting with 5.2.0)TRUNCATEing the table on CockroachDB: placeholder $1 already has type string, cannot assign ColorPrisma Client could not locate the Query Engine for runtime "rhel-openssl-3.0.x")Huge thanks to @anuraaga, @onichandame, @LucianBuzzo, @RobertCraigie, @fqazi, @KhooHaoYit, @alencardc, @Oreilles, @christianledgard, @skyzh, @alula, @AikoRamalho, @petradonka for helping!
If you're interested in joining our growing team to help empower developers to build data-intensive applications, Prisma is the place for you.
We're hiring for the following roles:
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