Change8

Migrating to pnpm v11.0.0-beta.5

Version v11.0.0-beta.5 introduces 16 breaking changes. This guide details how to update your code.

Released: 3/29/2026

16
Breaking Changes
15
Migration Steps
16
Affected Symbols

⚠️ 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 initpnpm addpackageConfigsallowBuildsallowUnusedPatchesengines.runtimedevEngines.runtime

Breaking Changes

Issue #1

pnpm no longer populates `npm_config_*` environment variables from the pnpm config during lifecycle scripts. Only well-known `npm_*` env vars are set.

Solution

Review lifecycle scripts to ensure they do not rely on `npm_config_*` variables set by pnpm.

Issue #2

The standalone exe version of pnpm requires at least glibc 2.27.

Solution

Ensure the operating system running the pnpm executable meets the glibc 2.27 requirement.

Issue #3

Removed deprecated build dependency settings: `onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies`. These must be replaced by the `allowBuilds` setting.

Solution

Replace usage of deprecated build dependency settings in configuration files with the `allowBuilds` map structure.

Issue #4

Removed the deprecated `allowNonAppliedPatches` completely in favor of `allowUnusedPatches`.

Solution

Replace usage of `allowNonAppliedPatches` with `allowUnusedPatches` in configuration.

Issue #5

Removed `ignorePatchFailures`; all patch application failures will now throw an error.

Solution

Handle patch application failures explicitly, as they no longer fail silently.

Issue #6

Removed the `pnpm server` command.

Solution

Stop using the `pnpm server` command.

Issue #7

Removed support for `useNodeVersion` and `executionEnv.nodeVersion` fields in configuration.

Solution

Use `devEngines.runtime` and `engines.runtime` fields instead for specifying Node.js runtime versions.

Issue #8

Removed support for `hooks.fetchers`. Custom fetchers/resolvers must now use the `fetchers` field of `pnpmfile`.

Solution

Migrate custom fetcher/resolver configurations from `hooks.fetchers` to the `fetchers` field in `pnpmfile`.

Issue #9

`pnpm install -g` (no arguments) is no longer supported for global installs.

Solution

Use `pnpm add -g <pkg>` instead of `pnpm install -g` to install global packages.

Issue #10

The default value of the `type` field in the project initialized by `pnpm init` is now `module`.

Solution

Projects initialized via `pnpm init` will default to ESM module type.

Issue #11

CLI argument aliases for `pnpm add` changed: `-p` is now `--save-prod` (was `--parseable`), and `-d` is now `--save-dev` (was `--loglevel=info`).

Solution

Update scripts using `-p` or `-d` with `pnpm add` to reflect the new alias meanings.

Issue #12

`pnpm config get` (without `--json`) no longer prints INI formatted text; it prints JSON for objects/arrays and raw values for strings/numbers/booleans/nulls.

Solution

Update scripts relying on INI output from `pnpm config get` to handle the new JSON/raw output format, or use `pnpm config get --json`.

Issue #13

`pnpm config list` now prints a JSON object instead of INI formatted text.

Solution

Update scripts parsing `pnpm config list` output to expect JSON format.

Issue #14

`pnpm config get` and `pnpm config list` (without argument) no longer load non camelCase options from the workspace manifest (`pnpm-workspace.yaml`).

Solution

Ensure configuration options in `pnpm-workspace.yaml` intended to be loaded globally are using camelCase, unless they start with `@` or `//`.

Issue #15

pnpm no longer loads non-auth and non-registry settings from rc files. Other settings must be defined in `pnpm-workspace.yaml`.

Solution

Move configuration settings previously in rc files (that are not auth/registry related) into `pnpm-workspace.yaml`.

Issue #16

Replaced workspace project specific `.npmrc` files with the `packageConfigs` field in `pnpm-workspace.yaml`.

Solution

Migrate project-specific configuration settings from `.npmrc` files into the `packageConfigs` section of `pnpm-workspace.yaml`.

Migration Steps

  1. 1
    If you relied on `npm_config_*` environment variables in lifecycle scripts, update those scripts as they are no longer populated by pnpm config.
  2. 2
    If you used deprecated build dependency settings (`onlyBuiltDependencies`, etc.), replace them with the `allowBuilds` map in your configuration.
  3. 3
    Replace usage of `allowNonAppliedPatches` with `allowUnusedPatches`.
  4. 4
    Remove any configuration of `ignorePatchFailures` as patch failures now always throw.
  5. 5
    Stop using the `pnpm server` command.
  6. 6
    Replace usage of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime`.
  7. 7
    Migrate custom fetcher/resolver configurations from `hooks.fetchers` to the `fetchers` field in `pnpmfile`.
  8. 8
    Use `pnpm add -g <pkg>` instead of `pnpm install -g` to install global packages.
  9. 9
    Update scripts parsing `pnpm config get` output if they expected INI format.
  10. 10
    Update scripts parsing `pnpm config list` output if they expected INI format.
  11. 11
    Ensure configuration options in `pnpm-workspace.yaml` that are not auth/registry related are using camelCase if they are not starting with `@` or `//`, if you rely on them being loaded by `pnpm config get`/`list` without arguments.
  12. 12
    Move non-auth/non-registry settings from rc files into `pnpm-workspace.yaml`.
  13. 13
    Migrate project-specific configuration settings from `.npmrc` files into the `packageConfigs` section of `pnpm-workspace.yaml`.
  14. 14
    If using `pnpm add` with `-p` or `-d`, be aware that their aliases have changed to `--save-prod` and `--save-dev` respectively.
  15. 15
    If publishing packages and requiring OTP, set the `PNPM_CONFIG_OTP` environment variable instead of `NPM_CONFIG_OTP`.

Release Summary

This release introduces major architectural changes, including migrating the content-addressable store index to SQLite (Store v11) and isolating global package installations for better stability. Configuration handling has been significantly overhauled, moving project-specific settings from `.npmrc` to `pnpm-workspace.yaml` and changing CLI output formats.

Need More Details?

View the full release notes and all changes for pnpm v11.0.0-beta.5.

View Full Changelog