What changed in Prisma from 6 to 7
10 releases numbered after 6.19.3 up to and including 7.10.0, stable releases only. 6.19.3 and 7.10.0 are the newest stable releases of 6 and 7 we track; this page follows them as new ones ship.
- 1 removes or deprecates something
96 changes across 10 releases
- Introduce @prisma/prisma7 compatibility package to run Prisma 7 alongside Prisma 8 in the same project
- Support prisma7.config.* configuration files for Prisma 7 that coexist with Prisma 8's prisma.config.* files
- Add prisma7 CLI command for version-specific Prisma 7 operations
- Result-extension compute callbacks now receive the current model name as a typed second argument
- Shell tab completions for bash, zsh, fish, and PowerShell covering Prisma CLI commands, subcommands, options, flags, and option values
- Prisma agent skills catalog installed automatically with prisma init for AI agents like Claude Code, Cursor, Codex, and Windsurf
- Add a queryPlanCacheMaxSize option to the PrismaClient constructor for fine-grained control over the query plan cache
- Add `prisma bootstrap` command that sequences the full Prisma Postgres setup into a single interactive flow, including init or scaffold, link, install dependencies, migrate, generate, and seed steps
- Added a `prisma postgres link` command that connects a local project to a Prisma Postgres database
- Added a `statementNameGenerator` option to @prisma/adapter-pg that accepts a custom prepared statement name generator for pg statement caching
- Added support for usage of connection strings directly in the @prisma/adapter-pg constructor
- Added a `useTextProtocol` option in @prisma/adapter-mariadb constructor to toggle between text and binary protocols
- Added dark mode to Prisma Studio
- Added ability to copy one or more rows as CSV or Markdown in Prisma Studio
- Added multi-cell editing capability to Prisma Studio for editing multiple cells while inspecting your database
- Added back relations in Prisma Studio that link to related records in other tables
- Added generative SQL with AI in Prisma Studio to generate SQL statements from natural language
- Support for nested transaction rollbacks via savepoints for SQL databases
- Multi-cell selection and full table search in Prisma Studio
- Cmd+k command palette in Prisma Studio for keyboard-based navigation
- Ability to run raw SQL queries against data in Prisma Studio
- Support where argument on field-level @unique for partial indexes
- Introduce caching layer in Prisma Client that normalizes query shapes and caches compiled query plans in an LRU cache to reduce event loop contention under high concurrency
- Add Partial Indexes (Filtered Indexes) support for PostgreSQL, SQLite, SQL Server, and CockroachDB behind the partialIndexes preview feature, allowing indexes that only include rows matching specific conditions
- Support type-safe object syntax for partial index conditions using simple condition literals and filters
- Support raw SQL syntax for partial indexes using the raw() function with database-specific predicates
- Broadened AI agent detection to cover Codex CLI, Qwen Code, GitHub Copilot CLI, OpenCode, Cline, Goose, Amp, Crush, Augment Code, Antigravity, Replit Agent, Devin, and generic AI_AGENT and AGENT environment variables
- Extended the AI safety checkpoint guard to db push --accept-data-loss to prevent destructive commands when an AI agent is detected
- Make @prisma/adapter-d1 savepoint operations (createSavepoint, rollbackToSavepoint, releaseSavepoint) silently no-op with debug logging instead of executing SQL statements
- Modified @prisma/adapter-mariadb to disable mariadb statement caching by default to address a reported leak
- Made adapter-mariadb use the binary MySQL protocol to fix lossy number conversions
- Made @types/pg a direct dependency of adapter-pg for better TypeScript experience
- More intuitive filtering in Prisma Studio with option for raw SQL filters
- Add object expression and object member support to schema reformatter
- Fix P2002 errors from nested writes so meta.modelName identifies the model where the unique constraint violation occurred
- Fix automatically batched findUniqueOrThrow() calls so every missing record rejects with P2025
- Execute parameter-chunked statements atomically in a transaction and roll back if a later chunk fails
- Improve interactive transaction cleanup during $disconnect() including transactions whose driver-level startup is still in progress
- Prevent transaction cleanup failures after a timeout or backend termination from becoming unhandled promise rejections
- Fix fluent relation queries when relation fields are literally named select or include
- Fix handling of Date and Uint8Array values created in other JavaScript realms such as iframes jsdom and Node.js vm contexts
- Invalid Date values passed to $queryRaw or $executeRaw now throw PrismaClientValidationError instead of a generic error
- Fix moduleFormat inference for the prisma-client generator in TypeScript projects using module node16 or nodenext
- Deserialized Bytes values now own standalone ArrayBuffers rather than exposing unrelated contents from Node.js's shared Buffer pool
- Fix incorrect logging context in the remote executor including Accelerate-backed query execution
- Restored the OmitOpts generic default to fix a severe TypeScript performance regression in Prisma 7, bringing type-checking on large schemas from minutes back to seconds
- The XOR type helper now rejects primitive values such as data: 5 at compile time instead of only at runtime
- $queryRaw and $executeRaw now fail fast with a clear validation error when passed an invalid Date instead of silently serializing it as null
- Generated client is no longer corrupted by documentation comments containing */ sequences; comment terminators are now escaped in both TypeScript and JavaScript generators
- Improved runtime and TypeScript error messages when a driver adapter is missing from the PrismaClient constructor to include a copy-pasteable example and link to driver adapters documentation
- Fix an equality filter panic and incorrect ::jsonb cast when filtering on PostgreSQL JSON list columns
- Fix case-insensitive JSON field filtering (mode: insensitive) to work correctly with jsonField equality queries
- Fix incorrect parameterization of enum values that have a custom database name set via @map
- Fix a database parameter limit check (P2029) which could incorrectly reject or miss over-limit queries
- Fix a regression that caused missing SQL Server VARCHAR casts for parameterized values
- Fix a misleading error message in prisma migrate diff that referenced the --shadow-database-url CLI flag
- Fix prisma migrate dev failing with CREATE INDEX CONCURRENTLY cannot run inside a transaction block when a migration contained concurrent index creation statements on PostgreSQL
- Fix PostgreSQL introspection silently dropping sequence defaults when the database returns the schema-qualified form
- Disabled caching of `createMany` queries to avoid cache bloat and potential Node.js crashes in bulk operations
- Made `NowGenerator` lazy to avoid synchronous `new Date()` calls, fixing Next.js dynamic usage errors in cached components
- Fixed missing export of `Get<Model>GroupByPayload` type in the prisma-client generator
- Added streaming parsing with automatic fallback to handle Prisma schemas that produce extremely large intermediate strings exceeding V8's string limits
- Relaxed the @types/pg version constraint to ^8.16.0 in @prisma/adapter-pg for compatibility with newer PostgreSQL type definitions
- Corrected error handling for `ColumnNotFound` errors in @prisma/adapter-pg to correctly extract column names from both quoted and unquoted PostgreSQL error messages
- Prisma.DbNull serializing as empty object in bundled environments like Next.js
- DateTime fields returning Invalid Date with unixepoch-ms timestamps
- Cursor-based pagination issue with @db.Date columns
- Manual partial indexes are now preserved when partialIndexes preview feature is disabled
- Partial index predicate comparison to handle quoted vs unquoted identifiers correctly
- Excluded partial unique indexes from DMMF uniqueFields and uniqueIndexes to prevent incorrect findUnique input type generation
- Fix a case-insensitive IN and NOT IN filter regression
- Fix a query plan mutation issue that resulted in broken cursor queries
- Fix an array parameter wrapping issue in push operations
- Fix Uint8Array serialization in nested JSON fields
- Fix an issue with MySQL joins that relied on non-strict equality
- Update text column detection in @prisma/adapter-mariadb to check for a binary collation
- Correct relationJoins compatibility check in @prisma/adapter-mariadb for MariaDB 8.x versions
- Fix partial index predicate comparison on PostgreSQL and MSSQL
- Fix cursor-based pagination regression with parameterised values
- Preserve Prisma.skip through query extension argument cloning
- Enable batching of multiple queries inside interactive transactions
- Add missing JSON value deserialization for JSONB parameter fields
- Apply result extensions correctly for nested and fluent relations
- Allow missing config datasource URL and validate only when needed
- Handle null values in type parsers for nullable columns in @prisma/adapter-ppg
- Fix PostgreSQL migration scripts to support CREATE INDEX CONCURRENTLY in migrations
- Fix BigInt precision loss in JSON aggregation for MySQL and CockroachDB by casting BigInt values to text
- Fix connection failures with non-ASCII database names by properly URL-decoding database names in connection strings
- Fix silent transaction commit errors in PlanetScale adapter by ensuring COMMIT failures are properly propagated
- Fix race condition errors (EREQINPROG) in SQL Server adapter by serializing commit and rollback operations using mutex synchronization
- Fix MSSQL connection string parsing to properly handle curly brace escaping for passwords containing special characters
- Removed the migrate-reset tool from the prisma mcp server
- Bind Prisma Studio's local HTTP server explicitly to 127.0.0.1 instead of all network interfaces
- Reject browser requests to Prisma Studio from origins other than the active localhost or 127.0.0.1 Studio URL
- Remove wildcard CORS headers from Prisma Studio and apply the same protections across Node.js Bun and Deno
- Resolved a security advisory in a transitive dependency of Prisma CLI
Original release notes, newest first
The list above is our reading of these notes; the originals from Prisma are here, one fold per release.
7.10.0
Prisma ORM 7.10.0
Prisma ORM 7.10.0 introduces a compatibility package for running Prisma 7 alongside newer Prisma versions, secures Prisma Studio's local server, and includes fixes across Prisma Client and the PostgreSQL, MariaDB, Neon, SQLite, and Prisma Postgres Serverless adapters.
Highlights
Run Prisma 7 alongside Prisma 8
This release introduces @prisma/prisma7, a compatibility package that lets you retain a matching Prisma 7 CLI and configuration while installing Prisma 8 in the same project.
Once 7.10.0 is released, a side-by-side installation can use:
npm install --save-dev prisma@8 @prisma/prisma7@7.10.0
npm install @prisma/client@7.10.0
Use prisma for the directly installed Prisma 8 CLI and prisma7 for Prisma 7:
npx prisma --version
npx prisma7 --version
npx prisma7 generate
npx prisma7 migrate dev
npx prisma7 db push
Prisma 7 now prefers version-specific configuration files, allowing its configuration to coexist with Prisma 8's prisma.config.* files:
// prisma7.config.ts
import { defineConfig } from '@prisma/prisma7/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
})
Without an explicit --config option, Prisma 7 searches for:
- Root-level
prisma7.config.*files. .config/prisma7.*files.- Existing
prisma.config.*files as a backwards-compatible fallback.
The supported extensions are .js, .ts, .mjs, .cjs, .mts, and .cts. An explicit config path always takes precedence:
npx prisma7 generate --config ./custom/prisma7.config.ts
New projects initialized by the Prisma 7 CLI use prisma7.config.ts. Existing projects containing only prisma.config.* continue to work without migration or additional warnings. If a prisma7.config.* file exists but cannot be loaded, Prisma reports the error rather than silently falling back to another configuration.
The prisma7 identity is carried through CLI help, version output, shell completion, initialization, migration, database, and generation guidance. Stable Prisma concepts such as schema.prisma, Prisma Migrate, @prisma/client, and PRISMA_* environment variables remain unchanged.
Together, the separate executable and configuration namespace make it possible to operate Prisma 7 and Prisma 8 side by side without command or config-file collisions.
#29949, #29969, #29994, #30000, #30002, #30020
Prisma Studio security hardening
Prisma Studio's local HTTP server now:
- Binds explicitly to
127.0.0.1instead of all network interfaces. - Rejects browser requests from origins other than the active
localhostor127.0.0.1Studio URL. - No longer returns wildcard CORS headers.
- Applies the same protections across Node.js, Bun, and Deno.
This prevents network clients or malicious websites from accessing Studio's database endpoints while Studio is running.
Prisma Client
- Fixed
P2002errors from nested writes someta.modelNameidentifies the model where the unique constraint violation occurred, including models using@@mapand@@schema. #29628 - Fixed automatically batched
findUniqueOrThrow()calls so every missing record rejects withP2025; later misses no longer resolve toundefined. #29654 - Parameter-chunked statements are now executed atomically in a transaction and rolled back if a later chunk fails. #29771
- Improved interactive transaction cleanup during
$disconnect(), including transactions whose driver-level startup is still in progress. #28768 - Prevented transaction cleanup failures after a timeout or backend termination from becoming unhandled promise rejections. #29611
- Fixed fluent relation queries when relation fields are literally named
selectorinclude. #29683 - Fixed handling of
DateandUint8Arrayvalues created in other JavaScript realms, such as iframes, jsdom, and Node.jsvmcontexts. #29177 - Invalid
Datevalues passed to$queryRawor$executeRawnow throwPrismaClientValidationErrorinstead of a generic error. #29718 - Fixed
moduleFormatinference for theprisma-clientgenerator in TypeScript projects usingmodule: "node16"or"nodenext". Generated output now follows the nearestpackage.jsontype, defaulting to CommonJS when absent. #29712 - Deserialized
Bytesvalues now own standaloneArrayBuffers rather than exposing unrelated contents from Node.js's sharedBufferpool. This applies to both regular and raw query results. #29701 - Fixed an incorrect logging context in the remote executor, including Accelerate-backed query execution. #28892
Client extensions and observability
-
Result-extension
computecallbacks now receive the current model name as a typed second argument:compute(data, modelName) { // ... }The model name is also preserved when multiple extensions compose the same computed field. #29782
-
Improved OpenTelemetry context for remotely executed queries:
$on('query')callbacks run within the matchingdb_queryspan.- Events from one operation share the same trace.
- Error events are recorded as span exceptions.
- Log events continue to be emitted when tracing is disabled or their reported span is unavailable.
Driver adapters
MariaDB
@prisma/adapter-mariadbnow accepts an existingmariadbpool. External pools remain caller-owned unlessdisposeExternalPool: trueis supplied. #27992- Fixed pooled connection leaks during commit, rollback, and failed transaction startup. Connections are now returned with
release()and transaction-specific listeners are removed before reuse. #29612 - Added support for bracketed IPv6 addresses in both
mysql://andmariadb://connection strings. #29026 - Prevented malformed connection strings from exposing embedded passwords in retained debug output and diagnostic reports. #27992
PostgreSQL, Neon, and Prisma Postgres Serverless
- PostgreSQL deadlocks using SQLSTATE
40P01are now reported asP2034transaction write conflicts. #29717 - PostgreSQL
RESTRICTviolations using SQLSTATE23001are now reported asP2003, preserving an available field or constraint name. #29554 @prisma/adapter-pgnow preserves database constraint names when reporting unique constraint violations throughP2002. #29587- Prisma Postgres Serverless now prefers the named constraint for
P2002, falling back to parsed field names when no constraint name is available. #29801 - Fixed Neon HTTP adapter serialization for typed parameters such as
BytesandDateTime. #29747
SQLite
@prisma/adapter-better-sqlite3now converts previously unhandled SQLite result codes into typed database errors instead of exposing raw driver errors.- The complete
SQLITE_BUSYfamily is now mapped to socket timeout errors, with numeric extended result codes preserved where available.
CLI and Migrate
-
prisma generatecan now offer to install Prisma's agent skills. The opt-in prompt:- Is shown at most once per machine.
- Is skipped in CI, containers, Git hooks, npm lifecycle scripts, and watch mode.
- Is skipped when
--no-hintsis used or Prisma skills are already installed. - Times out after 30 seconds.
- Never causes generation to fail if installation is unsuccessful.
-
A globally installed CLI now warns during
prisma generatewhen its version differs from the project's localprismaor@prisma/client, and recommends running the local CLI. The check is best-effort and does not fail generation. #29593 -
prisma versionandprisma version --jsonnow include the resolved Prisma CLI package path, making global-versus-local installation issues easier to diagnose. #29573 -
Empty or generator-only schema files now report
Schema must contain a datasource blockfromdb pull,db push, andmigrate dev, rather than reaching the schema engine and potentially producing inconsistent errors. #29657 -
CLI commands now tolerate corrupt, unreadable, or unwritable command-state files. Invalid state is reinitialized, writes are atomic, and persistence failures fall back to in-memory state. #29609
-
Studio now recognizes semicolon-delimited
sqlserver://connection strings before reporting the existing explicit message that SQL Server is not supported by Studio. #29623 -
The AI-agent safety checkpoint now also covers interactive
prisma db pushconfirmations involving data-loss warnings, rather than only invocations using--accept-data-loss. #29793
Performance and reliability
- Optimized query-plan execution by eagerly evaluating plans with one unconditional database operation and synchronously interpreting the remaining pure plan. Cached plans remain immutable. #29004
- Prevented call-stack overflows when rendering very large parameter lists or combining chunked results containing hundreds of thousands of rows. #29751
- Reduced ordinary query setup overhead by constructing fluent-relation field maps lazily and in linear time. Non-fluent queries no longer build this map. #29752
Dependencies
- Updated the transitive
fast-uridependency to a patched release addressing production audit advisories affecting versions through3.1.3. #29758
7.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 https://github.com/prisma/prisma/issues/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.
7.9.0
Today, we are excited to share the 7.9.0 stable release 🎉
🌟 Star this repo for notifications about new releases, bug fixes & features — or follow us on X!
Highlights
ORM
Tab completions for the Prisma CLI
Typing out CLI commands from memory is now optional. Prisma ships shell tab completions for bash, zsh, fish, and PowerShell, covering commands, subcommands, options, flags, and even option values.
Setting it up. Most projects run Prisma through a package manager, so completions are enabled through @bomb.sh/tab's package-manager integration — install it once, then source the completion for your package manager and shell:
# 1. Install @bomb.sh/tab globally
npm install -g @bomb.sh/tab
# 2. Wire up your package manager + shell (pnpm shown; swap in npm / yarn / bun):
echo 'source <(tab pnpm zsh)' >> ~/.zshrc # zsh
echo 'source <(tab pnpm bash)' >> ~/.bashrc # bash
tab pnpm fish > ~/.config/fish/completions/pnpm.fish # fish
tab pnpm powershell > ~/.tab-pnpm.ps1 # PowerShell (then dot-source it from $PROFILE)
@bomb.sh/tab delegates to any locally-installed CLI that ships completions, so pnpm prisma <TAB>, pnpm exec prisma <TAB>, yarn prisma <TAB>, and bun x prisma <TAB> all complete Prisma's commands, options, and values — no per-project setup. (npx and bunx don't support completion themselves; use npm exec and bun x.)
If instead you have Prisma installed globally on your PATH, source its own completion directly: source <(prisma complete zsh) (or the bash / fish / powershell variant).
This is built on @bomb.sh/tab, the same completion library that powers other CLIs in the ecosystem — including Cloudflare, Nuxt, and Vitest — so the package-manager completions you enable for Prisma work for those tools too. A wonderful community contribution from @AmirSa12 (#28351) — thank you!
https://github.com/user-attachments/assets/1f916a60-ee4d-40be-bb7d-74035d48ca83
Prisma ORM, ready for AI agents
Coding agents are now a first-class audience for Prisma, and 7.9.0 brings the first wave of work to make Prisma projects safe and productive for them to work in.
Agent skills installed with prisma init (#29689)
prisma init now installs the prisma/skills catalog into freshly scaffolded projects. Agents such as Claude Code, Cursor, Codex, and Windsurf start out with current, version-relevant Prisma knowledge instead of relying on whatever happened to be in their training data. The install is best-effort and never blocks scaffolding; opt out at any time with --no-skills.
npx prisma@latest init
prisma init scaffolds a project and installs the Prisma agent skills catalog
A safer default around destructive commands (#29684, #29691, #29713)
Prisma's AI safety checkpoint refuses to run destructive commands when it detects that an AI agent is at the keyboard, unless the user has given explicit consent. In this release we:
- Broadened agent detection to cover today's landscape — Codex CLI (now on Linux as well as macOS), Qwen Code, GitHub Copilot CLI, OpenCode, Cline, Goose, Amp, Crush, Augment Code, Antigravity, Replit Agent, and Devin — plus generic
AI_AGENT/AGENTconventions so future agents are caught without a code change. - Extended the guard to
db push --accept-data-loss, which previously bypassed the checkpoint even though it can drop data. - Removed the
migrate-resettool from theprisma mcpserver entirely — resetting a database drops it, and that is not an operation an agent should be handed as a first-class tool. An agent that needs a reset must run the CLI, where the checkpoint applies.
Bug Fixes
Many of the fixes below are community contributions — thank you to everyone who reported and fixed these!
Prisma Client
- Fixed a severe TypeScript performance regression introduced in Prisma 7: restoring the
OmitOptsgeneric default letstscreuse cached type instantiations again, bringing type-checking on large schemas back from minutes to seconds (#29592, from @nfl1ryxditimo12). - The
XORtype helper now rejects primitive values such asdata: 5, which were previously accepted at compile time even though the runtime rejected them (#29735, from @kyungseopk1m). $queryRawand$executeRawnow fail fast with a clear validation error when passed an invalidDate, instead of silently serializing it asnulland corrupting the value sent to the database (#29697, from @jibin7jose).- The generated client is no longer corrupted by a
///documentation comment that contains a*/sequence; the comment terminator is now escaped when doc comments are emitted, in both the TypeScript and JavaScript generators (#29736, from @kyungseopk1m). - Improved the runtime and TypeScript error messages shown when a driver adapter is missing from the
PrismaClientconstructor; both now include a copy-pasteable example and a link to the driver adapters docs (#29624). - Unmapped database errors from driver adapters now surface as a user-facing
P2039(PrismaClientKnownRequestError) carrying the original code and message, instead of an opaque failure, which keeps schema-drift-style problems debuggable (#29512). - The
prisma-client-jsgenerator no longer emits a strayundefinedstatement when generating from a schema that declares only enums or types and no models (#29738, from @kyungseopk1m). - Fixed a connection leak when an interactive transaction times out (
maxWait) while it is still starting: the discarded transaction now sends an explicitROLLBACKbefore the connection is returned to the pool, instead of releasing it mid-transaction. Previously, on adapters like@prisma/adapter-pgand@prisma/adapter-neon, the next query to reuse that connection could fail withthere is already a transaction in progress— or silently commit the leaked transaction's work (#29727, from @lazerg).
CLI
prisma validate(and other schema-loading commands) no longer hangs forever on a multi-file schema whose directories contain a symlink cycle, and no longer reports the same file twice when a directory is reachable under two spellings (e.g./tmp→/private/tmpon macOS) (#29740, from @kyungseopk1m).- On Windows, engine binaries are now cached in a stable, user-level directory (
%APPDATA%\Prisma) instead of acwd-relativenode_modules\.cache, which eliminated duplicate cache directories and the bloated Serverless/Docker bundles they caused (#29730, from @santichausis; closes #22574, #6670, #11577).
Driver Adapters
- @prisma/adapter-pg, @prisma/adapter-neon, @prisma/adapter-ppg: Reading a
Bytescolumn no longer emits Node.js'DEP0005deprecation warning, thanks to an upstreampostgres-byteabump (#29538, from @kolia-zamnius). - @prisma/adapter-ppg:
ColumnNotFound(P2022) errors now parse both quoted and unquoted PostgreSQL column names, including identifiers containing spaces, matching the fix previously applied toadapter-pg(#29737, from @kyungseopk1m). - @prisma/adapter-mssql: Setting a
Bytes?(@db.VarBinary) field tonullno longer fails with an implicit-conversion error; the adapter now sends the parameter typed asVarBinaryinstead of letting SQL Server default it tonvarchar(#29630, from @AnupamKumar-1).
Schema Engine
prisma migrate statusnow reports a rolled-back migration that still exists on disk as unapplied, instead of incorrectly treating the schema as up to date (prisma/prisma-engines#5817, from @goutamadwant).- Primary-key constraint renames are now rendered as separate
ALTER TABLEstatements on PostgreSQL, avoiding a database error when a single table has multiple changes in one migration (prisma/prisma-engines#4906, from @eruditmorina).
Security
- Resolved the
honosecurity advisories at their source:@prisma/devwas updated to a version that no longer depends onhonoat all, so the CLI is no longer exposed to those advisories through that path. We also patched moderate-severity advisories inajvanduuidacross production dependencies (#29514). - Hardened the Prisma Platform credentials file (
~/.config/prisma-platform/auth.json) and its directory to0o600/0o700so OAuth tokens are no longer world-readable, bringing Prisma in line with the GitHub, AWS, and Google Cloud CLIs (#29568, from Jaeyoung Yun). - Bumped the
opensslcrate in the schema engine binaries from 0.10.74 to 0.10.81 (prisma/prisma-engines#5815).
Prisma Studio
The bundled Prisma Studio moves from 0.27.3 to 0.33.0 (#29720), gathering up everything shipped in the Studio releases in between.
Migrations view
Studio can now visualise your migration history. This view is powered by Prisma Next — the next major version of Prisma ORM, a full TypeScript rewrite (available now in Early Access) that keeps the schema-first workflow and model-first queries you know, but treats your schema as a versioned, inspectable contract instead of compiling it into a heavy generated client. Prisma Next records every migration and its contract snapshots in the database, and Studio reads them to draw the timeline and diff below. Databases managed with classic Prisma Migrate don't carry this ledger, so the view simply stays hidden there.
When the connected database has a Prisma Next migration ledger, a Migrations entry appears in the sidebar: a newest-first timeline of every applied migration with its name, apply time, operation count, and compact chips summarizing what changed (+2 models, ~2 models +3 fields, +1 model, …). Selecting a migration opens a visual, FigJam-style diff canvas — added, removed, and changed models as colour-coded cards (NEW / UPDATED / UNCHANGED) with per-field before → after details, enum cards, and relation edges — next to a SQL panel of the executed statements and a Prisma-schema line diff. Switching migrations morphs the canvas rather than rebuilding it.
The Studio Migrations view: walking a Prisma Next migration history, the diff canvas morphing between migrations
Prisma Streams browser
Studio gains first-class support for Prisma Streams: a dedicated stream browser, live stream aggregations, stream diagnostics, routing-key browsing, and a WAL-history handoff straight from your tables, plus richer stream request observability with concise event-log and OpenTelemetry span summaries.
Working with SQL
- SQL execution, linting, and navigation are now schema-aware: unqualified identifiers resolve against the schema you've selected instead of always falling back to the adapter's default schema.
- SQL result visualizations are rendered with Studio-owned chart configuration, and there's an optional Queries view backed by query-insights snapshots.
- Added copy actions to the Query Details view.
Fixes
- Fixed editing PostgreSQL text-array cells when queries are compiled with inline values.
- Avoided cancelling and repeating introspection requests when Studio first mounts, removing duplicate startup work.
Thanks to our contributors
A heartfelt thank you to the community members whose contributions shaped this release:
@AmirSa12, @kyungseopk1m, @nfl1ryxditimo12, @jibin7jose, @santichausis, @kolia-zamnius, @goutamadwant, @eruditmorina, @lazerg, @AnupamKumar-1, @Swapanrishi, @anupamme, and @oyi77.
Prisma Compute is now in public beta
"Push code, it runs." Prisma Compute — managed hosting for TypeScript apps that run right next to your database — is now available in public beta, and free to use while the beta lasts.
Compute deploys your app as a long-lived process on Bun, colocated with your Prisma Postgres database, so there are no cold starts, no request timeouts, and no separate hosting vendor to wire up. It's a fit for REST and GraphQL APIs, full-stack apps, streaming and gRPC, and the long-running, stateful AI agents that keep connections open and hold in-process caches — "self-hosting, without the painful parts".
- Push-to-deploy from the CLI or via GitHub integration. Every deployment is an immutable, versioned release with its own preview URL, and rolling back is simply promoting a previous version.
- Branch-based environments — each branch gets its own app and database, so you can preview a change before promoting it to production.
- Auto-wires with Prisma Postgres (or bring any database), with automatic health checks and self-recovery.
- Custom domains — point a single CNAME at Prisma and Compute provisions and renews the TLS certificate for you, with no manual certificate uploads or private-key handling.
With Prisma ORM for type-safe data access, Prisma Postgres for the managed database, and now Prisma Compute for hosting, the whole stack lives in one place. Read the full story in the Prisma Compute blog series.
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.
7.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.
7.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 bootstrap
With a starter template
npx prisma@latest bootstrap --template nextjs
Non-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.
7.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.
7.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.
Adobe Express - CleanShot 2026-03-04 at 21 15 08-2
More intuitive filtering
Filtering is now easier to use, and includes an option for raw SQL filters.
CleanShot 2026-03-11 at 11 26 35
And if you are using Studio in Console, you can use ai generated filters: CleanShot 2026-03-11 at 11 28 18
Cmd+k Command Palette
You can now use the keyboard to perform most actions in Studio with the new cmd+k command palette CleanShot 2026-03-11 at 11 30 35
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.
Adobe Express - Screen Recording 2026-03-10 at 2 30 52 PM-2
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.
7.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 (https://github.com/prisma/prisma/pull/29243) - Fix a query plan mutation issue that resulted in broken cursor queries (https://github.com/prisma/prisma/pull/29262)
- Fix an array parameter wrapping issue in push operations (https://github.com/prisma/prisma-engines/pull/5784)
- Fix
Uint8Arrayserialization in nested JSON fields (https://github.com/prisma/prisma/pull/29268) - Fix an issue with MySQL joins that relied on non-strict equality (https://github.com/prisma/prisma/pull/29251)
Driver Adapters
- @prisma/adapter-mariadb: Update text column detection to check for a binary collation (https://github.com/prisma/prisma/pull/29238)
- @prisma/adapter-mariadb: Correct
relationJoinscompatibility check for MariaDB 8.x versions (https://github.com/prisma/prisma/pull/29246)
Schema Engine
- Fix partial index predicate comparison on PostgreSQL and MSSQL (https://github.com/prisma/prisma-engines/pull/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!
7.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 (https://github.com/prisma/prisma/pull/29184)
- Preserve
Prisma.skipthrough query extension argument cloning (https://github.com/prisma/prisma/pull/29198) - Enable batching of multiple queries inside interactive transactions (https://github.com/prisma/prisma/pull/25571)
- Add missing JSON value deserialization for JSONB parameter fields (https://github.com/prisma/prisma/pull/29182)
- Apply result extensions correctly for nested and fluent relations (https://github.com/prisma/prisma/pull/29218)
- Allow missing config datasource URL and validate only when needed (https://github.com/prisma/prisma-engines/pull/5777)
Driver Adapters
- @prisma/adapter-ppg: Handle null values in type parsers for nullable columns (https://github.com/prisma/prisma/pull/29192)
Prisma Schema Language
- Support
whereargument on field-level@uniquefor partial indexes (https://github.com/prisma/prisma-engines/pull/5774) - Add object expression and object member support to schema reformatter (https://github.com/prisma/prisma-engines/pull/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!
7.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.