AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured migration path for upgrading Prisma ORM from version 6 to 7. It addresses critical breaking changes, including the move to an ESM-first architecture, the introduction of the prisma.config.ts file, and the mandatory requirement of driver adapters for SQL-based database connections. The guide covers package updates, schema generator modifications, environment variable handling, and client instantiation updates. Note that this migration path is strictly for SQL-based projects; MongoDB users are advised to remain on Prisma 6.x or consider alternative upgrade paths.
What it does
- Provides step-by-step instructions for upgrading Prisma packages to v7.
- Guides the configuration of driver adapters for various SQL databases.
- Details the transition to the new prisma.config.ts file format.
- Explains how to update TypeScript configurations for ESM compatibility.
- Outlines the replacement of deprecated patterns like Prisma.validator.
- Offers specific guidance for users of Prisma Accelerate.
When to use it
- When upgrading an existing project from Prisma ORM v6 to v7.
- When encountering errors related to Prisma v7 breaking changes.
- When configuring new driver adapters for SQL database connectivity.
- When setting up the required prisma.config.ts file.
Advantages
- Ensures a systematic approach to handling critical breaking changes.
- Reduces manual effort by providing clear configuration templates.
- Provides specific paths for both standard SQL and Accelerate-based setups.
- Helps avoid common pitfalls like incorrect import paths or missing adapters.
Usage examples
- “How do I upgrade my project to Prisma 7?”
- The agent provides the full migration workflow, starting with package updates, schema generator changes, and the installation of the appropriate driver adapter.
- “I am getting errors after upgrading to Prisma 7, what should I check?”
- The agent guides you through verifying your prisma.config.ts, checking your driver adapter implementation, and ensuring your import paths match the new generated client structure.
- “How do I configure a driver adapter for PostgreSQL in Prisma 7?”
- The agent provides the specific npm installation command and the TypeScript code snippet to instantiate the PrismaClient with the PrismaPg adapter.
- “Can I use this guide to migrate my MongoDB project to Prisma 7?”
- The agent clarifies that Prisma 7 does not support MongoDB and advises keeping the project on Prisma 6.x.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/prisma/prisma-upgrade-v7/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip prisma-upgrade-v7.zip -d .agents/skills
Documentation by prisma
Upgrade to Prisma ORM 7
Complete guide for migrating from Prisma ORM v6 to v7. This upgrade introduces significant breaking changes around the new prisma-client generator, driver adapters, prisma.config.ts, explicit environment loading, and generated client entrypoints.
When to Apply
Reference this skill when:
Upgrading from Prisma v6 to v7
Updating to the
prisma-clientgeneratorSetting up driver adapters
Configuring
prisma.config.tsFixing import errors after upgrade
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Schema Migration | CRITICAL | schema-changes |
| 2 | Database Connectivity | CRITICAL | driver-adapters |
| 3 | Module System | CRITICAL | esm-support |
| 4 | Config and Env | HIGH | prisma-config, env-variables |
| 5 | Removed Features | HIGH | removed-features |
| 6 | Accelerate | HIGH | accelerate-users |
Quick Reference
schema-changes- generator migration, required output paths, generated entrypoints, andPrisma.validatorreplacementdriver-adapters- required adapter installation for SQL providers, pool differences, and Prisma Postgres adapter choicesesm-support- ESM-first setup plus CommonJS fallback withmoduleFormat = "cjs"prisma-config- creating and usingprisma.config.tsenv-variables- explicit environment loadingremoved-features- removed middleware, metrics, and legacy CLI behavioraccelerate-users- migration notes for Accelerate users
Using MongoDB? This guide does not apply
Prisma 7 has no MongoDB connector. Do not apply any step in this guide to a project with
provider = "mongodb" — see the prisma-mongodb-upgrade skill for the actual decision
(stay on v6 deliberately vs migrate to Prisma 8).
Important Notes
MongoDB projects should stay on Prisma 6.x or migrate to Prisma 8 - do not migrate MongoDB apps to Prisma 7's SQL client path (see
prisma-mongodb-upgrade)Node.js 20.19.0+ required
TypeScript 5.4.0+ required
Latest stable Prisma ORM version:
7.6.0
Upgrade Steps Overview
Update packages to v7
Choose your module format (
esmby default,cjsif needed)Update TypeScript configuration
Update the schema generator block
Create
prisma.config.tsInstall and configure a driver adapter for SQL providers
Update Prisma Client imports
Update client instantiation
Replace deprecated helper patterns like
Prisma.validatorRun
prisma generateand test
Quick Upgrade Commands
# Update packages
npm install @prisma/client@7
npm install -D prisma@7
# Install a driver adapter (PostgreSQL or Prisma Postgres via direct TCP)
npm install @prisma/adapter-pg pg
# Install dotenv for env loading
npm install dotenv
# Regenerate client
npx prisma generateBreaking Changes Summary
| Change | v6 | v7 |
|---|---|---|
| Module format | Implicit / mixed | ESM-first, moduleFormat = "cjs" supported |
| Generator provider | prisma-client-js | prisma-client is the default, while prisma-client-js still exists for legacy setups |
| Output path | Auto (node_modules) | Required explicit |
| Driver adapters | Optional | Required for SQL providers |
| Config file | .env + schema | prisma.config.ts |
| Env loading | Automatic | Manual (dotenv) |
| Generated entrypoints | Single package export | client, browser, models, enums entrypoints |
| Type-safe query fragments | Prisma.validator() | TypeScript satisfies |
| Middleware | $use() | Client Extensions |
| Metrics | Preview feature | Removed |
Rule Files
Detailed migration guides for each breaking change:
references/esm-support.md - ESM and CommonJS configuration
references/schema-changes.md - Generator, output, imports, and generated entrypoints
references/driver-adapters.md - Required driver adapter setup
references/prisma-config.md - New configuration file
references/env-variables.md - Environment variable loading
references/removed-features.md - Middleware, metrics, and CLI flags
references/accelerate-users.md - Special handling for AccelerateStep-by-Step Migration
1. Update package.json for ESM-first projects
{
"type": "module"
}If you need to stay on CommonJS, keep your app as CJS and set moduleFormat = "cjs" in the generator block instead of forcing ESM.
2. Update tsconfig.json
{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true
}
}3. Update schema.prisma
// Before (v6)
generator client {
provider = "prisma-client-js"
}
// After (v7)
generator client {
provider = "prisma-client"
output = "../generated/prisma"
// Optional if you need CommonJS:
// moduleFormat = "cjs"
}4. Create prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
})5. Install a driver adapter (SQL providers only)
# PostgreSQL
npm install @prisma/adapter-pg pg
# MySQL
npm install @prisma/adapter-mariadb mariadb
# SQLite
npm install @prisma/adapter-better-sqlite3 better-sqlite3
# Prisma Postgres in standard Node.js apps (recommended)
npm install @prisma/adapter-pg pg
# Prisma Postgres serverless driver (edge/serverless)
npm install @prisma/adapter-ppg @prisma/ppg
# Neon
npm install @prisma/adapter-neonMongoDB does not have a SQL @prisma/adapter-* package in the published Prisma 7.6.0 packages. If you're upgrading a MongoDB project, stop and keep that project on the latest Prisma 6.x release instead of following the standard Prisma 7 migration path.
6. Update client instantiation
// Before (v6)
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// After (v7)
import { PrismaClient } from '../generated/prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL
})
const prisma = new PrismaClient({ adapter })7. Replace Prisma.validator with satisfies
import { Prisma } from '../generated/prisma/client'
const userSelect = {
id: true,
email: true,
name: true,
} satisfies Prisma.UserSelect8. Run migrations and generate
npx prisma generate
npx prisma migrate dev # if neededTroubleshooting
"Cannot find module" errors
Check that the generator
outputpath matches your import pathEnsure
prisma generateran successfully
SSL certificate errors
Add
ssl: { rejectUnauthorized: false }to the adapter config if you need to preserve old behaviorOr configure your certificates properly with
NODE_EXTRA_CA_CERTS/ OpenSSL CA settings
Connection timeout issues
Driver adapters use the underlying driver's defaults, which differ from v6
Configure pool settings explicitly on the adapter if needed
Resources
How to Use
Follow references/schema-changes.md and references/driver-adapters.md first, then apply the remaining reference files based on your project setup.
Files
- ATTRIBUTION.mdAdded by AutoGineer867 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md7.9 KiB
- references/accelerate-users.md3.4 KiB
- references/driver-adapters.md6.0 KiB
- references/env-variables.md3.3 KiB
- references/esm-support.md3.1 KiB
- references/prisma-config.md3.3 KiB
- references/removed-features.md4.6 KiB
- references/schema-changes.md3.6 KiB
references/esm-support.md
ESM and CommonJS Support
Prisma ORM v7 is ESM-first, but the prisma-client generator can target either ESM or CommonJS. Use ESM by default, and opt into CommonJS with moduleFormat = "cjs" if your project still needs it.
ESM Projects
Add "type": "module" to package.json and use an ESM-compatible tsconfig.json:
{
"type": "module",
"scripts": {
"build": "tsc",
"start": "node dist/index.js"
}
}{
"compilerOptions": {
"module": "ESNext",
"moduleResolution": "bundler",
"target": "ES2023",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"outDir": "dist"
},
"include": ["src/**/*", "prisma/**/*"]
}CommonJS Projects
If the rest of your app is still CommonJS, keep that setup and make the generated Prisma Client CommonJS too:
{
"compilerOptions": {
"module": "CommonJS",
"moduleResolution": "node",
"target": "ES2022",
"esModuleInterop": true
}
}generator client {
provider = "prisma-client"
output = "../generated/prisma"
moduleFormat = "cjs"
}Generator Fields That Matter
moduleFormat:esmorcjsruntime:nodejs,bun,deno,workerd,vercel-edge,react-nativegeneratedFileExtension:ts,mts, orctsimportFileExtension:ts,mts,cts,js,mjs,cjs, or empty
Example:
generator client {
provider = "prisma-client"
output = "../generated/prisma"
runtime = "nodejs"
moduleFormat = "esm"
generatedFileExtension = "ts"
importFileExtension = "ts"
}Import Paths
Server Code
import { PrismaClient } from '../generated/prisma/client'Browser-Safe Types
import { Prisma } from '../generated/prisma/browser'
import { Role } from '../generated/prisma/enums'
import type { UserModel } from '../generated/prisma/models/User'File Extensions
With moduleResolution: "Node16" or "NodeNext", use .js/.mjs/.cjs extensions that match your emitted files.
With moduleResolution: "bundler", bare relative imports are usually fine.
Minimum Versions
| Requirement | Minimum Version |
|---|---|
| Node.js | 20.19.0 |
| TypeScript | 5.4.0 |
Framework Considerations
Next.js
Next.js works well with the default ESM output. If you need generated types in client components, import them from browser, models, or enums, not from client.
Bun
Bun loads .env files automatically, so ESM plus env() is the smoothest default. You can still choose moduleFormat = "cjs" if the rest of your project requires it.
Troubleshooting
"ERR_REQUIRE_ESM"
Your generated client is ESM, but your app is requiring it as CommonJS. Either switch the project to ESM or set moduleFormat = "cjs" and regenerate.
"Cannot use import statement outside a module"
Your app is still being executed as CommonJS. Add "type": "module" or use moduleFormat = "cjs" instead.
TypeScript compilation errors
Ensure module, moduleResolution, and your generator's moduleFormat agree with one another.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- prisma
- Publisher
- Prisma (Official)
- Source
- prisma/skills · prisma-upgrade-v7 · commit 8ea289b
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by prisma or Prisma.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download prisma-upgrade-v7.zip