`orm init` installs `prisma@next` (8.0.0-rc.10) while `latest` is rc.13, and rc.10 `migration plan` silently plans a full recreate without a `db` ref
Package and version
[email protected] (the latest tag); orm init installs [email protected] (the next tag)
What happened?
npx prisma@latest orm init runs npm add -D prisma@next @types/node and npm add -D @prisma/[email protected]. Today the dist-tags are:
| package | next |
latest |
|---|---|---|
prisma |
8.0.0-rc.10 | 8.0.0-rc.13 |
@prisma/cli-engine |
0.2.3 | 0.3.0 |
So the CLI the user invoked (rc.13) scaffolds a project whose own npx prisma and npm run contract:emit run an older CLI (rc.10). @prisma/[email protected] peer-depends on @prisma/[email protected], so two cli-engine versions end up in the tree as well.
The version skew is not cosmetic. rc.10 has a migration-planning behaviour that rc.13 already fixed:
- With rc.10,
prisma migration plan --name add-user-bioin a project that has applied migrations but nodbref exits 0 and writes a migration with"from": nulland 6 operations for a one-column change. It silently planned a full recreate from an empty database. The followingprisma db migratethen fails withMIGRATION.PATH_UNREACHABLE: Current contract has no planned migration path. - With rc.13, the same command refuses with
MIGRATION.PLAN_ORIGIN_UNKNOWN: Cannot determine the plan origin: migrations exist but no origin is namedand lists the three ways out.
A user who follows the docs with npx prisma@latest but runs the scaffolded package scripts gets the rc.10 behaviour without knowing it.
What did you expect to happen?
orm init installs the same version of prisma that was invoked (or prisma@latest), and the @prisma/cli-engine version that matches the runtime's peer dependency. Alternatively, move the next dist-tag forward to rc.13 so both tags resolve to the same CLI.
Minimal reproduction
mkdir app && cd app && npm init -ynpx prisma@latest orm init --yes --target postgres --authoring pslcat package.jsonshows"prisma": "^8.0.0-rc.10"and"@prisma/cli-engine": "0.2.3";npx prisma --versioninside the project reports rc.10 whilenpx prisma@latest --versionreports rc.13.
To see the planning difference:
- Set
DATABASE_URL, runnpx prisma contract emit,npx prisma migration plan --name init,npx prisma db migrate(plain, without--advance-ref db). - Add a field to the model, run
npx prisma contract emit, thennpx prisma migration plan --name add-field. rc.10 exits 0 with"from": nulland a full-recreate plan;npx prisma@latest migration plan --name add-field(rc.13) refuses withMIGRATION.PLAN_ORIGIN_UNKNOWN.
Environment
- OS: macOS 15
- Node.js: v24.11.1
- Package managers: npm 11, pnpm 11.25.0 (same result)
- Database: PostgreSQL 17 (local)
Additional context
Seen in 12 of 15 guide validation runs on 2026-09-10 (Turborepo, pnpm workspaces, Bun workspaces, React Router, SolidStart, Cloudflare Workers, Docker, GitHub Actions, and the four "switch to Prisma" guides). The Turborepo run is where the full-recreate plan was observed. The guides work around it with npm add -D prisma@latest right after orm init.
Source: prisma/prisma