Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

On April 22, 2020, Google said nearly half a million developers were using Flutter each month and announced a more predictable release process for the framework. The adoption figure was a company-reported monthly-use measure—not a count of current developers or production teams. The release model introduced monthly beta branches, stabilization and testing, and roughly quarterly stable releases. Flutter’s channels and versioning have since evolved, so the 2020 system is best understood as a historical milestone rather than a description of today’s exact process.

What Google’s adoption figures meant

Google’s April 2020 announcement put Flutter’s growth in context with several different measures. As reported at the time, the figures were:

Measure Google’s reported figure What it describes
Monthly use Nearly 500,000 developers Developers using Flutter each month, according to Google
Use since Flutter 1.0 About 2 million developers Developers who had used Flutter since its 1.0 release in December 2018
Apps on Google Play About 50,000 Apps Google said were on the Play Store at the time
Recent app uploads Nearly 10,000 Apps uploaded during the preceding month, according to the announcement

Google also reported 10% month-over-month growth for March 2020. These are historical, company-reported ecosystem signals, not an independently audited census. “Monthly developers” should not be read as 500,000 paying customers, active commercial teams, or developers shipping production apps. The figures were reported by GamesBeat’s coverage of Google’s announcement.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

At the time, Flutter was an open-source UI framework built with Dart. Its shared-codebase approach was expanding from mobile toward web, desktop, and embedded devices. A shared interface codebase can reduce duplicated work, but it does not remove the need for platform-specific integrations, build and deployment work, accessibility checks, performance tuning, or testing against each target platform.

Why Google changed how Flutter shipped

Google’s stated problem was predictability. Under the earlier process, developers had less clarity about when releases would be built, contributors had difficulty seeing which changes were headed for a release, and insufficient branch testing could let regressions slip into hotfixes.

The 2020 model aimed to make release work visible and testable:

  1. Branch for beta early in the month. A point-in-time development build became the basis for a beta release branch.
  2. Stabilize rather than continually add work. The branch received testing while the main development line continued to advance.
  3. Cherry-pick critical fixes selectively. Changes were added to the release branch when they were important enough to justify inclusion.
  4. Test the branch itself. The release candidate and its fixes could be exercised together before promotion.
  5. Promote to stable roughly quarterly. A beta branch was intended to become the stable release, with the stable build using the same bits as the final beta candidate.
  6. Issue hotfixes for serious stable problems. A stable patch could be produced when a critical issue warranted it.

The point was not simply to publish more versions. It was to give users and contributors a clearer view of what was being prepared, while reducing the risk that urgent fixes would create new problems. Google described the process in its Flutter Spring 2020 update.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Flutter and Dart were coordinated, not identically numbered

Flutter depends on the Dart SDK, so a framework release also needs a compatible language SDK and tooling. Google said Flutter and Dart would align their release processes and channels; Dart added a beta channel, and Flutter beta releases would include a corresponding Dart beta release. Coordinated testing makes it easier to evaluate the framework, language, tools, and engine as a set.

That did not mean Flutter and Dart shared identical version numbers. They are related components shipped together in the Flutter SDK, but each has its own versioning.

How to read Flutter’s 2020 version strings

The announcement illustrated a pattern like x.y.z-n.m.pre. The numeric parts helped identify the release line and build lineage; .pre marked a pre-release rather than a stable version.

Example 2020 meaning
1.18.0-1.0.pre An early development build for the 1.18 release line
1.18.0-2.0.pre A later development build; the development-build number increased
1.18.0-15.0.pre A beta build based on development build 15
1.18.0-15.1.pre / 1.18.0-15.2.pre Subsequent beta-branch builds as fixes were cherry-picked
1.18.0 The intended stable release from the final beta candidate
1.18.1 / 1.18.2 Examples of stable hotfix releases, incrementing the patch number

In the pre-release examples, the first number after the hyphen identified the originating development build; the following number tracked subsequent builds from the beta branch. That made the path from development to beta candidate more traceable. Teams could pin an exact SDK build for CI rather than relying only on a broad label such as “beta.” These examples explain the 2020 system; they should not be treated as a guarantee that every later Flutter release follows precisely the same mechanics.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the channel names and cadence look like now

