ℹ️ Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @prisma/client (source) | 6.19.3 → 7.9.1 | ||||
| prisma (source) | 6.19.3 → 7.9.1 |
Release Notes
prisma/prisma (@​prisma/client)
v7.9.1
Today, we're issuing a patch release to resolve a security advisory in a transitive dependency of Prisma CLI (via @prisma/dev).
This fixes #29780.
It does not actually affect @prisma/dev or Prisma CLI so no urgent action is required, but it is recommended to upgrade nevertheless to avoid false positives from security scanners.
v7.9.0
v7.8.0
Today, we are excited to share the 7.8.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
Features
Prisma Client
- Added a
queryPlanCacheMaxSizeoption to thePrismaClientconstructor for fine-grained control over the query plan cache. Pass0to disable the cache entirely, or omit it to use the default cache size. A larger value can improve performance in applications that execute many unique queries, while a smaller one can reduce memory usage. (#29503)
Bug Fixes
Prisma Client
- Fixed an equality filter panic and incorrect
::jsonbcast when filtering on PostgreSQL JSON list columns. Queries usingwhere: { jsonListField: { equals: [...] } }no longer panic with a type mismatch or emit invalid SQL. (prisma/prisma-engines#5804) - Fixed case-insensitive JSON field filtering (
mode: insensitive), allowingwhere: { jsonField: { equals: "...", mode: "insensitive" } }to work correctly. (prisma/prisma-engines#5806) - Fixed incorrect parameterization of enum values that have a custom database name set via
@map. (#29422) - Fixed a database parameter limit check (
P2029), which could incorrectly reject or miss over-limit queries. (#29422) - Fixed a regression that caused missing SQL Server
VARCHARcasts for parameterized values. (prisma/prisma-engines#5801)
Schema Engine
- Fixed a misleading error message in
prisma migrate diffthat referenced the--shadow-database-urlCLI flag, which was removed in Prisma 7. (#29455) - Fixed
prisma migrate dev(and shadow database migration replay in general) failing withCREATE INDEX CONCURRENTLY cannot run inside a transaction blockwhen a migration contained concurrent index creation statements on PostgreSQL. (prisma/prisma-engines#5799) - Fixed PostgreSQL introspection silently dropping sequence defaults when the database returns the schema-qualified form
pg_catalog.nextval('sequence_name'::regclass)instead of the barenextval(...). Columns backed by sequences now correctly appear as@default(autoincrement())in the Prisma schema in all cases. (prisma/prisma-engines#5802)
Driver Adapters
- @prisma/adapter-d1: Savepoint operations (
createSavepoint,rollbackToSavepoint,releaseSavepoint) now silently no-op with debug logging instead of executing SQL statements, consistent with how the D1 adapter already treats top-level transactions. (#29499)
Open roles at Prisma
Interested in joining Prisma? We're growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our Careers page and find the role that's right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.7.0
Today, we are excited to share the 7.7.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
prisma bootstrap command
A new prisma bootstrap command (#29374, #29424) sequences the full Prisma Postgres setup into a single interactive flow. It detects the current project state and runs only the steps that are needed:
- Init or scaffold — In an empty directory, offers a choice of 10 starter templates (Next.js, Express, Hono, Fastify, Nuxt, SvelteKit, Remix, React Router 7, Astro, NestJS) from prisma-examples. In an existing project without a schema, runs
prisma init. - Link — Authenticates via the browser and connects to a Prisma Postgres database. Skips if already linked.
- Install dependencies — Detects the package manager and offers to install missing
@prisma/client,prisma, anddotenv. - Migrate — Runs
prisma migrate devif the schema contains models. - Generate — Runs
prisma generate. - Seed — Runs
prisma db seedif a seed script is configured.
Each side-effecting step prompts for confirmation. Re-running the command skips already-completed steps.
Basic usage
npx prisma@latest bootstrapWith a starter template
npx prisma@latest bootstrap --template nextjsNon-interactive (CI)
npx prisma@latest bootstrap --api-key "$PRISMA_API_KEY" --database "db_abc123"Open roles at Prisma
Interested in joining Prisma? We're growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our Careers page and find the role that's right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.6.0
Today, we are excited to share the 7.6.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
Features
CLI
- Added a
prisma postgres linkcommand that connects a local project to a Prisma Postgres database. This is the first command in a newprisma postgrescommand group for managing Prisma Postgres databases directly from the CLI. (#29352)
Driver Adapters
- @prisma/adapter-pg: Added a
statementNameGeneratoroption that accepts a custom prepared statement name generator to allow users to leveragepgstatement caching (#29395) - @prisma/adapter-pg: Added support for usage of connection strings directly in the constructor for improved ergonomics (#29287)
- @prisma/adapter-mariadb: Added a
useTextProtocoloption in the constructor to toggle between text and binary protocols (#29392)
Bug Fixes
Prisma Client
- Disabled caching of
createManyqueries to avoid cache bloat and potential Node.js crashes in bulk operations (#29382) - Made
NowGeneratorlazy to avoid synchronousnew Date()calls, fixing Next.js "dynamic usage" errors in cached components (#28724) - Fixed missing export of
Get<Model>GroupByPayloadtype in the newprisma-clientgenerator, making it accessible for TypeScript usage (#29346)
CLI
- Added streaming parsing with automatic fallback to handle Prisma schemas that produce extremely large intermediate strings (>500MB) that hit V8's string limits (#29377)
Driver Adapters
- @prisma/adapter-pg: Relaxed the
@types/pgversion constraint to^8.16.0for compatibility with newer PostgreSQL type definitions (#29390) - @prisma/adapter-pg: Corrected error handling for
ColumnNotFounderrors to correctly extract column names from both quoted and unquoted PostgreSQL error messages (#29307) - @prisma/adapter-mariadb: Modified the adapter to disable
mariadbstatement caching by default to address a reported leak (#29392)
Prisma Studio
We’re continuing our work to improve Prisma Studio with more features being added.
Dark Mode
Need we say more? You’ve all asked for it, and it’s back.
https://github.com/user-attachments/assets/214149dd-5dd3-4295-9fa3-0da3f8d28197
Copy as markdown
Now, you can copy one or more rows as either CSV or Markdown
Multi-cell editing
This is big one, something that folks have been asking for. Now, it’s possible to edit multiple cells while inspecting your database. If you make any changes, you’ll be prompted to either save or discard them. This makes manually adding new rows much easier to accomplish.
Back relations
If your data references another table, Prisma Studio now links to the related records, making it easy to inspect them. This makes traversing your database much simpler.
https://github.com/user-attachments/assets/4977a926-413b-495f-b651-b7554eefea04
Generative SQL with AI
If you need to inspect your database, instead of manually writing the SQL you may need, you can use natural language and AI to generate the appropriate SQL statements.
https://github.com/user-attachments/assets/e57c0afb-c3ed-471b-b55a-42395a134863
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our Careers page and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.5.0
Today, we are excited to share the 7.5.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
Features
Added support for nested transaction rollbacks via savepoints (#21678)
Adds support for nested transaction rollback behavior for SQL databases: if an outer transaction fails, the inner nested transaction is rolled back as well. Implements this by tracking transaction ID + nesting depth so Prisma can reuse an existing open transaction in the underlying engine, and it also enables using
$transactionfrom an interactive transaction client.
Bug fixes
Driver Adapters
- Made the
adapter-mariadbuse the binary MySQL protocol to fix an issue with lossy number conversions (#29285) - Made
@types/pga direct dependency ofadapter-pgfor better TypeScript experience out-of-the-box (#29277)
Prisma Client
- Resolved
Prisma.DbNullserializing as empty object in some bundled environments like Next.js (#29286) - Fixed DateTime fields returning
Invalid Datewithunixepoch-mstimestamps in some cases (#29274) - Fixed a cursor-based pagination issue with
@db.Datecolumns (#29327)
Schema Engine
- Manual partial indexes are now preserved when
partialIndexespreview feature is disabled, preventing unnecessary drops and additions in migrations (#5790, #5795) - Enhanced partial index predicate comparison to handle quoted vs unquoted identifiers correctly, eliminating needless recreate cycles (#5788)
- Excluded partial unique indexes from DMMF
uniqueFieldsanduniqueIndexesto prevent incorrectfindUniqueinput type generation (#5792)
Studio
With the launch of Prisma ORM v7, we also introduced a rebuilt version of Prisma Studio. With the feedback we’ve gathered since the release, we’ve added some high requested features to help make Studio a better experience.
Multi-cell Selection & Full Table Search
This release brings the ability to select multiple cells when viewing your database. In addition to being able to select multiple cells, you can also search across your database. You can search for a specific table or for specific cells within that table.
More intuitive filtering
Filtering is now easier to use, and includes an option for raw SQL filters.
And if you are using Studio in Console, you can use ai generated filters:
Cmd+k Command Palette
You can now use the keyboard to perform most actions in Studio with the new cmd+k command palette
Run raw SQL queries
Another feature we’ve included in Prisma Studio is the ability to run raw SQL queries against your data. There’s a new “SQL” tab in the sidebar that will bring you to page where you can perform any queries against your data. Below, we’re getting all the rows in the “Todo” table.
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our [Careers page](https://www.prisma.io/careers#current) and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.4.2
Today, we are issuing a 7.4.2 patch release focused on bug fixes and quality improvements.
🛠 Fixes
Prisma Client
- Fix a case-insensitive
INandNOT INfilter regression (#29243) - Fix a query plan mutation issue that resulted in broken cursor queries (#29262)
- Fix an array parameter wrapping issue in push operations (prisma/prisma-engines#5784)
- Fix
Uint8Arrayserialization in nested JSON fields (#29268) - Fix an issue with MySQL joins that relied on non-strict equality (#29251)
Driver Adapters
- @prisma/adapter-mariadb: Update text column detection to check for a binary collation (#29238)
- @prisma/adapter-mariadb: Correct
relationJoinscompatibility check for MariaDB 8.x versions (#29246)
Schema Engine
- Fix partial index predicate comparison on PostgreSQL and MSSQL (prisma/prisma-engines#5780)
🙏 Huge thanks to our community
Many of the fixes in this release were contributed by our amazing community members. We're grateful for your continued support and contributions that help make Prisma better for everyone!
v7.4.1
Today, we are issuing a 7.4.1 patch release focused on bug fixes and quality improvements.
🛠 Fixes
Prisma Client
- Fix cursor-based pagination regression with parameterised values (#29184)
- Preserve
Prisma.skipthrough query extension argument cloning (#29198) - Enable batching of multiple queries inside interactive transactions (#25571)
- Add missing JSON value deserialization for JSONB parameter fields (#29182)
- Apply result extensions correctly for nested and fluent relations (#29218)
- Allow missing config datasource URL and validate only when needed (prisma/prisma-engines#5777)
Driver Adapters
- @prisma/adapter-ppg: Handle null values in type parsers for nullable columns (#29192)
Prisma Schema Language
- Support
whereargument on field-level@uniquefor partial indexes (prisma/prisma-engines#5774) - Add object expression and object member support to schema reformatter (prisma/prisma-engines#5776)
🙏 Huge thanks to our community
Many of the fixes in this release were contributed by our amazing community members. We're grateful for your continued support and contributions that help make Prisma better for everyone!
v7.4.0
Today, we are excited to share the 7.4.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
Caching in Prisma Client
Today’s release is a big one, as we introduce a new caching layer into Prisma ORM. But why the need for a caching layer?
In Prisma 7, the query compiler runs as a WebAssembly module directly on the JavaScript main thread. While this simplified the architecture by eliminating the separate engine process, it introduced a trade-off: every query now synchronously blocks the event loop during compilation.
For individual queries, compilation takes between 0.1ms and 1ms, which is barely noticeable in isolation. But under high concurrency this overhead adds up and creates event loop contention that affects overall application throughput.
For instance, say we have a query that is run over and over, but is a similar shape:
// These two queries have the same shape:
const alice = await prisma.user.findUnique({ where: { email: 'alice@prisma.io' } })
const bob = await prisma.user.findUnique({ where: { email: 'bob@prisma.io' } })Prior to v7.4.0, this would be reevaluated ever time the query is run. Now, Prisma Client will extract the user-provided values and replaces them with typed placeholders, producing a normalized query shape:
prisma.user.findUnique({ where: { email: %1 } }) // cache key
↑
%1 = 'alice@prisma.io' (or 'bob@prisma.io')This normalized shape is used as a cache key. On the first call, the query is compiled as usual and the resulting plan is stored in an LRU cache. On every subsequent call with the same query shape, regardless of the actual values, the cached plan is reused instantly without invoking the compiler.
We have more details on the impact of this change and some deep dives into Prisma architecture in an upcoming blog post!
Partial Indexes (Filtered Indexes) Support
We're excited to announce Partial Indexes support in Prisma! This powerful community-contributed feature allows you to create indexes that only include rows matching specific conditions, significantly reducing index size and improving query performance.
Partial indexes are available behind the partialIndexes preview feature for PostgreSQL, SQLite, SQL Server, and CockroachDB, with full migration and introspection support.
Basic usage
Enable the preview feature in your schema:
generator client {
provider = "prisma-client-js"
previewFeatures = ["partialIndexes"]
}Raw SQL syntax
For maximum flexibility, use the raw() function with database-specific predicates:
model User {
id Int @id
email String
status String
@@unique([email], where: raw("status = 'active'"))
@@index([email], where: raw("deletedAt IS NULL"))
}Type-safe object syntax
For better type safety, use the object literal syntax for simple conditions:
model Post {
id Int @id
title String
published Boolean
@@index([title], where: { published: true })
@@unique([title], where: { published: { not: false } })
}Bug Fixes
Most of these fixes are community contributions - thank you to our amazing contributors!
- prisma/prisma-engines#5767: Fixed an issue with PostgreSQL migration scripts that prevented usage of
CREATE INDEX CONCURRENTLYin migrations - prisma/prisma-engines#5752: Fixed BigInt precision loss in JSON aggregation for MySQL and CockroachDB by casting BigInt values to text (from community member polaz)
- prisma/prisma-engines#5750: Fixed connection failures with non-ASCII database names by properly URL-decoding database names in connection strings
- #29155: Fixed silent transaction commit errors in PlanetScale adapter by ensuring COMMIT failures are properly propagated
- #29141: Resolved race condition errors (EREQINPROG) in SQL Server adapter by serializing commit/rollback operations using mutex synchronization
- #29158: Fixed MSSQL connection string parsing to properly handle curly brace escaping for passwords containing special characters
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our Careers page and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.3.0
Today, we are excited to share the 7.3.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
ORM
- #28976: Fast and Small Query Compilers
We've been working on various performance-related bugs since the initial ORM 7.0 release. With 7.3.0, we're introducing a new
compilerBuildoption for the client generator block inschema.prismawith two options:fastandsmall. This allows you to swap the underlying Query Compiler engine based on your selection, one built for speed (with an increase in size), and one built for size (with the trade off for speed). By default, thefastmode is used, but this can be set by the user:
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
compilerBuild = "fast" // "fast" | "small"
}We still have more in progress for performance, but this new compilerBuild option is our first step toward addressing your concerns!
#29005: Bypass the Query Compiler for Raw Queries Raw queries (
$executeRaw,$queryRaw) can now skip going through the query compiler and query interpreter infrastructure. They can be sent directly to the driver adapter, removing additional overhead.#28965: Update MSSQL to v12.2.0 This community PR updates the
@prisma/adapter-mssqlto use MSSQL v12.2.0. Thanks Jay-Lokhande!#29001: Pin better-sqlite3 version to avoid SQLite bug An underlying bug in SQLite 3.51.0 has affected the
better-sqlite3adapter. We’ve bumped the version that powers@prisma/better-sqlite3and have pinned the version to prevent any unexpected issues. If you are using@prisma/better-sqlite3, please upgrade to v7.3.0.#29002: Revert
@mapenums to v6.19.0 behavior In the initial release of v7.0, we made a change with Mapped Enums where the generated enum would get its value from the value passed to the@mapfunction. This was a breaking change from v6 that caused issues for many users. We have reverted this change for the time being, as many different diverging approaches have emerged from the community discussion.prisma-engines#5745: Cast BigInt to text in JSON aggregation When using
relationJoinswith BigInt fields in Prisma 7, JavaScript'sJSON.parseloses precision for integers larger thanNumber.MAX_SAFE_INTEGER(2^53 - 1). This happens because PostgreSQL'sJSONB_BUILD_OBJECTreturns BigInt values as JSON numbers, which JavaScript cannot represent precisely.// Original BigInt ID: 312590077454712834 // After JSON.parse: 312590077454712830 (corrupted!)This PR cast BigInt columns to
::textinsideJSONB_BUILD_OBJECTcalls, similar to howMONEYis already cast to::numeric.-- Before JSONB_BUILD_OBJECT('id', "id") -- After JSONB_BUILD_OBJECT('id', "id"::text)
This ensures BigInt values are returned as JSON strings, preserving full precision when parsed in JavaScript.
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our [Careers page](https://www.prisma.io/careers#current) and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.2.0
Today, we are excited to share the 7.2.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
- #28830: feat: add
sqlcommenter-query-insightsplugin- Adds a new SQL commenter plugin to support query insights metadata.
- #28860: feat(migrate): add
-urlparam fordb pull,db push,migrate dev- Adds a
-urlflag to key migrate commands to make connection configuration more flexible.
- Adds a
- #28895: feat(config): allow undefined URLs in e.g.
prisma generate- Allows certain workflows (such as
prisma generate) to proceed even when URLs are undefined.
- Allows certain workflows (such as
- #28903: feat(cli): customize
prisma initbased on the JS runtime (Bun vs others)- Makes
prisma inittailor generated setup depending on whether the runtime is Bun or another JavaScript runtime.
- Makes
- #28846: fix(client-engine-runtime): make
DataMapperErroraUserFacingError- Ensures
DataMapperErroris surfaced as a user-facing error for clearer, more actionable error reporting.
- Ensures
- #28849: fix(adapter-{pg,neon,ppg}): handle 22P02 error in Postgres
- Improves Postgres adapter error handling for invalid-text-representation errors (
22P02).
- Improves Postgres adapter error handling for invalid-text-representation errors (
- #28913: fix: fix byte upserts by removing legacy byte array representation
- Fixes byte upsert behavior by removing a legacy byte-array representation path.
- #28535: fix(client,internals,migrate,generator-helper): handle multibyte UTF-8 characters split across chunk boundaries in byline
- Prevents issues when multibyte UTF-8 characters are split across chunk boundaries during line processing.
- #28911: fix(cli): make
prisma version --jsonemit JSON only to stdout- Ensures machine-readable JSON output is emitted cleanly to stdout without extra noise.
VS Code Extension
- #1950: fix: TML-1670 studio connections
- Resolves issues related to Studio connections, improving reliability for VS Code or language-server integrations.
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our [Careers page](https://www.prisma.io/careers#current) and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.1.0
Today, we are excited to share the 7.1.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
This release brings quality of life improvements and fixes various bugs.
Prisma ORM
#28735: pnpm monorepo issues with prisma client runtime utils Resolves issues in pnpm monorepos where users would report TypeScript issues related to
@prisma/client-runtime-utils.#28769: implement sql commenter plugins for Prisma Client This PR implements support for SQL commenter plugins to Prisma Client. The feature will allow users to add metadata to SQL queries as comments following the sqlcommenter format.
Here’s two related PRs that were also merged:
#28737: added error message when constructing client without configs This commit adds an additional error message when trying to create a new PrismaClient instance without any arguments. Thanks to @xio84 for this community contribution!
#28820: mark
@opentelemetry/apias external in instrumentation Ensures@opentelemetry/apiis treated as an external dependency rather than bundled. Since it is a peer dependency, this prevents applications from ending up with duplicate copies of the package.#28694: allow
env()helper to accept interface-based generics Updates theenv()helper’s type definition so it works with interfaces as well as type aliases. This removes the previous constraint requiring an index signature and resolves TS2344 errors when using interface-based env types. Runtime behavior is unchanged. Thanks to @SaubhagyaAnubhav for this community contribution!
Read Replicas extension
#53: Add support for Prisma 7 Users of the read-replicas extension can now use the extension in Prisma v7. You can update by installing:
npm install @prisma/extension-read-replicas@latestFor folks still on Prisma v6, install version
0.4.1:npm install @prisma/extension-read-replicas@0.4.1
For more information, visit the repo
SQL comments
We're excited to announce SQL Comments support in Prisma 7.1.0! This new feature allows you to append metadata to your SQL queries as comments, making it easier to correlate queries with application context for improved observability, debugging, and tracing.
SQL comments follow the sqlcommenter format developed by Google, which is widely supported by database monitoring tools. With this feature, your SQL queries can include rich metadata:
SELECT "id", "name" FROM "User" /*application='my-app',traceparent='00-abc123...-01'*/Basic usage
Pass an array of SQL commenter plugins to the new comments option when creating a PrismaClient instance:
import { PrismaClient } from './generated/prisma/client';
import { PrismaPg } from '@prisma/adapter-pg';
import { queryTags } from '@prisma/sqlcommenter-query-tags';
import { traceContext } from '@prisma/sqlcommenter-trace-context';
const adapter = new PrismaPg({
connectionString: `${process.env.DATABASE_URL}`,
});
const prisma = new PrismaClient({
adapter,
comments: [queryTags(), traceContext()],
});Query tags
The @prisma/sqlcommenter-query-tags package lets you add arbitrary tags to queries within an async context:
import { queryTags, withQueryTags } from '@prisma/sqlcommenter-query-tags';
const prisma = new PrismaClient({
adapter,
comments: [queryTags()],
});
// Wrap your queries to add tags
const users = await withQueryTags(
{ route: '/api/users', requestId: 'abc-123' },
() => prisma.user.findMany(),
);Resulting SQL:
SELECT ... FROM "User" /*requestId='abc-123',route='/api/users'*/Use withMergedQueryTags to merge tags with outer scopes:
import {
withQueryTags,
withMergedQueryTags,
} from '@prisma/sqlcommenter-query-tags';
await withQueryTags({ requestId: 'req-123', source: 'api' }, async () => {
await withMergedQueryTags(
{ userId: 'user-456', source: 'handler' },
async () => {
// Queries here have: requestId='req-123', userId='user-456', source='handler'
await prisma.user.findMany();
},
);
});Trace context
The @prisma/sqlcommenter-trace-context package adds W3C Trace Context (traceparent) headers for distributed tracing correlation:
import { traceContext } from '@prisma/sqlcommenter-trace-context';
const prisma = new PrismaClient({
adapter,
comments: [traceContext()],
});When tracing is enabled and the span is sampled:
SELECT * FROM "User" /*traceparent='00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01'*/Note: Requires @prisma/instrumentation to be configured. The traceparent is only added when tracing is active and the span is sampled.
Custom plugins
Create your own plugins to add custom metadata:
import type { SqlCommenterPlugin } from '@prisma/sqlcommenter';
const applicationTags: SqlCommenterPlugin = (context) => ({
application: 'my-service',
environment: process.env.NODE_ENV ?? 'development',
operation: context.query.action,
model: context.query.modelName,
});
const prisma = new PrismaClient({
adapter,
comments: [applicationTags],
});Framework integration
SQL comments work seamlessly with popular frameworks, e.g., Hono:
import { createMiddleware } from 'hono/factory';
import { withQueryTags } from '@prisma/sqlcommenter-query-tags';
app.use(
createMiddleware(async (c, next) => {
await withQueryTags(
{
route: c.req.path,
method: c.req.method,
requestId: c.req.header('x-request-id') ?? crypto.randomUUID(),
},
() => next(),
);
}),
);Additional framework examples for Express, Koa, Fastify, and NestJS are available in the documentation.
For complete documentation, see SQL Comments. We'd love to hear your feedback on this feature! Please open an issue on GitHub or join the discussion in our Discord community.
Open roles at Prisma
Interested in joining Prisma? We’re growing and have several exciting opportunities across the company for developers who are passionate about building with Prisma. Explore our open positions on our Careers page and find the role that’s right for you.
Enterprise support
Thousands of teams use Prisma and many of them already tap into our Enterprise & Agency Support Program for hands-on help with everything from schema integrations and performance tuning to security and compliance.
With this program you also get priority issue triage and bug fixes, expert scalability advice, and custom training so that your Prisma-powered apps stay rock-solid at any scale. Learn more or join: https://prisma.io/enterprise.
v7.0.1
Today, we are issuing a 7.0.1 patch release focused on quality of life improvements, and bug fixes.
🛠 Fixes
Prisma Studio:
- Support Deno >= 1.4 <2.2 and Bun >= 1 (via #28583)
- Fix collisions between user and internal Studio columns when querying (via #28677)
- Warn when SQLite file doesn't exist (via https://redirect.github.com/prisma/prisma/pull/28711/commits/c33a1ea9e5a94e6a5c876bc4567915cc5f354658)
- Fix prisma/studio#1363 (via https://redirect.github.com/prisma/prisma/pull/28711/commits/07224d4651d043f4b08735eeaa144aa9d75f9fe3)
- Sort tables alphabetically (via #28702)
Prisma CLI
- Fix potential vulnerabilities in installed dependencies (via #28592)
- Fix #28240, an exit code regression affecting
prisma migrate diff(via prisma/prisma-engines#5699) - Show informative message when
prisma db seedis run, but nomigrations.seedcommand is specified in the Prisma config file (via #28711) - Relax
enginescheck inpackage.json, to let Node.js 25+ users adopt Prisma, although Node.js 25+ isn't considered stable yet (via #28600). Thanks @Sajito!
Prisma Client
- Restore
cockroachdbsupport inprisma-client-jsgenerator, after it was accidentally not shipped in Prisma 7.0.0 (via #28690)
- Restore
v7.0.0
Today, we are excited to share the 7.0.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — and follow us on X!
Highlights
Over the past year we focused on making it simpler and faster to build applications with Prisma, no matter what tools you use or where you deploy, with exceptional developer experience at it’s core. This release makes many features introduced over the past year as the new defaults moving forward.
Prisma ORM
Rust-free Prisma Client as the default
The Rust-free Prisma Client has been in the works for some time now, all the way back to v6.16.0, with early iterations being available for developers to adopt. Now with version 7.0, we’re making this the default for all new projects. With this, developers are able to get:
- ~90% smaller bundle sizes
- Up to 3x faster queries
- ESM-first Prisma Client
- Significantly simpler deployments
Adopting the new Rust-free client is as simple as swapping the prisma-client-js provider for prisma-client in your main schema.prisma :
// schema.prisma
generator client {
- provider = "prisma-client-js"
+ provider = "prisma-client"
}Generated Client and types move out of node_modules
When running prisma generate, the generated Client runtime and project types will now require a output path to be set in your project’s main schema.prisma. We recommend that they be generated inside of your project’s src directory to ensure that your existing tools are able to consume them like any other piece of code you might have.
// schema.prisma
generator client {
provider = "prisma-client"
// Generate my Client and Project types
output = "../src/generated/prisma"
}Update your code to import PrismaClient from this generated output:
// Import from the generated prisma client
import { PrismaClient } from './generated/prisma/client';For developers who still need to stay on the prisma-client-js but are using the new output option, theres’s a new required package, @prisma/client-runtime-utils , which needs to be installed:
# for prisma-client-js users only
npm install @prisma/client-runtime-utilsprisma generate changes and post-install hook removal
For prisma generate , we’ve removed a few flags that were no longer needed:
prisma generate --data-proxyprisma generate --accelerateprisma generate --no-engineprisma generate --allow-no-models
In previous releases, there was a post-install hook that we utilized to automatically generate your project’s Client and types. With modern package managers like pnpm, this actually has introduced more problems than it has solved. So we’ve removed this post-install hook and now require developers to explicitly call prisma generate .
As a part of those changes, we’ve also removed the implicit run of prisma db seed in-between migrate commands.
Prisma Client
As part of the move to a Rust-free Prisma Client, we moved away from embedding the drivers of the databases that we support. Now developers explicitly provide the driver adapters they need for their project, right in their source code. For PostgresSQL, simply install the @prisma/adapter-pg to your project, configure the connection string, and pass that the Prisma Client creation:
// Import from the generated prisma client
import { PrismaClient } from './generated/prisma/client';
// Driver Adapter for Postgres
import { PrismaPg } from '@prisma/adapter-pg';
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});
export const prisma = new PrismaClient({ adapter });For other databases:
// If using SQLite
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
const adapter = new PrismaBetterSqlite3({
url: process.env.DATABASE_URL || 'file:./dev.db'
})
// If using MySql
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
const adapter = new PrismaMariaDb({
host: "localhost",
port: 3306,
connectionLimit: 5
});We’ve also removed support for additional options when configuring your Prisma Client
new PrismaClient({ datasources: .. })support has been removednew PrismaClient({datasourceUrl: ..})support has been removed
Driver Adapter naming updates
We’ve standardized our naming conventions for the various driver adapters internally. The following driver adapters have been updated:
PrismaBetterSQLite3⇒PrismaBetterSqlite3PrismaD1HTTP⇒PrismaD1HttpPrismaLibSQL⇒PrismaLibSqlPrismaNeonHTTP⇒PrismaNeonHttp
Schema and config file updates
As part of a larger change in how the Prisma CLI reads your project configuration, we’ve updated what get’s set the schema, and what gets set in the prisma.config.ts . Also as part of this release, prisma.config.ts is now required for projects looking to perform introspection.
Schema changes
datasource.urlis now configured in the config filedatasource.shadowDatabaseUrlis now configured in the config filedatasource.directUrlhas been made unnecessary and has removedgenerator.runtime=”react-native”has been removed
For early adopters of the config file, a few things have been removed with this release
engine: 'js'| 'classic'has been removedadapterhas been removed
A brief before/after:
// schema.prisma
datasource db {
provider = "postgresql"
url = ".."
directUrl = ".."
shadowDatabaseUrl = ".."
}// ./prisma.config.ts
export default defineConfig({
datasource: {
url: '..',
shadowDatabaseUrl: '..',
}
})Explicit loading of environment variables
As part of the move to Prisma config, we’re no longer automatically loading environment variables when invoking the Prisma CLI. Instead, developers can utilize libraries like dotenv to manage their environment variables and load them as they need. This means you can have dedicated local environment variables or ones set only for production. This removes any accidental loading of environment variables while giving developers full control.
Removed support for prisma keyword in package.json
In previous releases, users could configure their schema entry point and seed script in a prisma block in the package.json of their project. With the move to prisma.config.ts, this no longer makes sense and has been removed. To migrate, use the Prisma config file instead:
{
"name": "my-project",
"version": "1.0.0",
"prisma": {
"schema": "./custom-path-to-schema/schema.prisma",
"seed": "tsx ./prisma/seed.ts"
}
}import 'dotenv/config'
import { defineConfig, env } from "prisma/config";
export default defineConfig({
schema: "prisma/schema.prisma",
migrations: {
seed: "tsx prisma/seed.ts"
},
datasource: {...},
});Removed Client Engines:
We’ve removed the following client engines:
LibraryEngine(engineType = "library", the Node-API Client)BinaryEngine(engineType = "binary", the long-running executable binary)DataProxyEngineandAccelerateEngine(Accelerate uses a newRemoteExecutornow)ReactNativeEngine
Deprecated metrics feature has been removed
We deprecated the previewFeature metrics some time ago, and have removed it fully for version 7. If you need metrics related data available, you can use the underlying driver adapter itself, like the Pool metric from the Postgres driver.
Miscellaneous
- #28493: Stop shimming
WeakRefin Cloudflare Workers. This will now avoid any unexpected memory leaks. - #28297: Remove hardcoded URL validation. Users are now required to make sure they don’t include sensitive information in their config files.
- #28273: Removed Prisma v1 detection
- #28343: Remove undocumented
--urlflag fromprisma db pull - #28286: Remove deprecated
prisma introspectcommand. - #28480: Rename
/wasmto/edge- This change only affects
prisma-client-js - Before:
/edge→ meant “for Prisma Accelerate”/wasm→ meant “for Edge JS runtimes (e.g., Cloudflare, Vercel Edge)”
- After:
/edge→ means “for Edge JS runtimes (e.g., Cloudflare, Vercel Edge)”
- This change only affects
- The following Prisma-specific environment variables have been removed
- `PRISMA_CLI_QUERY
✂ Note
PR body was truncated to here.
Configuration
📅 Schedule: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
- If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.