Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!
We spend hours on Instagram and YouTube and waste money on coffee and fast food, but wonβt spend 30 minutes a day learning skills to boost our careers.
Master in DevOps, SRE, DevSecOps & MLOps!
Learn from Guru Rajesh Kumar and double your salary in just one year.

What is FNM?
FNM (Fast Node Manager) is a lightweight, super-fast, and cross-platform Node.js version manager. It allows developers to easily install, manage, and switch between multiple versions of Node.js on their systems.
Built in Rust, FNM is known for its speed, low memory footprint, and excellent developer experience, making it a popular alternative to traditional managers like nvm
(Node Version Manager).
FNM is especially designed to handle high-volume development environments where switching Node.js versions quickly is critical. It supports shell integrations, automatic .nvmrc
version loading, and lazy loading for even faster terminal startups.
In a nutshell, FNM simplifies Node.js environment management without the performance penalties associated with older tools.
What are the Major Use Cases of FNM?
FNM is incredibly useful in several scenarios, especially where speed, flexibility, and simplicity are required. Some of the major use cases include:
- Managing Multiple Node.js Projects
- Easily switch between Node.js versions depending on the project requirements using
.nvmrc
or.node-version
files.
- Easily switch between Node.js versions depending on the project requirements using
- Development Environment Setup
- Quickly set up Node.js environments for developers working across multiple applications and frameworks (React, Next.js, Express, etc.).
- CI/CD Pipeline Optimization
- Integrate FNM into Continuous Integration workflows to efficiently set up required Node.js versions during build and deployment stages.
- Cross-Platform Development
- Use FNM seamlessly across Linux, macOS, and Windows systems without needing platform-specific tweaks.
- Faster Terminal Startup
- Unlike
nvm
, FNM uses shell hooks and lazy-loading techniques to make terminals start faster without loading Node.js versions until necessary.
- Unlike
- Scripting and Automation
- Automate tasks that require switching Node.js versions without the overhead of slow loading scripts.
How FNM Works Along with Architecture?

FNMβs underlying architecture is simple, robust, and performance-oriented. Hereβs how it works:
Core Architecture Components:
- Rust-Based Core
- FNM is written in Rust, providing high-speed execution, low memory usage, and strong cross-platform compatibility.
- Shell Hooks Integration
- Hooks into popular shells (Bash, Zsh, Fish, PowerShell) for dynamic version switching and environment setup.
- Node.js Versions Storage
- Node.js binaries are downloaded and stored in a centralized directory (usually inside the userβs home directory like
~/.fnm
).
- Node.js binaries are downloaded and stored in a centralized directory (usually inside the userβs home directory like
- Environment Variable Management
- Dynamically updates environment variables like
PATH
,NODE_VERSION
, andNPM_CONFIG_PREFIX
to reflect the selected Node.js version.
- Dynamically updates environment variables like
- Lazy Loading Mechanism
- Delays the activation of Node.js versions until a Node-related command (
node
,npm
,npx
) is run, making the terminal faster to start.
- Delays the activation of Node.js versions until a Node-related command (
How It Operates:
- Detects
.nvmrc
or.node-version
files in the project directory. - Automatically switches to the corresponding Node.js version.
- If the version is missing, it prompts or automatically installs it.
- Updates environment variables so that
node
,npm
, andnpx
commands use the right version.
What is the Basic Workflow of FNM?
The workflow of FNM is designed to be simple, fast, and intuitive:
- Install FNM
- Install FNM via the installer or package manager of your system.
- Configure Shell Integration
- Add FNM initialization script to your shell config (
.bashrc
,.zshrc
,.config/fish/config.fish
, etc.).
- Add FNM initialization script to your shell config (
- Install Node.js Versions
- Use simple commands to install and manage different versions of Node.js.
- Switch Between Versions
- Dynamically or manually switch between versions based on project needs.
- Use Automatic Version Detection
- Place a
.nvmrc
file in your project folder and let FNM automatically handle version switching.
- Place a
- Uninstall or Update Versions
- Quickly remove or update installed versions when needed.
Step-by-Step Getting Started Guide for FNM
Hereβs a simple guide to get you up and running with FNM quickly:
1. Install FNM
The fastest way is to use the installation script:
curl -fsSL https://fnm.vercel.app/install | bash
Or you can use Homebrew (macOS/Linux):
brew install fnm
Or Scoop (Windows):
scoop install fnm
2. Configure Your Shell
After installing, add FNM to your shell startup file:
For Bash:
eval "$(fnm env --use-on-cd)"
For Zsh:
eval "$(fnm env --use-on-cd)"
For Fish:
fnm env --use-on-cd | source
After adding, restart your terminal.
3. Install a Node.js Version
Now install the Node.js version you want:
fnm install 18
(Replace 18
with whatever Node.js version you want.)
4. Use a Specific Version
To switch to a version:
fnm use 18
You can also set a default version:
fnm default 18
5. Automatic Version Switching
Add a .nvmrc
file to your project:
echo "18" > .nvmrc
When you cd
into the project folder, FNM will automatically switch to Node.js 18 if itβs installed.
6. Listing and Managing Versions
- List installed versions:
fnm list
- Uninstall a version:
fnm uninstall 16
- List available versions:
fnm ls-remote