
pnpm v12.0.0-beta.0 just dropped, and it is the biggest structural change to the package manager since launch: a full rewrite from TypeScript to Rust, shipping as native per-platform binaries. No Node.js launcher. No runtime boot on every command. At 103 million weekly downloads, pnpm is effectively the default package manager for new JavaScript projects in 2026. The pnpm v12 beta matters.
What Changed Under the Hood in pnpm v12
Every time you ran pnpm install, the tool first booted a Node.js runtime — even when your node_modules was fully cached and the actual install work took milliseconds. The Node.js startup was the overhead. On local dev that is noise. In a tight CI pipeline running dozens of steps, it is a tax you pay on every invocation.
pnpm v12 eliminates it. The package manager now ships as native per-platform binaries under @pnpm/exe.<platform>-<arch>. The binary installs directly. When you run pnpm, you run Rust. No Node.js in the path.
Internal profiling from the pnpm team points to at least 2x speed improvement in the fetch-and-link phase. That figure has not been published as a formal benchmark — it comes from profiling the Rust engine against the TypeScript version on the pnpm monorepo itself. The pnpm team is already running v12 alpha on their own codebase, which is a meaningful signal.
How to Try pnpm v12 Now
pnpm 11.10 added the ability for pnpm self-update to install v12. If you are on v11.10.0 or newer, run:
# Upgrade to pnpm v12 beta
pnpm self-update next-12
# Confirm version
pnpm --version
# Roll back to stable v11 if needed
pnpm self-update 11
That is it. The binary replaces itself in place. See the pnpm 11.10 release post for the full changelog on how pnpm self-update gained this capability.
What Breaks in pnpm v12 (Almost Nothing)
The pnpm team made a deliberate choice to keep breaking changes minimal. Your lockfile format is unchanged. Your commands are unchanged. Your flags are unchanged. Upgrading v11 to v12 is not a migration — it is a drop-in for most projects.
Three things do change:
- pnpm self-update ignores project config: In pnpm v12,
pnpm self-updateno longer reads.npmrc,pnpm-workspace.yaml, or.pnpmfilewhen fetching the pnpm binary. It uses the trusted registry directly — which is the correct behavior. Mixing project-level trust policies into a tool that manages its own installation was a footgun. - $ syntax in overrides is deprecated: Use catalogs instead. If you are not using
$overrides, this does not affect you. - Unscoped auth settings rejected: If you have loose auth config in your registry setup, pnpm v12 will reject it. Scoped auth is the correct approach anyway.
New in pnpm v12 Beta.0: Workspace Improvements
Beyond the Rust engine going default, beta.0 ships meaningful workspace improvements:
- The Rust engine now reads
frozenLockfile,savePrefix,savePeer, andsaveCatalogNamefrompnpm-workspace.yamlandPNPM_CONFIG_*environment variables — previously these required CLI flags. pnpm update --workspaceis now supported, letting you re-point workspace dependencies to local copies using theworkspace:protocol in one command.pnpm update --depth <number>is now applied per dependency, giving finer control over update depth.
The workspace improvements alone are worth testing if you run a monorepo. See the full pnpm v12.0.0-beta.0 release notes for the complete list of changes.
pnpm v12 and the Rust Tooling Wave
pnpm v12 is not doing anything unusual. In 2026, Rust is systematically replacing JavaScript in JS tooling: Turbopack delivers 2-10x faster builds in Next.js, Rolldown replaced esbuild and Rollup inside Vite with 10-30x production build speed gains, and Biome formats code 56x faster than Prettier. The pattern is consistent: take a performance-critical tool written in Node.js or JavaScript, rewrite the hot path in Rust, ship native binaries, skip the runtime.
pnpm v12 is the package manager’s entry into that club. Lee Robinson’s “Rust Is Eating JavaScript” is required reading if you want the full picture of where this trajectory ends.
Should You Use pnpm v12 in Production?
Not yet. This is a beta. That said, it is a very good beta: the pnpm team is dogfooding it on their own monorepo, the lockfile format is unchanged, and the breaking changes are small and intentional. For local development and experimentation, pnpm self-update next-12 carries low risk.
For CI: stay on v11.13.0 for now. Watch for the stable release, which is tracking for Q3/Q4 2026 based on the beta progression. When stable drops, upgrading will be a one-liner. If you want to benchmark your specific workload against v11, this beta is the right time to start — before stable lands and teams flood the issue tracker with production reports.













