Assembly Line

Instead of nvm: fnm

Use fnm. It is a single Rust binary that does nvm's job on macOS, Linux and Windows, starts instantly instead of slowing every new shell, and reads the .nvmrc files you already have.

Old nvm ★ 96k MIT Shell Pushed yesterday github.com
Instead fnm ★ 27k GPL-3.0 Rust Pushed 10 days ago fnm.vercel.app

Both are for installing several Node.js versions and switching between them per project.

Why fnm is better

  • It runs natively on Windows, installable with winget, Scoop or Chocolatey. nvm is a POSIX shell script that works on Windows only through WSL, Git Bash or Cygwin, and points native Windows users to a separate project, nvm-windows.
  • It is a compiled binary with instant startup. nvm is sourced into every shell, which is why its own README documents a --no-use flag to postpone loading it.
  • With fnm env --use-on-cd it switches Node versions automatically when you enter a directory with a .node-version or .nvmrc file. In nvm that needs a hand-written shell hook.
  • It works in bash, zsh, fish, PowerShell and Windows cmd from the same binary.

When to keep nvm

Keep nvm if it already works for you on macOS or Linux and shell startup time does not bother you; it is maintained, and 6,218 State of JS 2025 respondents still use it against 319 for fnm.

Switching

Install fnm, add the one-line eval "$(fnm env --use-on-cd)" setup to your shell profile in place of the nvm loader, and run fnm install for the versions you need. Existing .nvmrc files keep working. Remove the nvm lines and the ~/.nvm folder once you are done.

Watch out

fnm manages only Node.js; for Python, Go or other runtimes you need another tool, which is where mise fits. It is licensed GPL-3.0, which matters only if you redistribute a modified copy.

Also worth a look

  • mise A Rust tool manager that pins Node alongside Python, Go and 1,000+ other tools, plus environment variables and tasks, in one mise.toml; pick it when a project needs more than Node, and it is what Volta's maintainers recommend now that Volta is unmaintained.

More newer, better JavaScript runtimes and version managers

Sources

Judged on 2026-11-06. See every javaScript runtimes and version managers, or all 66 replacements.