fvm
A simple cli to manage Flutter SDK versions per project. Support channels, releases, and local cache for fast switching between versions.
4.2.0
171K downloads/mo
#910 most downloaded on pub.dev
leoafarias/fvm
What this package is like to depend on
Last release today
23 Aug 2026
Release timing varies
gaps range from 8 days to 10 months
Nearly every release is documented
notes for 97 of 107 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
142 releases · first in 2019
13 releases in the last 12 months
see the full history below
Release timeline
142 releases · Oct 2019 to Aug 2026Releases
latest 60 of 142-
4.2.023 Aug 2026Release notes
Open source →- feat: add a
Projectscolumn tofvm listthat shows how many known projects pin each cached SDK. Versions that no known project pins and that are not selected globally are labeledUnused. FVM records projects afterfvm useorfvm installand reads their current.fvmrcvalues when listing - feat: expose the project roots used for SDK classification and the resulting unused versions through
fvm api listasprojectsandunreferencedVersions - fix: correctly match forked channel pins such as
myfork/3.24.0@betato the installedmyfork/3.24.0SDK in theLocalandProjectscolumns
See the full changelog for changes in earlier releases.
Release notes
Open source →- feat: add a
Projectscolumn tofvm listthat shows how many known projects pin each cached SDK. Versions that no known project pins and that are not selected globally are labeledUnused. FVM records projects afterfvm useorfvm installand reads their current.fvmrcvalues when listing - feat: expose the project roots used for SDK classification and the resulting unused versions through
fvm api listasprojectsandunreferencedVersions - fix: correctly match forked channel pins such as
myfork/3.24.0@betato the installedmyfork/3.24.0SDK in theLocalandProjectscolumns
- feat: add a
-
4.1.522 Aug 2026Release notes
Open source →- perf: skip git-cache maintenance when running Flutter or Dart through an already-installed SDK (#1066)
See the full changelog for changes in earlier releases.
Release notes
Open source →- perf: skip git-cache maintenance when running Flutter or Dart through an already-installed SDK (#1066)
-
4.1.419 Aug 2026Release notes
Open source →- fix: stop git-cache maintenance from running destructive git commands against repositories FVM does not own (#1060)
- Behavior change: FVM now clears repository-scoped git environment variables (
GIT_DIR,GIT_WORK_TREE,GIT_INDEX_FILE, and the rest of thegit rev-parse --local-env-varsset) when it runsgit,flutter, ordart. Tools launched through FVM from inside a git hook, such asfvm dart runin a pre-commit hook, no longer see the hook's repository variables and will read the real index instead of the hook's staged index. Transport and auth variables likeGIT_SSH_COMMANDandGIT_ASKPASSare preserved. (#1060)
See the full changelog for changes in earlier releases.
Release notes
Open source →- docs: record how the repo migration broke the release pipeline
Moving the repository between accounts left the release tool naming an
owner that only redirected. GitHub keeps those redirects alive, and
cli_pkg does not follow them on POST, so pkg-github-release failed with
307 Moved Permanently after every test job had already passed and the
v4.1.3 deploy published nothing.The repository is back on leoafarias, so the owner constant itself is
correct and unchanged here. This only records why it is load-bearing, so
the next account move updates it deliberately instead of rediscovering
this through a failed release.- chore: prepare v4.1.4 release
The 4.1.3 tag never published anything: the deploy failed at the GitHub
release step because the repository had moved accounts, so pub.dev,
Homebrew, Chocolatey, Docker and the binaries were all skipped. Releasing
the same changes as 4.1.4 rather than reusing the unpublished 4.1.3 tag.Release notes
Open source →- fix: stop git-cache maintenance from running destructive git commands against repositories FVM does not own (#1060)
- Behavior change: FVM now clears repository-scoped git environment variables (
GIT_DIR,GIT_WORK_TREE,GIT_INDEX_FILE, and the rest of thegit rev-parse --local-env-varsset) when it runsgit,flutter, ordart. Tools launched through FVM from inside a git hook, such asfvm dart runin a pre-commit hook, no longer see the hook's repository variables and will read the real index instead of the hook's staged index. Transport and auth variables likeGIT_SSH_COMMANDandGIT_ASKPASSare preserved. (#1060)
-
4.1.225 Jun 2026Release notes
Open source →- fix: stop rebuilding the git cache on every command when macOS leaves
.DS_Storefiles in it (#1043)
See the full changelog for changes in earlier releases.
Release notes
Open source →Bumps version to 4.1.2 and finalizes the CHANGELOG.
- fix: stop rebuilding the git cache on every command when macOS leaves .DS_Store files in it (#1043)
Release notes
Open source →- fix: stop rebuilding the git cache on every command when macOS leaves
.DS_Storefiles in it (#1043)
- fix: stop rebuilding the git cache on every command when macOS leaves
-
4.1.116 Jun 2026Release notes
Open source →- fix: prevent git cache bloat and stale SDK installs caused by outdated cache clones (#1037)
- fix: fall back to safe defaults instead of hanging when prompts run without an interactive terminal, like CI or git hooks (#1036)
- fix: stop false Flutter version-mismatch prompts when a project uses its own calendar-style git tags (#1033)
See the full changelog for changes in earlier releases.
Release notes
Open source →- fix: prevent git cache bloat and stale SDK installs caused by outdated cache clones (#1037)
- fix: fall back to safe defaults instead of hanging when prompts run without an interactive terminal, like CI or git hooks (#1036)
- fix: stop false Flutter version-mismatch prompts when a project uses its own calendar-style git tags (#1033)
-
4.1.005 May 2026Release notes
Open source →- feat: opt out of update checks for quieter CI and offline runs (#994)
- feat: keep working with cached SDKs even when Flutter drops the version file (#997)
- perf: faster installs and smaller disk usage with a leaner git cache (one-time repack on upgrade) (#1018)
- fix: stop forked versions from getting mixed up in the global cache (#995)
- fix: more reliable concurrent FVM commands (#1002)
- chore: cleanup cache handling and release parsing (#1005)
-
4.0.519 Dec 2025Release notes
Open source →- feat: migrate install script to v2 with user-local default install (#967)
- fix: disable auto-install of shell completions for Nix/Home Manager environments (#991)
- fix: support legacy
.fvm/fvm_config.jsonfile loading (#996) - fix: improve PATH guidance for CI installs (#999)
-
4.0.405 Dec 2025Release notes
Open source →- fix: remove leading newline from fvm dart/flutter output
- fix: read or write cache with fork version by @huanghui1998hhh
-
4.0.305 Dec 2025 -
4.0.204 Dec 2025Release notes
Open source →- fix: version detection for Flutter 3.38+ (version file removal)
- fix: filter hidden directories from cache version listing
- fix: route conflict in documentation site navigation
- docs: improve Android Studio/IntelliJ IDE configuration guide
-
4.0.105 Nov 2025Release notes
Open source →- add:
fvm installnow runs setup by default - add: RISC-V and 32-bit ARM architecture support
- add: SSH and scp-style git URL support for forks
- add: Standalone executables for host platform
- fix:
fvm doctorcrash when version not pinned - fix: Alpine/musl libc detection in install script
- fix: Version prefix normalization in install script
- fix: Pre-push PATH hook auto-detects Flutter/Dart
- fix: Cache version matching logic
- fix: Uninstall script, git logging, and HTTP error handling
- fix: Code quality and analysis warnings
- docs: Git safe directory troubleshooting for Windows
- docs: PATH configuration for global version
- refactor: Migrate release tooling to dedicated package
- add:
-
4.0.030 Oct 2025Release notes
Open source →- add: Manage Flutter SDKs from custom or forked repositories
- add: Automatic Melos integration - FVM automatically manages
sdkPathinmelos.yaml - add:
updateMelosSettingsconfiguration option to control Melos integration per project - fix: Enhanced environment variable processing logic
- fix: Better environment variable precedence handling
-
4.0.0-beta.207 Oct 2025 pre-releaseNothing published for this version
-
4.0.0-beta.112 Jun 2025 pre-releaseNothing published for this version
-
3.2.126 Aug 2024Release notes
Open source →- fix:
--fvm-skip-inputflag not applying to context - add:
fvm listnow displays the cache path even if no version is installed
- fix:
-
3.2.025 Aug 2024Release notes
Open source →- add: support for skipping input requests by @Rexios80. Input requests are skipped when the
--fvm-skip-inputflag is passed. - add: documentation for command rerouting by @humblerookie
- fix(cosmetics): fvm has one newline too much by @jonasbadstuebner
- fix: unsupported architecture on arm64 by @MrCyjaneK
- add: tags for Docker deployment by @CodeRedDev
- add: Validate if git is installed by @leoafarias
- add: Disable local mirror on exception by @leoafarias
- add: support for skipping input requests by @Rexios80. Input requests are skipped when the
-
3.1.704 Jun 2024Release notes
Open source →- Display the configured version in the
fvm listcommand by @digoreis - Handle progress printer exceptions by @leoafarias
- Display the configured version in the
-
3.1.631 May 2024Release notes
Open source →- Improved messages when nested .fvmrc file is found.
- Better error handling for .git directory check.
-
3.1.528 May 2024 -
3.1.423 Apr 2024Release notes
Open source →- Disable git cache on CI environment by @leoafarias
- Add force flag to global command by @Rexios80
- Adds trailing space to version prompt by @pastrefvm/pull/705
-
3.1.327 Mar 2024Release notes
Open source →- Fixed: Version weight handles custom versions properly by @quyenvsp
- Remove requirement for pubspec at the root for monorepos by @leoafarias
-
3.1.226 Mar 2024 -
3.1.120 Mar 2024Release notes
Open source →- Fixed: Empty flavors map been added to the project config by @leoafarias
-
3.1.019 Mar 2024Release notes
Open source →- Initial release of JSON API, allows for better integration of third-party tools and CI/CD workflows.
-
3.0.1413 Mar 2024Release notes
Open source →- Improvement: versioned brew formulae by @leoafarias
- Added: cli completion by @leoafarias
- Improvement: Use posix path by @leoafarias
- Fixed: links in FAQ by @Pavel-Sulimau
- Fixed: forward configured flavors by @mrgnhnt96
- Added: destroy command by @leoafarias
- Added: install.sh scripts @leoafarias
-
3.0.1306 Mar 2024Release notes
Open source →- Added:
fvm use [version] --forcenow skips install confirmation prompt by @mrgnhnt96 - Added: Added flag to skip pub get on
installanduse,--skip-pub-getby @mrgnhnt96 - Improvement: CI Flag now skips check update by @leoafarias
- Fix: Improve App Config and Project Config overrides by @leoafarias
- Fix: Incorrect check version update logic by @leoafarias
- Improvement: Better exception handling during mirror creation by @leoafarias
- Improvement: Added warning when .fvmrc is found but not pubspec.yaml by @leoafarias
- Added:
-
3.0.1227 Feb 2024 -
3.0.1124 Feb 2024Release notes
Open source →- Removed
fvm updatecommand. Due to issue with brew and chocolatey install.
- Removed
-
3.0.1023 Feb 2024 -
3.0.923 Feb 2024Release notes
Open source →- Adds .gitignore even if project is not a git repository. As IDEs and tools use it as a reference for project indexing.
-
3.0.822 Feb 2024 -
3.0.719 Feb 2024Release notes
Open source →fvm use [version]andfvm installnow also create legacyfvm_config.jsonfile for easier 3.0 migration path.- However
fvm_config.jsonis now deprecated in favor of.fvmrcfile. FVM will migrate it automatically.
-
3.0.616 Feb 2024Release notes
Open source →fvm fluttercommand falls back to global fvm version if version not found in directory.
-
3.0.516 Feb 2024Release notes
Open source →- Added fallback when cannot validate Flutter SDK version using git tags. #627
-
3.0.416 Feb 2024Release notes
Open source →- VsCode settings now supports jsonc (comments, trailing comma)
- Change flutter project check to only check for pubspec.yaml
fvm installcommand not creating sdk reference #618
-
3.0.314 Feb 2024 -
3.0.213 Feb 2024Release notes
Open source →- Removed validation for long commit hashes. FVM will now accept any length hash that git can return as a reference.
-
3.0.112 Feb 2024Release notes
Open source →- Fixed Dart SDK download on brew installations.
- Do not ask for setup flow on VSCode if not detected.
-
3.0.009 Feb 2024Release notes
Open source →Added
- Tighter VSCode integration, with configuration and settings management. FVM will now automatically configure VSCode to use the correct Flutter SDK version, triggering a terminal path update, so you can just use
fluttercommands instead offvm flutter - Git Flutter repository mirroring for faster cloning of new versions.
- Added a check in .gitignore for the '.fvm' directory, and auto-adding it if necessary.
- Added verification if cached Flutter SDK has been upgraded, and provide options for corrective actions.
- Added a check for Flutter SDK constraints check for compatibility with current project.
- Improved FVM configuration management and settings.
- Ability to override FVM settings on a per project basis.
- Windows "unprivileged" mode. If you choose to run
fvmin unprivileged mode, it will not require admin rights to run; however, local Flutter SDK project references will be absolute paths instead of relative links.
Improvements
- Much improved DX with better error messages and logging, and more helpful information and how to proceed.
- Color output when using
fvm fluttercommand proxy. - Better SDK switching workflow per project. Handle more edge cases, by doing SDK comparisons.
- Better
fvm doctorcommand. Now provides much better output and information about the project and environment. - Better Dart SDK environment support, minimizes conflicts between multiple environment Dart SDKs.
- Improved
fvm releasesoutput. - Improved
fvm listoutput. - Better error checking for
fvm globalcommand. - FVM update check now runs only once a day.
- You can disable update check with the
--update-checkflag onfvm config
Changed
- Command
fvm releasesnow defaults tostablechannel. Use--allflag to see all releases, or filter by channel. - Removed "flavor" command in favor for
fvm use {flavor} - Removed "destroy" command in favor of
fvm remove --all - Config file is now
.fvmrcinstead of.fvm/fvm_config.json, and.fvmcan be added to.gitignore, FVM will migrate it automatically. - You can now use
fvm use {version} --env {flavor}as an alias forflavor. Might be deprecated in the future sinceenvhas become a better description for environment specific settings thanflavor. - When installing or using a Flutter repo
commit hash, hash needs to be 10 digits. FVM will now validate it and provide the correct hash if it can.
Breaking Changes
- Default FVM config location is now
.fvmrcinstead of.fvm/fvm_config.json. FVM will migrate it automatically. However.fvmshould be ignored, if you depend onfvm_config.jsonin your tools or CI, you should update your configuration. fvm install- Will not setup by default. Use--setupflag to setup Flutter SDK. Flag--skip-setupis removed.fvm releases- Defaults tostablereleases. Use--allflag to see all releases, or filter by channel using--channel {channel}.fvm flavor- Removed in favor offvm use {flavor}.fvm use- Will always setup by default. Use--skip-setupflag to skip setup.- Environment variables
FVM_HOMEis nowFVM_CACHE_PATH. - Environment variables
FVM_GIT_CACHEis nowFVM_FLUTTER_URL.
- Tighter VSCode integration, with configuration and settings management. FVM will now automatically configure VSCode to use the correct Flutter SDK version, triggering a terminal path update, so you can just use
-
3.0.0-beta.504 Oct 2023 pre-releaseNothing published for this version
-
3.0.0-beta.403 Oct 2023 pre-releaseNothing published for this version
-
3.0.0-beta.303 Oct 2023 pre-releaseNothing published for this version
-
3.0.0-beta.229 Sep 2023 pre-releaseNothing published for this version
-
3.0.0-beta.128 Sep 2023 pre-releaseNothing published for this version
-
2.4.106 Jul 2022 -
2.4.005 Jul 2022Release notes
Open source →- Upgraded minimum Dart version to 2.17.0 for better Flutter 3.0 compatibility.
-
2.3.107 Apr 2022 -
2.3.006 Apr 2022Release notes
Open source →- Implemented
fvm execcommand. Execute terminal commands with the configured Flutter/Dart SDK version in the environment. fvm usecommand will install configured version by default if no version is provided.
- Implemented
-
2.3.0-dev.011 Mar 2022 pre-releaseNothing published for this version
-
2.2.614 Dec 2021Release notes
Open source →- Fixed an issue with routing to older Dart SDK directory path (before 1.17.5).
-
2.2.509 Dec 2021Release notes
Open source →- Clean
dartcommand outputstdoutIssue #361. - Better experience when running
dart pub cache repairIssue #352. - Dart proxy points to the correct path when version is older than 1.20.0 Issue #348.
- Flavors sequence of command causes
nullcheck exception Issue #358.
- Clean
-
2.2.5-dev.430 Nov 2021 pre-releaseNothing published for this version
-
2.2.5-dev.330 Nov 2021 pre-releaseNothing published for this version
-
2.2.5-dev.230 Nov 2021 pre-releaseNothing published for this version
-
2.2.5-dev.130 Nov 2021 pre-releaseNothing published for this version
-
2.2.409 Nov 2021 -
2.2.331 Aug 2021 -
2.2.218 Jun 2021 -
2.2.118 Jun 2021Release notes
Open source →- Fixed an edge case when running
fluttercommand with--no-version-checkflag.
- Fixed an edge case when running
-
2.2.017 Jun 2021Release notes
Open source →- Resolves channel unknown when pulling release version.
- Allows for release install of different channels Read more.