v12.0.0-rc.5
Breaking Changes📦 pnpmView on GitHub →
⚠ 1 breaking✨ 2 features🐛 3 fixes🔧 1 symbols
Summary
This release introduces canonical dependency cycle breaking for deterministic lockfiles and improved peer resolution performance. It also fixes several issues related to lockfile generation and dependency updates.
⚠️ Breaking Changes
- Dependency cycles are now broken canonically during peer resolution. Previously, the cut depended on the walk path, leading to non-deterministic lockfiles and incorrect peer resolution verdicts. Existing lockfiles will continue to work, but the first install that re-resolves will re-key walk-order-dependent peer variants of cyclic packages once.
Migration Steps
- The first install after this update that re-resolves dependencies (e.g., after a dependency change) will re-key walk-order-dependent peer variants of cyclic packages once.
✨ New Features
- The resolved dependency graph and lockfile no longer depend on the order of workspace projects, ensuring byte-identical lockfiles regardless of project listing order.
- `pnpm update` now writes the new version range back to `package.json` and the `catalog:` entry, preserving the declared range operator and dist-tag tracking.
🐛 Bug Fixes
- Auto-installed peer dependencies are no longer resolved to their lowest satisfying versions under `resolutionMode: lowest-direct` or `time-based`. They now resolve like transitive dependencies to the highest satisfying version.
- Fixed non-deterministic lockfiles on cold installs of projects with cyclic peer dependencies where resolved peer variants could be silently dropped.
- A lockfile entry whose resolution is unchanged no longer loses its recorded `deprecated` marker when registry metadata is inconsistent.