pnpm solves a real problem: npm and Yarn waste disk space by duplicating packages across projects. If you have ten projects using React, you have ten copies of React. pnpm uses a content-addressable store that keeps one copy and creates hard links. On a machine with many projects, this can save gigabytes.
But disk space is just the beginning. pnpm is also significantly faster for most operations. Installations that take minutes with npm often complete in seconds with pnpm. The speed comes from parallelization, caching, and not having to copy files.
The strict node_modules structure catches mistakes that slip through with npm. If you use a package without declaring it in package.json—maybe it was hoisted from a dependency—pnpm will fail. This strictness means your project actually works when deployed, not just on your machine.
Workspace support for monorepos is built in and works well. You can manage multiple packages in one repository with shared dependencies, run scripts across packages, and publish with versioning. For teams adopting monorepo architectures, pnpm handles the complexity without external tools.
Migration from npm is usually straightforward—delete node_modules, run pnpm install, and you're done. The lockfile format is different, so you're committing to pnpm once you start, but the format is transparent enough to review in PRs.
The ecosystem has fully embraced pnpm. Major frameworks and tools support it, and most tutorials now mention it alongside npm and Yarn. For new projects, there's little reason not to use it.