Change8

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

12
Breaking Changes
9
Migration Steps
19
Affected Symbols

⚠️ 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 commands

Breaking 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

  1. 1
    Upgrade your Node.js environment to version 22 or higher.
  2. 2
    If you relied on CommonJS loading for pnpm scripts, update them to handle pure ESM.
  3. 3
    If you used deprecated build dependency settings (`onlyBuiltDependencies`, etc.), replace them with the `allowBuilds` map in your configuration.
  4. 4
    If you need to opt out of the 1-day minimum release age protection, set `minimumReleaseAge: 0` in `pnpm-workspace.yaml`.
  5. 5
    Move configuration settings other than auth/registry (e.g., `hoistPattern`, `nodeLinker`) from `.npmrc` files to `pnpm-workspace.yaml` or `~/.config/pnpm/config.yaml`.
  6. 6
    Ensure environment variables for configuration use the `pnpm_config_*` prefix.
  7. 7
    If you use global packages, run `pnpm setup` to update your shell configuration to point to the new location for globally installed binaries.
  8. 8
    Review usage of `pnpm link`. If linking local packages, use explicit paths (e.g., `pnpm link ./my-package`).
  9. 9
    If 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