Installing and switching Flutter versions with FVM
Egor Dolgov · 09.11.2026First, 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:
- Installing FVM
- Downloading a Flutter version
- Choosing a version for a project
- Running through FVM
- Setting up your editor
- Useful commands
- 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
.fvmrcfile 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
.fvmfolder appeared with links to the downloaded version:flutter_sdkandversions/3.47.9;.fvm/was added to.gitignore— this folder does not go into Git; -
if the version wasn't downloaded yet,
fvm usedownloads it itself; -
FVM ran
flutter pub getand, if the project has a.vscodefolder, 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
):
- Open the settings: File → Settings on Windows and Linux, Android Studio → Settings… on macOS.
- Select Languages & Frameworks → Flutter .
-
In
Flutter SDK path
, paste the full project path ending in
.fvm/flutter_sdk— for example,/Users/me/projects/my_app/.fvm/flutter_sdkorC:\Users\me\projects\my_app\.fvm\flutter_sdk. The SDK folder itself, not itsbin, 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. -
Click
Apply
and compare the version Android Studio shows with the output of
fvm flutter --versionin 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.