Migrating to pnpm v11.0.0-beta.2
Version v11.0.0-beta.2 introduces 19 breaking changes. This guide details how to update your code.
Released: 3/21/2026
⚠️ Check Your Code
If you use any of these symbols, you need to read this guide:
pnpm config getpnpm config listpnpm add -gpnpm dlxpnpm remove -gpnpm update -gpnpm list -gpnpm install -gpnpm publishpnpm initBreaking Changes
●Issue #1
The standalone exe version of pnpm requires at least glibc 2.27.
●Issue #2
Node.js v18, 19, 20, and 21 support has been discontinued. Upgrade your Node.js version.
●Issue #3
pnpm config get (without --json) no longer prints INI formatted text; it now prints JSON for objects/arrays and raw strings for primitives. If you relied on INI output, use `pnpm config get --json`.
●Issue #4
pnpm config list now prints a JSON object instead of INI formatted text. If you relied on INI output, this has changed.
●Issue #5
pnpm config list and pnpm config get (without argument) now hide auth-related settings.
●Issue #6
pnpm config list and pnpm config get (without argument) now show top-level keys as camelCase, except for keys starting with @ or //.
●Issue #7
pnpm config get and pnpm config list no longer load non camelCase options from the workspace manifest (`pnpm-workspace.yaml`).
●Issue #8
pnpm no longer loads non-auth and non-registry settings from rc files. Other settings must be defined in `pnpm-workspace.yaml`.
●Issue #9
Workspace project specific `.npmrc` files are replaced by `packageConfigs` in `pnpm-workspace.yaml`. Migrate settings from `.npmrc` to `packageConfigs` in your workspace root.
●Issue #10
The `patchedDependencies` lockfile format is simplified from `Record<string, { path: string, hash: string }>` to `Record<string, string>`. Existing lockfiles are migrated automatically.
●Issue #11
The deprecated build dependency settings (`onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies`) are removed. Use the `allowBuilds` setting in configuration instead.
●Issue #12
The deprecated `allowNonAppliedPatches` is completely removed in favor of `allowUnusedPatches`. Remove `ignorePatchFailures` as all patch application failures now throw an error.
●Issue #13
The `pnpm server` command has been removed.
●Issue #14
Support for `useNodeVersion` and `executionEnv.nodeVersion` fields is removed. Use `devEngines.runtime` and `engines.runtime` instead.
●Issue #15
Support for `hooks.fetchers` is removed. Use the new API via the `fetchers` field of `pnpmfile`.
●Issue #16
The default value of the `type` field in the `package.json` file initialized by `pnpm init` is changed to `module`.
●Issue #17
Lowercase options for `pnpm add` have new meanings: `-p` is now an alias for `--save-prod` (was `--parseable`), and `-d` is now an alias for `--save-dev` (was `--loglevel=info`).
●Issue #18
pnpm publish no longer calls `npm publish` and now reads OTP from `PNPM_CONFIG_OTP` instead of `NPM_CONFIG_OTP`.
●Issue #19
pnpm no longer reads settings from the `pnpm` field of `package.json`. Settings must be defined in `pnpm-workspace.yaml`.
Migration Steps
- 1If you relied on INI output from `pnpm config get` (without `--json`), switch to using `pnpm config get --json`.
- 2If you relied on INI output from `pnpm config list`, be aware it now outputs
- 3Migrate configuration settings previously defined in project-specific `.npmrc` files into the `packageConfigs` section of your root `pnpm-workspace.yaml`.
- 4Replace usage of deprecated build dependency settings (`onlyBuiltDependencies`, etc.) with the `allowBuilds` map in configuration.
- 5Replace usage of deprecated `allowNonAppliedPatches` with `allowUnusedPatches`.
- 6Update global package management commands: use `pnpm add -g <pkg>` instead of `pnpm install -g` (no args).
- 7If you used `pnpm config get <array>`, ensure consuming scripts handle JSON array output.
- 8If you relied on build dependency settings, migrate them to the `allowBuilds` structure.
- 9If you relied on the old behavior of `-p` or `-d` flags with `pnpm add`, update scripts to use the new aliases or full flags (`--save-prod` or `--save-dev`).
- 10If you relied on OTP for publishing via `NPM_CONFIG_OTP`, switch to using the `PNPM_CONFIG_OTP` environment variable or the `--otp` flag.
- 11If you relied on settings in the `pnpm` field of `package.json`, move them to `pnpm-workspace.yaml`.
Release Summary
This major release introduces significant architectural changes to the content-addressable store using SQLite and optimizes metadata storage, alongside isolating global package installations for better stability. Many deprecated configuration options and commands have been removed, and pnpm is now pure ESM.
Need More Details?
View the full release notes and all changes for pnpm v11.0.0-beta.2.
View Full Changelog