fnm — Fast and Simple Node.js Version Manager
fnm (Fast Node Manager) is a blazing-fast Node.js version manager built in Rust. It installs and switches Node.js versions instantly, supports .node-version and .nvmrc files, and is 40x faster than nvm with cross-platform support.
Review-first install path
This asset needs a review step. The copied prompt tells the agent to dry-run, show the writes, then proceed only after confirmation.
npx -y tokrepo@latest install 81fadebf-3745-11f1-9bc6-00163e2b0d79 --target codexDry-run first, confirm the writes, then run this command.
What it is
fnm (Fast Node Manager) is a Node.js version manager built in Rust. It installs and switches between Node.js versions instantly, supports .node-version and .nvmrc files, and works on macOS, Linux, and Windows. fnm is a drop-in replacement for nvm with dramatically faster performance.
fnm is for any JavaScript or TypeScript developer who works across multiple projects requiring different Node.js versions.
The project is actively maintained with regular releases and a growing user community. Documentation covers common use cases, and the open-source nature means you can inspect the source code, contribute fixes, and adapt the tool to your specific requirements.
How it saves time or tokens
Traditional version managers like nvm add noticeable shell startup latency (200-500ms per new terminal). fnm loads in under 1ms because it is a compiled Rust binary, not a shell script. Automatic version switching via .node-version files means you never run the wrong Node version in a project directory.
How to use
- Install fnm via curl, brew, or cargo.
- Add the shell integration to your shell profile (bash, zsh, fish, or PowerShell).
- Run
fnm install <version>andfnm use <version>to manage Node.js versions.
Example
# Install fnm
curl -fsSL https://fnm.vercel.app/install | bash
# Or via Homebrew
brew install fnm
# Add to .zshrc
eval "$(fnm env --use-on-cd)"
# Install and use Node.js versions
fnm install 22
fnm use 22
node --version # v22.x.x
# Auto-switch: create .node-version
echo '20' > .node-version
cd . # fnm switches to Node 20 automatically
Related on TokRepo
- AI Tools for Coding -- Developer environment and toolchain utilities
- Featured Workflows -- Top workflows curated on TokRepo
Common pitfalls
- Forgetting to add
eval "$(fnm env --use-on-cd)"to your shell profile means automatic version switching will not work. - fnm and nvm can conflict if both are installed. Remove nvm initialization from your shell profile before switching to fnm.
- On Windows, fnm requires the
--shell powershellflag for proper integration with PowerShell.
Before adopting this tool, evaluate whether it fits your team's existing workflow. Read the official documentation thoroughly, and start with a small proof-of-concept rather than a full migration. Community forums, GitHub issues, and Stack Overflow are valuable resources when you encounter edge cases not covered in the documentation.
Frequently Asked Questions
fnm is approximately 40x faster than nvm for shell startup. nvm is a bash script that adds 200-500ms to every new terminal session. fnm is a compiled Rust binary that loads in under 1ms.
Yes. fnm reads both .node-version and .nvmrc files. When you cd into a directory containing either file, fnm automatically switches to the specified Node.js version if you have --use-on-cd enabled.
For most users, yes. fnm supports the same core commands (install, use, list, default) and reads the same version files. Some nvm-specific features like reinstalling global packages on upgrade are handled differently in fnm.
Yes. fnm has native Windows support via PowerShell and cmd. Install via winget, scoop, or chocolatey. The --shell powershell flag enables automatic version switching in PowerShell sessions.
fnm uses per-shell version resolution. Each terminal session can use a different Node.js version. The version is determined by the .node-version file in the current directory, the default alias, or an explicit fnm use command.
Citations (3)
- fnm GitHub— fnm is a fast and simple Node.js version manager built in Rust
- fnm README— fnm supports .node-version and .nvmrc files
- Rust Language— Rust provides zero-cost abstractions for CLI performance
Related on TokRepo
Discussion
Related Assets
Hexo — Fast Node.js Blog Framework with Plugin Ecosystem
Hexo is a fast, simple, and extensible blog framework powered by Node.js. It renders Markdown posts into static HTML in seconds and supports hundreds of themes and plugins.
Yazi — Blazing Fast Terminal File Manager in Rust
Yazi is a blazing fast terminal file manager written in Rust, based on async I/O. Preview images and videos in terminal, fuzzy search, batch operations, plugin system, and seamless integration with tools like fzf, zoxide, and rg.
Lit — Simple Library for Fast Lightweight Web Components
Lit is a simple library for building fast, lightweight web components. Built by Google on top of the standard Web Components APIs, it provides reactive properties, scoped styles, and a declarative templating system in about 5KB.
Express — Fast Unopinionated Minimalist Web Framework for Node.js
Express is the original, most popular web framework for Node.js. Minimal, flexible, and the foundation of countless APIs. The go-to starting point for Node.js backends that inspired Koa, Hono, Fastify, and many others.