Change8

Migrating to pnpm v11.0.0-beta.6

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

Released: 3/30/2026

11
Breaking Changes
9
Migration Steps
10
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 init

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 environment variables prefixed with `npm_config_` 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`. They are replaced by the `allowBuilds` setting.

Solution

Replace usage of deprecated fields in configuration files with the new `allowBuilds` map in `pnpm-workspace.yaml` or `.npmrc`.

Issue #4

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

Solution

Replace configuration using `allowNonAppliedPatches` with `allowUnusedPatches`.

Issue #5

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

Solution

Ensure patches are valid, or handle expected patch failures explicitly if necessary, as they will now halt execution.

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 versions.

Issue #8

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

Solution

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

Issue #9

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

Solution

If you require CommonJS modules for new projects initialized via `pnpm init`, explicitly set `"type": "commonjs"` in your project's `package.json`.

Issue #10

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 meanings or use full flags.

Issue #11

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

Solution

Update environment variable usage for OTP when publishing: use `PNPM_CONFIG_OTP`.

Migration Steps

  1. 1
    If relying on `npm_config_*` environment variables in lifecycle scripts, migrate logic to use standard `npm_*` variables or pass configuration explicitly.
  2. 2
    If using deprecated build dependency settings (`onlyBuiltDependencies`, etc.), replace them with the `allowBuilds` map in configuration.
  3. 3
    If using `allowNonAppliedPatches`, change configuration to use `allowUnusedPatches`.
  4. 4
    If using `pnpm server`, find an alternative method for the required functionality.
  5. 5
    Replace usage of `useNodeVersion` or `executionEnv.nodeVersion` with `devEngines.runtime` or `engines.runtime`.
  6. 6
    Migrate custom fetchers/resolvers from `hooks.fetchers` in `pnpmfile` to the `fetchers` field.
  7. 7
    If using `pnpm init`, explicitly set `"type": "commonjs"` in `package.json` if CommonJS modules are required.
  8. 8
    Update scripts using `pnpm add -p` or `pnpm add -d` if the old flag behavior (e.g., `--parseable` for `-p`) was relied upon.
  9. 9
    Ensure OTP for publishing is set via the `PNPM_CONFIG_OTP` environment variable instead of `NPM_CONFIG_OTP`.

Release Summary

This release introduces significant performance improvements via a new SQLite-backed store index and isolated global package installations. It also cleans up CLI output, updates configuration handling (especially around build dependencies and workspace configs), and drops support for older Node.js versions.

Need More Details?

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

View Full Changelog