Prisma 3.6.0stable Released Nov 30, 2021
Impact Score: 5/10

Prisma 3.6.0 — Release Notes & Engineering Impact

Source available — automated, not human-reviewed

Component: prisma · Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified — check source notes
$ npm install --save-dev --save-exact [email protected]
📄 .MD
⚡ Executive Summary (TL;DR)

Prisma 3.6.0. Source highlight: Today, we are excited to share the `3.6.0` stable release 🎉

Who Does This Impact? (Role-Based Analysis)

💻 Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

📊 Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

⚙️ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

✨ New Features & Capabilities (2)

  • Add timing information to Migration CLI output
  • Re-introduce error handling to referentialActions() and nativeTypes() methods in prisma-fmt
📄 View Raw Release Notes (Original Developer Log)
Today, we are excited to share the `3.6.0` stable release 🎉 🌟 **Help us spread the word about Prisma by starring the repo or [tweeting](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@prisma%20release%20v3.6.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/3.6.0) about the release.** 🌟  ## Major improvements & new features ### Prisma Migrate #### Full-text index support in MySQL and MongoDB (Preview) In this version we introduce support for full-text indexes in the `db pull`, `db push` and `migrate` commands for MySQL and MongoDB databases as a [Preview](https://www.prisma.io/docs/about/prisma/releases#preview) feature. This allows using them in the Prisma schema and prevents validation errors in some database schemas. For now we do not enable the full-text search commands in the Prisma Client. They will be implemented separately, and the progress can be followed in the [MongoDB](https://github.com/prisma/prisma/issues/9413) and [MySQL](https://github.com/prisma/prisma/issues/10415) issues. Add the preview feature `fullTextIndex` to the Prisma schema, after which the `@@fulltext` attribute is allowed in the Prisma schema: ```prisma generator js { provider = "prisma-client-js" previewFeatures = ["fullTextIndex"] } model A { id Int @id title String @db.VarChar(255) content String @db.Text @@fulltext([title, content]) } ``` Please note that it is mandatory to do `db pull` with the preview feature enabled before using Prisma Migrate on existing MySQL databases, so the index types can be converted and will not get overwritten in the next migration. For more details check out our [documentation](https://www.prisma.io/docs/concepts/components/prisma-schema/index-configuration). #### Hash index support for PostgreSQL (Preview) With the `extendedIndexes` preview feature, it is now possible to use `Hash` instead of the default `BTree` as the index algorithm on PostgreSQL databases. A hash index can be much faster for inserts, but it only supports equals operation in the database. An example of using a hash index: ```prisma generator js { provider = "prisma-client-js" previewFeatures = ["extendedIndexes"] } model A { id Int @id value Int @@index([value], type: Hash) } ``` For more details check out our [documentation.](https://www.prisma.io/docs/concepts/components/prisma-schema/index-configuration) ### VS Code extension now uses a Wasm module Until this release, the language server powering the [Prisma VS Code extension](https://marketplace.visualstudio.com/items?itemName=Prisma.prisma) relied on logic from the Prisma engines in the form of a native binary. Downloading and running the native binary required a large amount of custom logic and led to problems due to network failures, operating system permissions and malicious code detection issues. Starting with `3.6.0`, the language server and the VS Code extension use logic compiled to [WebAssembly](https://webassembly.org/) and distributed through npm. There is no runtime binary download and no external process involved anymore. We expect this new distribution model to be more robust and hence provide a better experience for our users. If you have any feedback, please leave an issue in the [`prisma/language-tools`](https://github.com/prisma/language-tools/) repository. ### Prisma Client #### `Bytes` can now be filtered with `in` and `notIn` You can now use `in` and `notIn` operations on the `Bytes` type: ```ts const audioTracks = raws.map(raw => { return Buffer.from(raw) }) const result = await prisma.audio.find({ where: { track: in: audioTracks } } }) ``` Thanks [@serejkaaa512](https://github.com/serejkaaa512) for [your contribution](https://github.com/prisma/prisma-engines/pull/2418)! #### `Json` fields now accept read-only types This is a small quality-of-life improvement. You can now pass immutable values into `Json` fields. In the following example, `audit` is a `Json` field that accepts a read-only array: ```ts const trail = [ { event: "signup" }, { event: "subscribe" }, { event: "invite friend" } ] as const await prisma.user.create({ data: { audit: trail } }) ``` Learn more in [this issue](https://github.com/prisma/prisma/issues/10165). #### Reducing interactive transactions timeouts for binary engine If you've spent some time using the new [Interactive Transaction API](https://www.prisma.io/docs/guides/performance-and-optimization/prisma-client-transactions-guide#interactive-transactions-in-preview) with the binary engine, you may have encountered this timeout error: ``` Transaction API error: Transaction already closed: Transaction is no longer valid. Last state: 'Expired'. ``` This could happen if you had two concurrent requests modifying the same resource at the same time using the binary engine type. It took us a while to track down the source of this error, but it turned out to be a low-level misconfiguration in our HTTP client. We [disabled HTTP pipelining](https://github.com/prisma/prisma/pull/10295) to fix this problem. #### Fix `notIn` filters for large queries This most likely didn't affect you, but if you ever tried using `notIn` with a large query, you may have received an incorrect result. The query engine automatically breaks up large queries into smaller queries and intersects the results. Most of the time this works as expected but for certain queries like `notIn`, the intersection of results is incorrect. We fixed this in `3.6.0`. You can now use `in` and `notIn` operations on the `Bytes` type: ```ts const denyList = [/* ... large list of user ids ... */] const result = await prisma.user.findMany({ where: { id: { notIn: denyList } } }) ``` This query will break up the query into chunks that your database can manage: ```sql select * where User not in ($1,$2, ..., $5000) select * where User not in ($1000,$1001, ..., $6000) ``` ... and return the correct results. Learn more in [this issue](https://github.com/prisma/prisma/issues/7434). ## Fixes and improvements ### Prisma Client - [interactiveTransactions: 2 concurrent writes to the same row will cause it to hang until expiring](https://github.com/prisma/prisma/issues/8707) - [Please support having `in` natively for bytes](https://github.com/prisma/prisma/issues/8854) - [[MongoDB] Can not query data from MongoDB Atlas serverless cluster/database, weird error `The provided database string is invalid. Invalid MongoDB connection string in database URL.` instead](https://github.com/prisma/prisma/issues/9682) - [Know when the Client is using the data proxy](https://github.com/prisma/prisma/issues/9958) - [PCO: Setup an example Node.js application with OpenTelemetry that posts to a Tracing UI](https://github.com/prisma/prisma/issues/10002) - [Support order by relevance](https://github.com/prisma/prisma/issues/10066) - [JSONValue not accepting readonly array or objects](https://github.com/prisma/prisma/issues/10165) - [Downloading binaries fails with wrong sha256 checksum ](https://github.com/prisma/prisma/issues/10312) ### Prisma Migrate - [Full-Text Search Index support for MySQL](https://github.com/prisma/prisma/issues/9412) - [Specification of Index Type](https://github.com/prisma/prisma/issues/10080) - [Add timing information to Migration CLI output](https://github.com/prisma/prisma/issues/10106) - [Seeding fails in `prisma migrate dev` with timeout but works with `prisma db seed`](https://github.com/prisma/prisma/issues/10194) - [`dbgenerated` migrations in MySQL are broken (since 3.4.x)](https://github.com/prisma/prisma/issues/10275) - [seed.sh is executed before migration has completed when using prisma migrate dev](https://github.com/prisma/prisma/issues/10417) ### Language tools (e.g. VS Code) - [Missing License.md](https://github.com/prisma/language-tools/issues/964) - [Re-introduce error handling to referentialActions() and nativeTypes() methods in prisma-fmt](https://github.com/prisma/language-tools/issues/965) ### Prisma engines - [Refactor ConnectorCapability::ForeignKeys to ReferentialIntegrity checks](https://github.com/prisma/prisma-engines/issues/2396) ## Credits Huge thanks to @Akxe, @safareli for helping! ## 📺 Join us for another "What's new in Prisma" livestream Learn about the latest release and other news from the Prisma community by joining us for another ["What's new in Prisma"](https://www.youtube.com/watch?v=12c1geyFOt4) livestream. The stream takes place [on YouTube](https://www.youtube.com/watch?v=12c1geyFOt4) on **Thursday, December 02** at **5pm Berlin | 8am San Francisco**.