Migrating to pnpm v11.0.0-rc.0
Version v11.0.0-rc.0 introduces 12 breaking changes. This guide details how to update your code.
Released: 4/10/2026
⚠️ Check Your Code
If you use any of these symbols, you need to read this guide:
pnpm CLI (general)pnpm publish flowpnpm loginpnpm logoutpnpm viewpnpm deprecatepnpm unpublishpnpm dist-tagpnpm versionpnpm add -gpnpm remove -gpnpm update -gpnpm list -gpnpm linkpnpm link --global.npmrc (configuration reading)pnpm-workspace.yaml (configuration reading)config.yaml (new configuration file)npm passthrough commandsBreaking Changes
●Issue #1
Node.js versions 18, 19, 20, and 21 are no longer supported. Users must upgrade to Node.js 22+.
●Issue #2
pnpm is now pure ESM; this may break scripts relying on CommonJS module loading mechanisms.
●Issue #3
The standalone executable now requires glibc 2.27 or newer.
●Issue #4
Deprecated build dependency settings (`onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, `ignoredBuiltDependencies`, and `ignoreDepScripts`) have been removed. They must be replaced by the `allowBuilds` setting.
●Issue #5
The `allowNonAppliedPatches` setting has been removed and replaced by `allowUnusedPatches`.
●Issue #6
Patch application failures now throw an error instead of being ignored (removal of `ignorePatchFailures`).
●Issue #7
Global installs now use the global virtual store by default, storing packages in `{storeDir}/links`. This changes how global packages are isolated and managed.
●Issue #8
`pnpm link <pkg-name>` no longer resolves packages from the global store; only relative or absolute paths are accepted (e.g., use `pnpm link ./foo`).
●Issue #9
`pnpm link --global` is removed. Use `pnpm add -g .` instead to register local package bins globally.
●Issue #10
`pnpm link` (with no arguments) is removed. Use `pnpm link <dir>` with an explicit path.
●Issue #11
pnpm no longer reads most settings from `.npmrc`. Only auth and registry settings are read from `.npmrc`. All other configuration (like `hoistPattern`, `nodeLinker`) must be moved to `pnpm-workspace.yaml` or `~/.config/pnpm/config.yaml`.
●Issue #12
Environment variables for configuration must now use the `pnpm_config_*` prefix; old `npm_config_*` variables are no longer read for configuration purposes.
Migration Steps
- 1Upgrade your Node.js environment to version 22 or higher.
- 2If you relied on CommonJS loading for pnpm scripts, update them to handle pure ESM.
- 3If you used deprecated build dependency settings (`onlyBuiltDependencies`, etc.), replace them with the `allowBuilds` map in your configuration.
- 4If you need to opt out of the 1-day minimum release age protection, set `minimumReleaseAge: 0` in `pnpm-workspace.yaml`.
- 5Move configuration settings other than auth/registry (e.g., `hoistPattern`, `nodeLinker`) from `.npmrc` files to `pnpm-workspace.yaml` or `~/.config/pnpm/config.yaml`.
- 6Ensure environment variables for configuration use the `pnpm_config_*` prefix.
- 7If you use global packages, run `pnpm setup` to update your shell configuration to point to the new location for globally installed binaries.
- 8Review usage of `pnpm link`. If linking local packages, use explicit paths (e.g., `pnpm link ./my-package`).
- 9If you relied on `pnpm install -g` (no arguments), switch to using `pnpm add -g <pkg>`.
Release Summary
This major release enforces Node.js 22+ compatibility, transitions pnpm to pure ESM, and significantly enhances security by enabling supply-chain protection defaults. It also overhauls configuration handling, moving most settings out of .npmrc, and introduces a new SQLite-backed store index for faster installations.
Need More Details?
View the full release notes and all changes for pnpm v11.0.0-rc.0.
View Full Changelog