chore: migrate repo to pnpm v11 (#48033)

## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Chore / dependency tooling update.

## What is the current behavior?

The repo is pinned to pnpm 10.24.0. Closes
https://linear.app/supabase/issue/FE-3673/migrate-the-repo-to-use-pnpm-v11.

## What is the new behavior?

The repo is pinned to pnpm 11.13.1, pnpm v11 workspace settings are
migrated to `allowBuilds`, and the Studio Dockerfile installs pnpm
11.13.1.

## Additional context

Validated with `CI=true mise exec node@22 -- pnpm install
--frozen-lockfile`, `mise exec node@22 -- pnpm run typecheck`, and `mise
exec node@22 -- pnpm run lint`; full Prettier check still fails on
existing generated docs/router files outside this migration.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Updated tooling requirements (pnpm **11.13.1**, Node **>=22.13**) and
aligned container build tooling accordingly.
* Adjusted package manager behavior (scoped registry override, update
notifications disabled) and workspace build/engine validation settings.

* **Maintenance**
* Updated `clean` scripts across apps/packages to remove only
build/cache artifacts (no longer delete installed dependencies).
* Reduced Turbo `clean` task output to **errors-only** for cleaner logs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Ivan Vasilov authored and GitHub committed 2026-07-20 12:57:42 +02:00
1 parent bf0e84d55a
commit 24ce0ba5f8
28 files changed
+46 -47

No files matched your search

-2
View File
@@ -1,3 +1 @@
engine-strict=true
update-notifier=false
@jsr:registry=https://npm.jsr.io
+1 -1
View File
@@ -13,7 +13,7 @@
"start": "next start",
"lint": "eslint .",
"content:build": "contentlayer2 build",
"clean": "rimraf node_modules .next .turbo",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"typecheck": "contentlayer2 build && tsc --noEmit -p tsconfig.json"
},
"dependencies": {
+1 -1
View File
@@ -13,7 +13,7 @@
"build:markdown": "pnpm build:guides-markdown && pnpm build:reference-markdown",
"build:gz-archive": "tsx ./internals/generate-gz-archive.ts",
"build:sitemap": "tsx ./internals/generate-sitemap.ts",
"clean": "rimraf .next .turbo node_modules features/docs/generated examples __generated__",
"clean": "rimraf .next .turbo features/docs/generated examples __generated__ tsconfig.tsbuildinfo",
"codegen:examples": "shx cp -r ../../examples ./examples",
"codegen:graphql": "tsx --conditions=react-server ./scripts/graphqlSchema.ts && graphql-codegen --config codegen.ts",
"codegen:references:new:ensure": "(test -f spec/reference/javascript/v2/supabase.json || (cd spec && make download.tsdoc.v2)) && (test -f spec/reference/server/v1/server.json || (cd spec && make download.server.v1))",
+1 -1
View File
@@ -12,7 +12,7 @@
"lint": "eslint .",
"lint:mdx": "supa-mdx-lint content --config ../../supa-mdx-lint.config.toml",
"content:build": "contentlayer2 build",
"clean": "rimraf node_modules .next .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"typecheck": "contentlayer2 build && tsc --noEmit"
},
"dependencies": {
+1 -1
View File
@@ -7,7 +7,7 @@
"dev": "react-router dev",
"start": "react-router-serve ./build/server/index.js",
"typecheck": "react-router typegen && tsc",
"clean": "rimraf node_modules tsconfig.tsbuildinfo build .react-router .turbo"
"clean": "rimraf build .react-router .turbo tsconfig.tsbuildinfo"
},
"dependencies": {
"@react-router/fs-routes": "^7.17.0",
+1 -1
View File
@@ -23,7 +23,7 @@ RUN apt-get update -qq && \
rm -rf /var/lib/apt/lists/* && \
update-ca-certificates
RUN npm install -g pnpm@10.24.0
RUN npm install -g pnpm@11.13.1
WORKDIR /app
+1 -1
View File
@@ -19,7 +19,7 @@
"start:tanstack": "node scripts/serve.js",
"lint": "eslint .",
"lint:ratchet": "tsx scripts/ratchet-eslint-rules.ts --rules-file scripts/ratchet-rules.json",
"clean": "rimraf node_modules tsconfig.tsbuildinfo .next .turbo",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"test": "vitest --run --coverage",
"test:watch": "vitest watch",
"test:ui": "vitest --ui",
+1 -1
View File
@@ -14,7 +14,7 @@
"lint": "eslint .",
"lint:mdx": "supa-mdx-lint content --config ../../supa-mdx-lint.config.toml",
"content:build": "contentlayer2 build",
"clean": "rimraf node_modules .next .turbo",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"typecheck": "contentlayer2 build && tsc --noEmit -p tsconfig.json"
},
"dependencies": {
+1 -1
View File
@@ -11,7 +11,7 @@
"export": "next export",
"start": "next start",
"lint": "eslint .",
"clean": "rimraf node_modules",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"pretypecheck": "next typegen",
"typecheck": "pnpm run content:build:core && tsc --noEmit",
"content:build:core": "node scripts/generateStaticContent.mjs && node scripts/generateMdContent.mjs",
+1 -1
View File
@@ -6,7 +6,7 @@
"exports": "./index.ts",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules .next .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .next .turbo tsconfig.tsbuildinfo",
"typecheck": "tsc --noEmit"
},
"dependencies": {
+4 -4
View File
@@ -12,7 +12,7 @@
"build:studio:docker": "docker build . -f apps/studio/Dockerfile --target production -t supabase-studio:local --build-arg NEXT_PUBLIC_STUDIO_AUTH_MODE=supabase --no-cache",
"build:design-system": "turbo run build --filter=design-system",
"build:docs": "turbo run build --filter=docs",
"clean": "turbo run clean --parallel && rimraf -G node_modules/{*,.bin,.modules.yaml} .turbo/cache",
"clean": "turbo run clean --parallel && rimraf -G .turbo/cache && pnpm purge",
"dev": "turbo run dev --parallel",
"dev:studio": "turbo run dev --filter=studio --parallel",
"dev:studio-local": "pnpm setup:cli && NODE_ENV=test MODE=test pnpm --prefix ./apps/studio dev",
@@ -65,8 +65,8 @@
"url": "git+https://github.com/supabase/supabase.git"
},
"engines": {
"pnpm": "10.24",
"node": ">=22"
"pnpm": "11.13",
"node": ">=22.13"
},
"keywords": [
"postgres",
@@ -76,5 +76,5 @@
"database",
"auth"
],
"packageManager": "pnpm@10.24.0"
"packageManager": "pnpm@11.13.1"
}
+1 -1
View File
@@ -7,7 +7,7 @@
"sideEffects": false,
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"typecheck": "tsc --noEmit",
"test": "vitest"
},
+1 -1
View File
@@ -6,7 +6,7 @@
"types": "./index.ts",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"codegen": "openapi-typescript --redocly ./redocly.yaml --alphabetize --default-non-nullable=false && prettier --cache --write types/*.d.ts"
},
"author": "",
+1 -1
View File
@@ -10,7 +10,7 @@
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules"
"clean": "rimraf .turbo tsconfig.tsbuildinfo"
},
"engines": {
"node": ">= 16"
+1 -1
View File
@@ -7,7 +7,7 @@
"license": "MIT",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"gen:types": "supabase gen types typescript --local >| ./database-types.ts",
"typecheck": "tsc --noEmit"
},
+1 -1
View File
@@ -5,7 +5,7 @@
"license": "MIT",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules"
"clean": "rimraf .turbo tsconfig.tsbuildinfo"
},
"dependencies": {
"@tailwindcss/forms": "^0.5.11",
+1 -1
View File
@@ -11,7 +11,7 @@
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo dist",
"clean": "rimraf .turbo dist tsconfig.tsbuildinfo",
"test": "vitest run",
"test:watch": "vitest",
"typecheck": "tsc --noEmit"
+1 -1
View File
@@ -5,7 +5,7 @@
"license": "MIT",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules"
"clean": "rimraf .turbo tsconfig.tsbuildinfo"
},
"devDependencies": {
"@eslint/eslintrc": "^3.0.0",
+1 -1
View File
@@ -6,7 +6,7 @@
"license": "MIT",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"tsdoc:dereference:functions:v1": "tsx ./tsdoc.ts --input ../../apps/docs/spec/enrichments/tsdoc_v1/functions.json --output ../../apps/docs/spec/enrichments/tsdoc_v1/functions_dereferenced.json",
"tsdoc:dereference:gotrue:v1": "tsx ./tsdoc.ts --input ../../apps/docs/spec/enrichments/tsdoc_v1/gotrue.json --output ../../apps/docs/spec/enrichments/tsdoc_v1/gotrue_dereferenced.json",
"tsdoc:dereference:postgrest:v1": "tsx ./tsdoc.ts --input ../../apps/docs/spec/enrichments/tsdoc_v1/postgrest.json --output ../../apps/docs/spec/enrichments/tsdoc_v1/postgrest_dereferenced.json",
+1 -1
View File
@@ -4,7 +4,7 @@
"scripts": {
"preinstall": "npx only-allow pnpm",
"build:icons": "build-icons --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --iconFileExtension=.ts --exportFileName=index.ts",
"clean": "rimraf node_modules .turbo"
"clean": "rimraf .turbo tsconfig.tsbuildinfo"
},
"dependencies": {
"@typescript/native": "catalog:",
+1 -1
View File
@@ -10,7 +10,7 @@
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules"
"clean": "rimraf .turbo tsconfig.tsbuildinfo"
},
"dependencies": {
"@types/react": "catalog:",
+1 -1
View File
@@ -7,7 +7,7 @@
"repository": "supabase/supabase",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"test": "test/run-tests.sh vitest run --coverage",
"test:update": "test/run-tests.sh vitest run --update",
"lint": "tsc --noEmit",
+1 -1
View File
@@ -6,7 +6,7 @@
"types": "./index.ts",
"scripts": {
"preinstall": "npx only-allow pnpm",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"typecheck": "tsc --noEmit"
},
"devDependencies": {
+1 -1
View File
@@ -8,7 +8,7 @@
"preinstall": "npx only-allow pnpm",
"test": "vitest",
"test:coverage": "vitest --run --coverage",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"typecheck": "tsc --noEmit",
"gen:exports": "tsx ./scripts/update-exports.ts"
},
+1 -1
View File
@@ -9,7 +9,7 @@
"preinstall": "npx only-allow pnpm",
"typecheck": "tsc --noEmit",
"generate-tailwind-classes": "tsx ./scripts/generate-tailwind-classes.ts",
"clean": "rimraf node_modules .turbo tsconfig.tsbuildinfo",
"clean": "rimraf .turbo tsconfig.tsbuildinfo",
"test": "vitest",
"test:ci": "vitest --run --coverage",
"test:report": "open coverage/lcov-report/index.html"
+1 -3
View File
@@ -129,9 +129,7 @@ overrides:
webpack: ^5.104.1
patchedDependencies:
react-data-grid:
hash: 803f02d6cede565990ab9675326b93195b98bcc6477a4811715405892c257488
path: patches/react-data-grid.patch
react-data-grid: 803f02d6cede565990ab9675326b93195b98bcc6477a4811715405892c257488
importers:
+17 -15
View File
@@ -5,6 +5,10 @@ packages:
- e2e/*
blockExoticSubdeps: true
engineStrict: true
updateNotifier: false
# Doesn't work because of Typescript issues with peer dependencies, see https://github.com/pnpm/pnpm/issues/9739
enableGlobalVirtualStore: false
catalog:
'@monaco-editor/react': ^4.7.0
@@ -49,17 +53,19 @@ catalog:
vitest: ^4.1.4
zod: 3.25.76
ignoredBuiltDependencies:
- '@parcel/watcher'
- '@sentry/cli'
- contentlayer2
- core-js
- es5-ext
- esbuild
- libpg-query
- msw
- protobufjs
- sharp
allowBuilds:
'@parcel/watcher': false
'@sentry/cli': false
contentlayer2: false
core-js: false
es5-ext: false
esbuild: false
libpg-query: false
msw: false
node-pty: true
protobufjs: false
sharp: false
supabase: true
minimumReleaseAge: 4320
@@ -74,10 +80,6 @@ minimumReleaseAgeExclude:
# The following are excluded to fix vulnerablities.
- react-use
onlyBuiltDependencies:
- node-pty
- supabase
overrides:
'@ardatan/relay-compiler>immutable': ^3.8.3
'monaco-editor': 'catalog:'
+1
View File
@@ -13,6 +13,7 @@
"clean": {
"outputs": [],
"cache": false,
"outputLogs": "errors-only",
},
"dev": {
"cache": false,