Visitar URL original
[windows] pnpm 12 is (still) slow · Issue #16839 · pnpm/pnpm · GitHub
Skip to content

[windows] pnpm 12 is (still) slow #16839

Closed

Description

@henrik-wassdahl

Verify latest release

  • I verified that the issue exists in the latest pnpm release

pnpm version

12.10.1

Which area(s) of pnpm are affected? (leave empty if unsure)

No response

Link to the code that reproduces this issue or a replay of the bug

No response

Reproduction steps

Use windows 10 and install latest pnpm v12 and run any pnpm command

Describe the Bug

This is github issue an encore issue of #16468. It's just as slow as before. It seems the fix didn't help.

Latest version of v12 (v12.10.1) takes ~1500% as much time compared to the latest version of v11 (v11.28.5)

pnpm self-update 11
Checking for updates...
Switching pnpm from v12.10.1 to v11.28.5...
The current project has been updated to use pnpm v11.28.5
Successfully updated pnpm to v11.28.5
pnpm i
Scope: all 36 workspace projects
Already up to date
Done in 4.9s using pnpm v11.28.5

pnpm self-update
Checking for updates...
Switching pnpm from v11.28.5 to v12.10.1...
Successfully updated pnpm to v12.10.1
pnpm i
Scope: all 36 workspace projects
Already up to date
Done in 1m 25.3s using pnpm v12.10.1

Expected Behavior

Not to be slow

Which Node.js version are you using?

v24.15.0

Which operating systems have you used?

  • macOS
  • Windows
  • Linux

If your OS is a Linux based, which one it is? (Include the version if relevant)

No response

Contributing a fix

  • I am working on a fix

Activity

  1. zkochan commented on Oct 11, 2026

    @zkochan
    Member

    Thanks for the follow-up. This looks like a different cause from #16468, and it was fixed after 12.10.1.

    In 12.10.1, an install that could not take the "Already up to date" shortcut reran the build of every dependency that is allowed to build, on every install. That happens, for example, in a workspace with a file: dependency or with recursiveInstall: false. On Windows, builds that use node-gyp are slow, so this adds a lot of time. The reporter still prints "Already up to date" at the end, because nothing was added or removed. The fix is #16709, released in 12.11.0. On Windows, 12.10.1 reran esbuild's postinstall on every install in a workspace with a file: dependency. 12.12.0 ran no builds.

    Please upgrade to the latest version and try again:

    pnpm self-update
    pnpm install
    pnpm install

    If the second pnpm install is still slow, please run this and paste the output here:

    $env:TRACE='pacquet::install=debug'; pnpm install; Remove-Item Env:TRACE

    Look for a line like repeat-install fast path skipped ... reason: "...". It shows why the shortcut was skipped. Also include any build output that appears (lines with install: or postinstall:).


    Written by an agent (Claude Code, claude-opus-5-5).

  2. henrik-wassdahl commented on Oct 13, 2026

    @henrik-wassdahl
    Author
    > $env:TRACE='pacquet::install=debug'; pnpm install; Remove-Item Env:TRACE
    Scope: all 34 workspace projects
    Already up to date
    Done in 2m 33.8s using pnpm v12.11.2
    

    No logs and no improvements.

  3. zkochan commented on Oct 13, 2026

    @zkochan
    Member

    Thanks for running it. An empty TRACE output is itself a clue: the only line that target could print on this path was the reason the fast path was skipped, so your install went through the engine, decided nothing had changed, and then spent its time on something silent.

    One such thing is the daily update check. pnpm install starts it alongside the install and waited for it before printing Done in .... If your registry (or a proxy or firewall in front of it) accepts the connection but never answers the request for pnpm's metadata, that wait is a minute per timeout, on an install that had nothing else to do, and no retry is ever recorded, so every install pays it. pnpm v11 never waited for its check, which would explain why only v12 is slow for you. #16902 makes the install wait at most one second for the check.

    The same PR makes TRACE='pacquet::install=debug' report why the shortcut was not taken and how long each phase took, so if the update check is not the cause, the next run will say where the time goes. Once it is released, please run this again and paste the output:

    $env:TRACE='pacquet::install=debug'; pnpm install; Remove-Item Env:TRACE

    Until then, you can check the theory yourself: pnpm install --config.update-notifier=false (or updateNotifier: false in pnpm-workspace.yaml) skips the check entirely. If that brings the install back to seconds, this is it.


    Written by an agent (Claude Code, claude-fable-5-1).

  4. zkochan commented on Oct 15, 2026

    @zkochan
    Member

    Try 12.14.0

  5. Netail commented on Oct 19, 2026

    @Netail
    Contributor

    Same issue on macos (with 12.14.0), sometimes a cold started pnpm install takes 4-6 minutes. Didn't really experience such times with pnpm 11

  6. added a commit that references this issue on Oct 20, 2026
    95043cb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions