Change8

Migrating to pnpm v11.0.0-alpha.11

Version v11.0.0-alpha.11 introduces 20 breaking changes. This guide details how to update your code.

Released: 2/24/2026

20
Breaking Changes
9
Migration Steps
20
Affected Symbols

⚠️ Check Your Code

If you use any of these symbols, you need to read this guide:

`pnpm config get``pnpm config list`rc files configuration loadingworkspace manifest configuration loading`.npmrc` in workspace projects`onlyBuiltDependencies``onlyBuiltDependenciesFile``neverBuiltDependencies``ignoredBuiltDependencies``allowNonAppliedPatches``ignorePatchFailures``pnpm server``useNodeVersion``executionEnv.nodeVersion``hooks.fetchers``pnpm init` default type`pnpm add` aliases (-p, -d)`pnpm publish` OTP reading`pnpm why` output formatpnpmfile loading (ESM support)

Breaking Changes

Issue #1

The `pnpm config get` command (without `--json`) no longer outputs INI formatted text; it now outputs JSON for objects/arrays and raw strings for primitives. Use `pnpm config get --json` if you require JSON output for all types.

Issue #2

`pnpm config get <array>` now prints a JSON array instead of INI format.

Issue #3

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

Issue #4

Auth-related settings are hidden by default from `pnpm config list` and `pnpm config get` (without arguments).

Issue #5

`pnpm config list` and `pnpm config get` (without argument) now show top-level keys as camelCase, except for keys starting with @ or //.

Issue #6

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

Issue #7

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

Issue #8

Workspace project specific `.npmrc` files are replaced by the `packageConfigs` field in `pnpm-workspace.yaml`.

Issue #9

The package is now pure ESM; CommonJS usage will break.

Issue #10

Support for Node.js v18, v19, v20, and v21 has been discontinued. Upgrade your Node.js version.

Issue #11

The standalone exe version requires at least glibc 2.27.

Issue #12

Deprecated build dependency settings (`onlyBuiltDependencies`, `onlyBuiltDependenciesFile`, `neverBuiltDependencies`, and `ignoredBuiltDependencies`) have been removed. Use the `allowBuilds` setting instead.

Issue #13

The deprecated `allowNonAppliedPatches` option has been completely removed in favor of `allowUnusedPatches`.

Issue #14

The `ignorePatchFailures` option has been removed; all patch application failures will now throw an error.

Issue #15

The `pnpm server` command has been removed.

Issue #16

Support for `useNodeVersion` and `executionEnv.nodeVersion` fields has been removed. Use `devEngines.runtime` and `engines.runtime` instead.

Issue #17

Support for `hooks.fetchers` has been removed. Use the new API via the `fetchers` field of `pnpmfile`.

Issue #18

The default value for the `type` field in `package.json` initialized by `pnpm init` is now `module`.

Issue #19

When using `pnpm add`: `-p` is now an alias for `--save-prod` (was `--parseable`), and `-d` is now an alias for `--save-dev` (was `--loglevel=info`).

Issue #20

The One-time Password feature for `pnpm publish` now reads from `PNPM_CONFIG_OTP` instead of `NPM_CONFIG_OTP`.

Migration Steps

  1. 1
    If you relied on the output format of `pnpm config get` (without `--json`), update scripts to handle JSON output or use `pnpm config get --json`.
  2. 2
    If you used workspace project specific `.npmrc` files, migrate configuration settings to the `packageConfigs` field in `pnpm-workspace.yaml`.
  3. 3
    If you used deprecated build dependency settings (`onlyBuiltDependencies`, etc.), replace them with the `allowBuilds` map in your configuration.
  4. 4
    Replace usage of deprecated `allowNonAppliedPatches` with `allowUnusedPatches`.
  5. 5
    Remove usage of `ignorePatchFailures` as all patch failures now throw errors.
  6. 6
    Replace usage of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime`.
  7. 7
    Replace usage of `hooks.fetchers` with the new API using the `fetchers` field in `pnpmfile`.
  8. 8
    Update scripts that rely on the OTP feature for `pnpm publish` to use the `PNPM_CONFIG_OTP` environment variable instead of `NPM_CONFIG_OTP`.
  9. 9
    If you rely on features of `pnpm publish` that used `npm publish` internally, consider using the workaround `pnpm pack && npm publish *.tgz`.

Release Summary

This release introduces major performance improvements across the store by switching to MessagePack and optimizing index formats, alongside significant changes to configuration loading, moving away from INI/rc files towards YAML for pnpm-specific settings. Many deprecated configuration options and commands have been removed, and the package is now pure ESM.

Need More Details?

View the full release notes and all changes for pnpm v11.0.0-alpha.11.

View Full Changelog