Prisma 8 RC.12: engine, config and schema changes
- Announced
- 24 Sept 2026
- Effective
- no date announced
- Version
- 8.0.0-rc.12
- Source
- the vendor’s own page · last checked 29 Sept 2026
What breaks
This release breaks config loading, table naming and schema file handling if you don't adjust for them first.
- prisma.config.ts files that import defineConfig from @prisma/cli-engine fail to load, since that alias no longer exists (defineConfig from a product package like @prisma/orm-postgres/config is unaffected).
- Projects that pin @prisma/cli-engine themselves are left on the old 0.4.0 pin unless updated, since @prisma/orm-toolchain now peers an exact version (0.6.1).
- Config files are now merged from the current directory up to the repository root (first directory with .git), so a project under a stray parent prisma.config.ts silently inherits its values.
- Relative paths in config fields like contract or migrations.dir now resolve from the config file's own directory instead of the working directory, changing where those paths point.
- A malformed orm config field now reports as CLI.CONFIG_FIELD_INVALID inside CLI.CONFIG_SECTION_INVALID instead of the old CONFIG.VALIDATION_FAILED.
- A PSL model without @@map now uses its exact written name as the table (or Mongo collection) name instead of the previous casing, e.g. model UserProfile now maps to table "UserProfile" instead of "userProfile".
- Running migration plan, db update or migrate against an unmigrated schema stops with MIGRATION.TABLE_NAME_CASE_CHANGED instead of dropping and recreating the table.
- On Mongo, an unmapped model silently reads an empty collection with no error, since Mongo has no migration planner.
- Every PSL schema file must start with // use prisma-8 (or the older // use prisma-next) as its first line, or contract emit silently excludes that file from the contract; if no file has the header, emit fails with PSL_NO_OPTED_IN_SCHEMA_FILES.
What to do
Follow the app recipe (for applications) or the extension recipe (for extensions) referenced by the change ids below before upgrading.
- For engine-pin-moves-to-0-6-1: update prisma.config.ts to import definePrismaConfig instead of defineConfig, and move any direct @prisma/cli-engine pin to 0.6.1.
- For config-paths-resolve-from-declaring-file: check any parent prisma.config.ts files up to the repo root and add parent: false where inheritance is unwanted, and re-check relative paths like contract or migrations.dir against the config file's own directory.
- For psl-model-names-table-verbatim: before planning any migration, run the add-model-map script from the upgrade recipe over every .prisma file (including contract.prisma copies under migrations/) to add @@map with the current table name to every unmapped model; run this only once, on a schema written for an earlier release, and before deploying on Mongo.
- Add // use prisma-8 as the first line of every PSL schema file, or run the upgrade recipe's script that adds it automatically (orm init already writes it for new files).
- Replace any use of dbgenerated(...) with sql tagged literals, and verify column defaults match their column's data type.
What the vendor said
Prisma ORM v8.0.0-rc.12 adds Postgres full-text search, prepared reads/aggregates, multi-file schemas, and a path for Prisma 7 projects to reuse schema.prisma as the Prisma 8 contract source. It also ships several breaking changes: the engine peer moves to @prisma/cli-engine@0.6.1, models without @@map now name tables verbatim, every schema file needs a version header, dbgenerated(...) is replaced by sql tagged literals, and column defaults must match their column's data type.