Flutter’s current documentation describes three channels: stable, beta, and main. The 2020 announcement used historical terms including master and dev; current instructions should use the current names instead. In particular, the old master terminology corresponds to the repository’s main branch today.

  • Stable: The recommended channel for production applications and most teams. It receives the broadest testing, though stable does not mean that upgrades never require migration or regression testing.
  • Beta: A more frequently updated pre-stable path. It is useful for checking compatibility with upcoming releases and reporting regressions, but carries more change risk than stable.
  • Main: Active development, with less thorough testing and a higher chance of serious regressions. It is primarily for Flutter contributors and advanced testing, not routine production use.

Current documentation describes stable updates roughly every three months and beta updates roughly monthly; the archive says beta is usually released on the first Wednesday of the month, with roughly every third beta promoted to stable. These are cadence descriptions, not promises that every change will land in a particular release. See the Flutter upgrade guide and the SDK archive for current channel guidance.

Modern numbering and public release planning

Flutter’s current archive describes SDK numbering as a modified calendar-versioning scheme, or CalVer. Versions such as 3.35.0 and 2.10.5 are different from the 1.18-era examples Google used in 2020. Non-stable builds can still have pre-release identifiers such as 3.38.0-0.2.pre, but that similarity does not mean the entire release process is unchanged.

Flutter also publishes target release windows and branch cutoff dates, making release planning more visible to contributors. The archive lists these 2026 targets and cutoffs:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Release Target window Branch cutoff
3.41 February 2026 January 6, 2026
3.44 May 2026 April 7, 2026
3.47 August 2026 July 7, 2026
3.50 November 2026 October 6, 2026

These are target windows, not proof that a release shipped on a particular date. A cutoff marks the point after which a pull request generally becomes ineligible for the next stable cycle and may have to wait for a later one. Inclusion is still subject to quality decisions, reverts, and other release constraints. Consult the official archive for the current schedule rather than relying on an older article.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Which channel should a team use?

Channel Benefit Risk or cost Good fit
Stable Most predictable and broadly tested New fixes and features arrive later; migrations may still be needed Production teams, new Flutter teams, and teams with limited regression capacity
Beta Earlier compatibility testing and access to changes headed toward stable More migration and regression risk; needs stronger testing Teams with CI, staging, and a reason to prepare for an upcoming release
Main Earliest access to development changes Less tested and potentially subject to serious regressions Framework contributors, regression investigators, and advanced testers

For most production applications, stay on stable and deliberately evaluate beta in CI or staging before a planned upgrade. Use main only when a specific contribution or investigation justifies its greater instability. A channel switch on one workstation is not a release process: pin the SDK version used in CI, review release notes and migration guidance, test plugins and native build tooling, build a staging artifact, and retain a rollback path.

Useful Flutter upgrade commands

Check the selected channel:

flutter channel

Switch to beta and upgrade the Flutter SDK:

flutter channel beta
flutter upgrade

Return to stable:

flutter channel stable
flutter upgrade

flutter upgrade updates the Flutter SDK on the selected channel. It is different from Dart package dependency commands:

flutter pub outdated
flutter pub upgrade
flutter pub upgrade --major-versions

Those commands inspect or upgrade project packages; they do not, by themselves, select a different Flutter SDK release. If you need to pin or inspect a specific SDK version, locate the SDK directory with flutter doctor --verbose, find the release in the Flutter SDK archive, then check out its version tag from that SDK directory:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
cd /path/to/flutter
git checkout <Flutter version>

For contributors who intentionally need current development code, the archive documents cloning the main branch:

git clone -b main https://github.com/flutter/flutter.git
./flutter/bin/flutter --version

That is not the normal production upgrade path. On Windows, an SDK installed in a deeply nested directory can also encounter a “Filename too long” error. Flutter’s upgrade guide describes mitigation including moving the SDK to a shorter path such as C:Flutter and enabling Git and Windows long-path support; enabling Windows long-path support requires administrator privileges.

The durable lesson from the milestone

The 500,000 figure captures a moment in Flutter’s 2020 growth, not its current audience size. The more enduring story is how Google tried to make a rapidly growing framework easier to release and test: isolate beta candidates, stabilize branches, accept targeted fixes, coordinate Dart releases, and make the path to stable more visible. Today’s channel names, versioning, and published cutoffs have evolved, but the practical advice remains straightforward: choose a channel according to your tolerance for change, and make upgrades a tested, pinned, reversible part of release engineering.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.