Installing and switching Flutter versions with FVM

Egor Dolgov · 09.11.2026
Which system are you on?
macOS
Windows
Linux
Show me step by step
Subtitles
First, pick your system — the commands will match it.

FVM (Flutter Version Management) is a tool that keeps several Flutter versions on your computer and pins the right one to each project. It helps when an old project lives on one version and a new one on another, or when everyone working on a project must build it with the same version.

You don't need FVM for the first lessons — the regular install from Lesson 0 is enough. The FVM authors themselves recommend keeping a regular Flutter install as the main version on your computer and using FVM for project versions.

Contents:

  1. Installing FVM
  2. Downloading a Flutter version
  3. Choosing a version for a project
  4. Running through FVM
  5. Setting up your editor
  6. Useful commands
  7. Summary

1. Installing FVM

FVM downloads Flutter with Git, so Git must be installed (how to install it is on the Installing Git page).

macOS — with Homebrew :

brew tap btwld/fvm
brew install btwld/fvm/fvm

Linux — with the install script. It installs FVM into ~/fvm/bin without sudo but doesn't change PATH, so the second and third lines append the path to the bash and zsh settings files (as in Lesson 0 ):

curl -fsSL https://fvm.app/install.sh | bash
echo 'export PATH="$HOME/fvm/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/fvm/bin:$PATH"' >> ~/.zshenv

Then open a new terminal window.

Windows — with Chocolatey : open PowerShell as an administrator (Chocolatey requires it; in the Start menu right-click PowerShell → Run as administrator) and run:

choco install fvm

Chocolatey installs FVM on x64 only. If you don't have Chocolatey or your computer is ARM64, the FVM docs offer a zip from the releases page : extract it and add the fvm folder to PATH, like the Flutter folder in Lesson 0.

Check:

fvm --version

The command prints the FVM version number, for example 4.1.2 .

2. Downloading a Flutter version

The Flutter versions you can install:

fvm releases

The end of the list shows the latest version of the stable channel:

Channel:
┌─────────┬─────────┬──────────────┐
│ Channel │ Version │ Release Date │
├─────────┼─────────┼──────────────┤
│ stable  │ 3.47.9  │ Oct 29, 2026 │
└─────────┴─────────┴──────────────┘

Download the version you need:

fvm install 3.47.9

Versions live in a shared folder, ~/fvm/versions (on Windows, %USERPROFILE%\fvm\versions ) — each is downloaded once and works for any project. fvm list shows what is already downloaded.

3. Choosing a version for a project

The easiest way is to open the project in VS Code and run the command in its built-in terminal ( Terminal → New Terminal ): it opens in the project folder, and FVM also sets up VS Code by itself (section 5). We create the first project in Lesson 1 .

fvm use 3.47.9

If the folder has no pubspec.yaml , FVM warns “No pubspec.yaml detected in this directory” and asks “Would you like to continue?” — answer n and go to the project folder.

At the end FVM reports:

✓ Project now uses Flutter SDK : SDK Version : 3.47.9

What happened:

  • a .fvmrc file with the version appeared in the project root — keep it in Git so everyone working on the project has one version:
{
  "flutter": "3.47.9"
}
  • a .fvm folder appeared with links to the downloaded version: flutter_sdk and versions/3.47.9 ; .fvm/ was added to .gitignore — this folder does not go into Git;
  • if the version wasn't downloaded yet, fvm use downloads it itself;
  • FVM ran flutter pub get and, if the project has a .vscode folder, wrote the version into the VS Code settings.

A teammate who gets the project with .fvmrc only needs to run fvm install without a number in the project folder — FVM takes the version from the file.

4. Running through FVM

Flutter and Dart commands now run through FVM — that way the project's version is used:

fvm flutter run
fvm flutter --version
fvm dart --version

fvm flutter --version in our project:

Flutter 3.47.9 • channel stable • https://github.com/flutter/flutter.git
Framework • revision c197ca5199 (11 days ago) • 2026-10-29 10:10:20 -0400
Engine • hash 9e025265bef30b838c0c1b68cad19decf97048f2 (revision 89c39edfdf) (12 days ago) • 2026-10-27 19:51:20.000Z
Tools • Dart 3.13.7 • DevTools 2.60.0

FVM picks the version in this order: .fvmrc in the project folder, then .fvmrc in parent folders, then the default version ( fvm global ), then Flutter from PATH. So a stray .fvmrc in a folder above the project can quietly swap the version.

5. Setting up your editor

VS Code. If fvm use runs in VS Code's built-in terminal or the project has a .vscode folder, FVM writes the project's version path into .vscode/settings.json itself:

{
  "dart.flutterSdkPath": ".fvm/versions/3.47.9"
}

Android Studio. FVM doesn't change its settings — after fvm use , tell Android Studio itself about the project's version (the Flutter plugin must be installed, Lesson 0 ):

  1. Open the settings: File → Settings on Windows and Linux, Android Studio → Settings… on macOS.
  2. Select Languages & Frameworks → Flutter .
  3. In Flutter SDK path , paste the full project path ending in .fvm/flutter_sdk — for example, /Users/me/projects/my_app/.fvm/flutter_sdk or C:\Users\me\projects\my_app\.fvm\flutter_sdk . The SDK folder itself, not its bin , and no trailing / . Paste the path as text rather than picking it in the folder dialog: that way some Android Studio versions keep the FVM link.
  4. Click Apply and compare the version Android Studio shows with the output of fvm flutter --version in the terminal.

If the Android part of the project didn't pick it up, run Sync Project with Gradle Files (you can find it with Find Action ).

After switching versions ( fvm use 3.44.9 and so on), reopen Languages & Frameworks → Flutter : if the version there didn't change, some Android Studio versions replaced the link with a concrete version path when saving — select the .fvm/flutter_sdk path again.

6. Useful commands

Command What it does
fvm list Shows downloaded versions
fvm releases Shows versions you can download
fvm install Downloads the version from the project's .fvmrc
fvm remove 3.44.9 Removes a version from the shared folder
fvm global 3.47.9 Sets the default version — fvm flutter uses it when the project has no .fvmrc of its own
fvm spawn 3.44.9 build apk Runs a Flutter command on another version without changing the project
fvm doctor Shows FVM and project settings

Windows: the Git safe.directory error. If FVM can't find Git after installing on Windows even though git --version works, Git is blocking the Flutter versions folder. The FVM documentation suggests this command:

git config --global --add safe.directory "*"

Then restart your terminal and editor.

7. Summary

  • FVM installs with Homebrew on macOS, with a script on Linux, with Chocolatey on Windows.
  • fvm install <version> downloads Flutter into a shared folder, fvm use <version> pins the version to the project in .fvmrc .
  • Flutter commands run through fvm flutter … ; your editor is pointed to the SDK in the project folder.

More in the FVM documentation .

Send questions and suggestions to contact@flutter.su.