The Ultimate Guide to Flutter Version Management for Every Developer Level

Md. Al - AminMd. Al - Amin
4 min read

Whether you're just starting out in Flutter or you’ve been shipping apps for years, you've probably faced the challenge of switching between Flutter versions. Maybe one project uses Flutter 3.10, and another needs the latest 3.22 and that’s where FVM (Flutter Version Management) becomes your best friend.

In this post, I’ll Walk you through everything about FVM what it is, why it matters, how to use it across skill levels, and how to keep your setup clean and efficient.


What is FVM?

FVM (Flutter Version Management) is a simple CLI tool that lets you manage and switch between multiple Flutter versions effortlessly.

Why use it?

  • Different projects often need different versions of Flutter.

  • Avoid corrupting global Flutter installations.

  • Manage dependencies and CI/CD pipelines with consistent Flutter versions.

FVM brings structure, clarity, and ease especially when juggling multiple Flutter apps or collaborating on teams.


Installing FVM

You can install FVM using one of the following methods:

dart pub global activate fvm

With Homebrew (macOS):

brew tap leoafarias/fvm
brew install fvm

With Scoop (Windows):

scoop bucket add fvm https://github.com/leoafarias/fvm
scoop install fvm

Beginner Guide: Using FVM as a New Flutter Dev

As a beginner, the goal is to start using FVM without too much complexity.

1. Initialize FVM in your project

fvm use stable

This creates a .fvm folder and a fvm_config.json that tells FVM to use the stable version for this project.

2. Run Flutter commands through FVM

Instead of:

flutter run

Use:

fvm flutter run

Tip: You can also set up an alias in your terminal to make this seamless.

3. See which versions you have installed:

fvm list

Intermediate Guide: Managing Multiple Projects

Now you're building multiple apps or contributing to others. Some may use beta or specific versions.

1. Use a custom version:

fvm use 3.13.6

This will download and use version 3.13.6 locally in your project.

2. Install any Flutter version globally:

fvm global 3.16.5

Now your terminal's default flutter command will use this version.

3. Add .fvm/flutter_sdk to .gitignore

You don’t need to commit the whole Flutter SDK — just the config. Add this to your .gitignore:

.fvm/flutter_sdk

Real-World Example: Managing Flutter Versions Across Two Projects

Let’s say you’re working on two different apps:

  • ClientApp: A legacy project built with Flutter 3.10.5

  • StartupX: A modern app using Flutter 3.22.0 (latest stable)

Here’s how FVM helps you handle both easily:


Step-by-Step Workflow with FVM

Project 1: ClientApp (Flutter 3.10.5)

cd ~/Projects/ClientApp
fvm use 3.10.5

Then:

fvm flutter pub get
fvm flutter run

Project 2: StartupX (Flutter 3.22.0)

cd ~/Projects/StartupX
fvm use 3.22.0

Run as usual with:

fvm flutter run

Each project now uses its own Flutter SDK version without interference.


Folder Structure Behind the Scenes

FVM stores all versions in a central directory:

~/.fvm/versions/
  ├── 3.10.5/
  └── 3.22.0/

Each project just points to the version it needs — saving space and avoiding conflicts.


Collaborating with Teams

Include the .fvm/fvm_config.json file in your repo so everyone on your team uses the same Flutter version.

In your project’s .gitignore, make sure this is excluded:

.fvm/flutter_sdk

Then, when a teammate clones the project, all they need to do is:

fvm install

FVM will automatically install and configure the correct Flutter version.


Cleaning Up Old Versions

Let’s say you're done working on ClientApp. Free up space:

fvm list
fvm remove 3.10.5

Done. Clean and simple!


Pro Guide: Supercharging FVM Workflow

1. Use FVM with CI/CD

Add these lines to your pipeline config:

dart pub global activate fvm
fvm install
fvm flutter pub get

2. Set Terminal Aliases

To avoid typing fvm before every command, add this to .bashrc, .zshrc, or .config/fish/config.fish:

alias flutter='fvm flutter'
alias dart='fvm dart'
alias pub='fvm flutter pub'

Now you can run commands as usual:

flutter pub run
dart format .

Best Practices for FVM

✅ Use fvm use per project
✅ Add .fvm/flutter_sdk to .gitignore
✅ Share fvm_config.json in your repo
✅ Run fvm install on new machines or CI
✅ Remove unused versions regularly
✅ Use aliases for a smoother experience


FVM Cheat Sheet

CommandPurpose
fvm listList installed Flutter versions
fvm releasesList available Flutter releases
fvm install <version>Download a Flutter version
fvm remove <version>Delete an unused version
fvm use <version>Use version for current project
fvm global <version>Set global default version
fvm flutter <cmd>Run Flutter command via FVM

Final Thoughts

FVM is more than a version switcher — it’s a workflow optimizer. Whether you’re a solo dev or part of a large team, integrating FVM into your toolkit keeps your projects clean, consistent, and future proof.

A cleaner workspace = a smoother dev experience.
Make FVM your Flutter superpower today. 💙

0
Subscribe to my newsletter

Read articles from Md. Al - Amin directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Md. Al - Amin
Md. Al - Amin

Experienced Android Developer with a demonstrated history of working for the IT industry. Skilled in JAVA, Dart, Flutter, and Teamwork. Strong Application Development professional with a Bachelor's degree focused in Computer Science & Engineering from Daffodil International University-DIU.