From 24ce0ba5f87698ad72c173c7a26fa6c5c105e8ca Mon Sep 17 00:00:00 2001 From: Ivan Vasilov Date: Mon, 20 Jul 2026 12:57:42 +0200 Subject: [PATCH 1/8] 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. ## 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. --- .npmrc | 2 -- apps/design-system/package.json | 2 +- apps/docs/package.json | 2 +- apps/learn/package.json | 2 +- apps/lite-studio/package.json | 2 +- apps/studio/Dockerfile | 2 +- apps/studio/package.json | 2 +- apps/ui-library/package.json | 2 +- apps/www/package.json | 2 +- blocks/vue/package.json | 2 +- package.json | 8 ++--- packages/ai-commands/package.json | 2 +- packages/api-types/package.json | 2 +- packages/build-icons/package.json | 2 +- packages/common/package.json | 2 +- packages/config/package.json | 2 +- packages/dev-tools/package.json | 2 +- packages/eslint-config-supabase/package.json | 2 +- packages/generator/package.json | 2 +- packages/icons/package.json | 2 +- packages/marketing/package.json | 2 +- packages/pg-meta/package.json | 2 +- packages/shared-data/package.json | 2 +- packages/ui-patterns/package.json | 2 +- packages/ui/package.json | 2 +- pnpm-lock.yaml | 4 +-- pnpm-workspace.yaml | 32 +++++++++++--------- turbo.jsonc | 1 + 28 files changed, 46 insertions(+), 47 deletions(-) diff --git a/.npmrc b/.npmrc index 19c081e2d4f63..41583e36ca8d2 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1 @@ -engine-strict=true -update-notifier=false @jsr:registry=https://npm.jsr.io diff --git a/apps/design-system/package.json b/apps/design-system/package.json index 9636c6b1dd676..d1ffddf65031c 100644 --- a/apps/design-system/package.json +++ b/apps/design-system/package.json @@ -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": { diff --git a/apps/docs/package.json b/apps/docs/package.json index 704b3a23cccff..87f158579da73 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -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))", diff --git a/apps/learn/package.json b/apps/learn/package.json index f2159e418c1e3..c857297c49134 100644 --- a/apps/learn/package.json +++ b/apps/learn/package.json @@ -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": { diff --git a/apps/lite-studio/package.json b/apps/lite-studio/package.json index b6ebf0e791d0e..a149499c2591f 100644 --- a/apps/lite-studio/package.json +++ b/apps/lite-studio/package.json @@ -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", diff --git a/apps/studio/Dockerfile b/apps/studio/Dockerfile index a657a43213732..237b543b41c74 100644 --- a/apps/studio/Dockerfile +++ b/apps/studio/Dockerfile @@ -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 diff --git a/apps/studio/package.json b/apps/studio/package.json index 72da599debab9..837e9b4280d78 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -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", diff --git a/apps/ui-library/package.json b/apps/ui-library/package.json index 844cd637bb43c..dfbcb6c3de802 100644 --- a/apps/ui-library/package.json +++ b/apps/ui-library/package.json @@ -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": { diff --git a/apps/www/package.json b/apps/www/package.json index aa16494342414..b1e2deea0f6e0 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -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", diff --git a/blocks/vue/package.json b/blocks/vue/package.json index 8ff4abe17ccea..39fd1c19c31d5 100644 --- a/blocks/vue/package.json +++ b/blocks/vue/package.json @@ -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": { diff --git a/package.json b/package.json index 6993678bcd04c..e76e4c7dd3cc6 100644 --- a/package.json +++ b/package.json @@ -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" } diff --git a/packages/ai-commands/package.json b/packages/ai-commands/package.json index 68b2181eaccae..c1de0dd0ef37d 100644 --- a/packages/ai-commands/package.json +++ b/packages/ai-commands/package.json @@ -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" }, diff --git a/packages/api-types/package.json b/packages/api-types/package.json index 666602c98a743..d975cab4de8c0 100644 --- a/packages/api-types/package.json +++ b/packages/api-types/package.json @@ -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": "", diff --git a/packages/build-icons/package.json b/packages/build-icons/package.json index 7a789e0a0c1a3..099a3a9cf678d 100644 --- a/packages/build-icons/package.json +++ b/packages/build-icons/package.json @@ -10,7 +10,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", - "clean": "rimraf node_modules" + "clean": "rimraf .turbo tsconfig.tsbuildinfo" }, "engines": { "node": ">= 16" diff --git a/packages/common/package.json b/packages/common/package.json index 1fd27ba5f8db1..bc9c7ebd64db5 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -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" }, diff --git a/packages/config/package.json b/packages/config/package.json index 324105ef29b48..df687c8ea9be0 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -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", diff --git a/packages/dev-tools/package.json b/packages/dev-tools/package.json index 7d32a3ee69473..1879dfe449f6f 100644 --- a/packages/dev-tools/package.json +++ b/packages/dev-tools/package.json @@ -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" diff --git a/packages/eslint-config-supabase/package.json b/packages/eslint-config-supabase/package.json index 878e68ca8e173..54b36915b7be6 100644 --- a/packages/eslint-config-supabase/package.json +++ b/packages/eslint-config-supabase/package.json @@ -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", diff --git a/packages/generator/package.json b/packages/generator/package.json index bf33b2438e0b6..cb3e56a7e713f 100644 --- a/packages/generator/package.json +++ b/packages/generator/package.json @@ -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", diff --git a/packages/icons/package.json b/packages/icons/package.json index dc5bc56c5cf8f..2161e0f4df502 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -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:", diff --git a/packages/marketing/package.json b/packages/marketing/package.json index f9274b2f2e370..f87045fe20ca5 100644 --- a/packages/marketing/package.json +++ b/packages/marketing/package.json @@ -10,7 +10,7 @@ }, "scripts": { "preinstall": "npx only-allow pnpm", - "clean": "rimraf node_modules" + "clean": "rimraf .turbo tsconfig.tsbuildinfo" }, "dependencies": { "@types/react": "catalog:", diff --git a/packages/pg-meta/package.json b/packages/pg-meta/package.json index 94f2cc959478a..bc9f010499e91 100644 --- a/packages/pg-meta/package.json +++ b/packages/pg-meta/package.json @@ -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", diff --git a/packages/shared-data/package.json b/packages/shared-data/package.json index 9625ffecd62bb..bc39f07660007 100644 --- a/packages/shared-data/package.json +++ b/packages/shared-data/package.json @@ -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": { diff --git a/packages/ui-patterns/package.json b/packages/ui-patterns/package.json index c9dd3e0956a28..a0df1ca5102a0 100644 --- a/packages/ui-patterns/package.json +++ b/packages/ui-patterns/package.json @@ -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" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index a724528e4fc11..b9fb78d53c2ca 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -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" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28c11dee30876..1fc7165af4e99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 17cbf3f5abb4d..ea5c77a993edc 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -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:' diff --git a/turbo.jsonc b/turbo.jsonc index cbc370c99da88..838e626b86965 100644 --- a/turbo.jsonc +++ b/turbo.jsonc @@ -13,6 +13,7 @@ "clean": { "outputs": [], "cache": false, + "outputLogs": "errors-only", }, "dev": { "cache": false, From 05d5da03402132f577ca193f6b262edfd5e6b862 Mon Sep 17 00:00:00 2001 From: Etienne Stalmans Date: Mon, 20 Jul 2026 13:46:44 +0200 Subject: [PATCH 2/8] chore: add ssl_enforcement_required for jit (#48032) ## 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 / bug fix ## What is the current behavior? The new `ssl_enforcement_required` state is not handled ## What is the new behavior? Displays the correct message ## Summary by CodeRabbit * **Bug Fixes** * Improved temporary database access messaging when SSL enforcement is required. * Added a direct action to open database settings and enable SSL enforcement before activating temporary access. --- .../JitDatabaseAccess/JitDbAccessConfiguration.tsx | 14 ++++++++++++-- packages/api-types/types/api.d.ts | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx index 2e247c35eee6f..6c4cb135cf3c9 100644 --- a/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx +++ b/apps/studio/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration.tsx @@ -302,13 +302,17 @@ export const JitDbAccessConfiguration = () => { ? 'Postgres upgrade required' : unavailableReason === 'manual_migration_required' ? 'Migration required' - : 'Temporary access unavailable' + : unavailableReason === 'ssl_enforcement_required' + ? 'SSL enforcement required' + : 'Temporary access unavailable' const unavailableDescription = unavailableReason === 'postgres_upgrade_required' ? 'must be upgraded to Postgres 17 or later before temporary access can be enabled.' : unavailableReason === 'manual_migration_required' ? 'must be migrated before temporary access can be enabled. Contact support to migrate this project.' - : 'This feature is currently unavailable for this project. Contact support if you need help enabling it.' + : unavailableReason === 'ssl_enforcement_required' + ? 'must have SSL enforcement enabled before temporary access can be enabled.' + : 'This feature is currently unavailable for this project. Contact support if you need help enabling it.' useEffect(() => { if (!isLoadingConfiguration && jitDbAccessConfiguration) { @@ -377,6 +381,12 @@ export const JitDbAccessConfiguration = () => { + ) : unavailableReason === 'ssl_enforcement_required' && ref ? ( + ) : (