schniz/fnm

🚀 Fast and simple Node.js version manager, built in Rust

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 30 minutes ago
Added to GitGenius on September 2nd, 2026
Created on January 16th, 2019
Open Issues & Pull Requests: 243 (+0)
GitHub issues: Enabled
Number of forks: 641
Total Stargazers: 26,805 (-1)
Total Subscribers: 68 (+0)

Repository Insights (GitGenius)

Most active contributors

Sign in to see contributor activity.

Related repositories by overlapping contributors

No overlapping-contributor repos identified yet.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 130
New in 7 days: 1
Closed in 7 days: 0
Avg open age: 702 days
Stale 30+ days: 116
Stale 90+ days: 93

Recent activity

Opened in 7 days: 1
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • enhancement (10)
  • bug (2)
  • good first issue (2)
  • fish shell (1)
  • os:windows (1)

Detailed Description

fnm is a Node.js version manager built in Rust that prioritizes speed and simplicity across macOS, Windows, and Linux.

The tool solves the problem of managing multiple Node.js versions on a single machine. It works by reading `.node-version` and `.nvmrc` files to determine which version should be active, and it installs as a single binary with minimal setup overhead. The Rust implementation focuses on fast startup and execution compared to alternatives written in other languages.

fnm suits developers who need to switch between Node.js versions frequently and want a lightweight, cross-platform solution. It works well in projects that already use `.node-version` or `.nvmrc` files for version specification. The tool offers multiple installation methods including Homebrew on macOS, Winget and Scoop on Windows, and Cargo across platforms, making it accessible regardless of your preferred package manager. Shell setup is required through `fnm env` evaluation, with support for bash, zsh, fish, and PowerShell, and the README recommends passing an explicit shell argument for better performance.

The project maintains active continuous integration workflows and receives regular updates through multiple installation channels. Development activity shows consistent attention to cross-platform compatibility and shell integration, with documentation covering configuration options for features like automatic version switching.