At its I/O developer conference, Google today announced the launch of Flutter 3, the latest version of its open-source, multiplatform UI development framework for building natively compiled applications. It’s been about four years since the company first launched a beta of Flutter 1.0. At the time, the team’s focus was mostly on helping developers build cross-platform mobile apps. Since then, it started adding web and desktop support, too, and now, with version 3, the team is closing the loop here by making Linux and macOS desktop support generally available, as well as adding support for Apple Silicon, among many other new features.
“We’re announcing Flutter 3, which is the culmination of our journey to delivering multi-platform UI development across phone and desktop and web,” Tim Sneath, the director of product and UX for Flutter and the Dart language, told me. “This really comes all the way back from when we first launched Flutter a couple of years ago. With the Flutter 1 launch, we were fairly clear, at least in terms of a vision, even at that point, that we didn’t intend to be a mobile toolkit. We wanted to be thought of as being broader than just phones.”
With the Flutter 3 release, the platform now supports iOS, Android and web apps, as well as Windows, macOS and Linux desktop apps, all as part of Flutter’s stable release. On macOS, this includes support for Universal Binaries so apps can run natively on Intel and Apple Silicon chips, while for the Linux release, Google partnered with Ubuntu’s Canonical to “offer a highly-integrated, best-of-breed option for development.”
Despite the desktop support, most developers probably still think of Flutter as a framework for building mobile apps. But a number of developers are actively using it for building desktop apps as well, including the former Wunderlist founders who are launching their new productivity app, Superlist, into beta today as a Flutter app on the desktop.
On the mobile side, companies like WeChat, ByteDance, Betterment, SHEIN and BMW are now betting on Flutter — as does Google itself. Indeed, as Google announced today, over 500,000 Flutter apps have now been published, twice as many as a year ago.
As Sneath noted, a number of developers are also now using Flutter to write casual games, in part because of its built-in hardware acceleration support. Some games, like PUBG Mobile, also use Flutter for their non-game user interface. That’s something the team did not expect, but to help those developers, Google is now releasing the Flutter Casual Games Toolkit, using the open-source Flame game engine.
“We’ve released this toolkit at I/O that helps people through all the bits that are shared logic for those games,” Sneath explained. “Things like, how do I integrate with Apple Game Center or the Play Services equivalent? How do I do leaderboards or splash screens? How do I accept in-app payments for microtransactions? How do I do ads so that I can monetize? We’ve got this toolkit, which includes best practices, source code, videos, and a sample app that puts it all together. We think that’ll help developers that are interested in making games with Flutter be successful.”
The sample game, a Flutter-themed pinball simulator, is available here.
Also new in Flutter 3 are deeper integrations with Firebase, Google’s backend platform for building mobile and web applications. That doesn’t take away from Flutter’s integrations with third-party services, including the likes of Firebase competitor AWS Amplify (which itself will happily let you build Flutter apps in its no-code Amplify Studio, too). But as the Flutter team notes, the Flutter/Firebase integration is now a fully-supported core part of Firebase and the two teams plan to evolve “Firebase support for Flutter in lockstep with Android and iOS.”
Also new here is better support for Flutter apps in Crashlytics, Firebase’s crash reporting service, which can now track fatal crashes in real time, among other things.
In addition, the Flutter team has now also mostly completed its move to Material Design 3, Google’s in-house design language.