{
  "id": 3681136,
  "title": "Pnpm 12.0",
  "url": "https://urgent.news/2026/08/27/pnpm-12-0",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-27T05:12:39.000Z",
  "source": {
    "name": "Hacker News",
    "slug": "hacker-news",
    "url": "https://pnpm.io/blog/releases/12.0"
  },
  "original_language": "en",
  "account": "pnpm 12.0 has been released. This update is a rewrite of pnpm in Rust, and it maintains the same commands, flags, settings, and lockfile format as pnpm 11. The documentation outlines the differences between the two versions.\n\nThe latest pnpm version on npm still points to the pnpm 11 line, so to install pnpm 12, users must use the next-12 tag: pnpm self-update next-12. For now, Homebrew, winget, Scoop, and Chocolatey do not offer pnpm 12.\n\nIn GitHub, GitLab, and Bitbucket repositories, the specifier now names the repository instead of choosing the transport method. The lockfile no longer records SSH URLs for these hosts, and the lockfile remains compatible with repository changes.\n\nA new setting, pnpm does not recognize, is now reported as an error if a user tries to use it with a pnpm version it was not intended for. Otherwise, it is treated as a warning and does not affect the command execution.\n\nPeer resolution has been improved during the installation process, making it faster, using less memory, and generating a more consistent lockfile. The lockfile remains compatible with existing installations, and installing a project without re-resolving the lockfile will leave it unchanged.\n\nOn Linux, auto now defaults to using hardlinks when possible, which can roughly halve the time it takes to install packages. macOS continues to use clone-first by default.\n\nWhen an incompatible package is reached through a regular dependencies edge of an installable package with engineStrict, an install will now fail instead of emitting a warning. Packages reachable only through optional edges or a package that was skipped will still be skipped in both pnpm 11 and pnpm 12.\n\nThe pnpm config subcommands no longer fail when encountering unknown workspace settings. Dependency cycles are now broken canonically during peer resolution, resulting in byte-identical lockfiles regardless of the order in which packages are installed.\n\nA new feature allows a globally installed node, deno, or bun to follow the version pinned for the current project instead of always using the globally installed version. Users can also specify which globally installed packages should have a shim using the globalShims setting.\n\nA stable Node.js release is now authenticated against the Node.js release team's signatures and installed without any prompts. Other Deno, Bun, and Node.js prereleases ask for user confirmation before installation.",
  "summary": null,
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}