Flutter, Google's cross-platform UI toolkit, has reached version 1.20 stable. In the previous stable release, Google introduced substantial performance improvements, improved support for Metal on iOS, and new Material widgets. Today's Flutter 1.20 stable release includes more performance improvements, several UI enhancements, an update to the Visual Studio Code extension, autofill for mobile text fields, and more.

Flutter 1.20 includes 3,029 merged PRs and 5,485 closed issues from 359 contributors worldwide, the largest number of contributors for any Flutter release to date. Google also boasts that there are now over 90,000 apps developed with Flutter on Google Play, an increase from 50,000 such apps back in April. Much of this growth comes from India, which Google says is now the top region for Flutter developers.

Performance Improvements

Here are some of the ways Google has improved the performance in Flutter 1.20:

  • Google has included a performance fix for tree-shake-icons which are now the default when building non-web apps. This feature reduces the size of your app by removing any icons that are not used. Icon font tree shaking is currently restricted to TrueType Fonts but Google says this restriction will be lifted in the future.
  • If an app has janky animations during the first run that later become smooth in subsequent launches, this is likely due to shader compilation jank. With Skia Shading Language shader warm-up, shader compilation jank can be reduced by up to 2x.
  • Google has refactored mouse hit testing, improving the performance in web-based microbenchmarks by as much as 15x. As a consequence, Google has been able to add support for mouse cursors which will display in several commonly used widgets.
  • Google has improved the decoding speed of Dart's UTF-8 decoder in Dart 2.9. In UTF-8 decoding benchmarks, the company has measured improvements of nearly 200% for English text and 400% for Chinese text on low-end ARM devices.

Autofill for mobile text fields

A highly requested feature among developers is support for text autofill in Flutter apps. With Flutter 1.20, basic autofill functionality has been added, though some platform-specific configurations (such as passwordRules on iOS) are not supported. Google is also bringing autofill for text field support for web apps, too.

InteractiveViewer widget

This new widget is designed for building interactive elements in your app, such as pan, zoom, drag 'n' drop, and more. The API documentation is available here while a presentation uploaded here delves into the development process of this new widget.

Dart DevTools embedded in Visual Studio Code

Google has added a new Visual Studio Code extension that brings Dart DevTools directly into the Visual Studio Code coding workspace. This can be enabled with the dart.previewEmbeddedDevTools setting.

Other changes

There are lots of other new features and developer tools in Flutter 1.20. Just to name a few: Updated Slider, RangeSlider, TimePicker, and DatePicker widgets; a new responsive licenses page available from the AboutDialog; a new pubspec.yaml format requirement for publishing new or updated Flutter plugins; an updated Network page in Dart DevTools with support for web socket profiling; support for automatically updating import statements when files are moved or renamed in Visual Studio Code; and more.

Google says that Flutter 1.20 is the framework's biggest release yet, but a lot has yet to come. The company says they're still working on implementing sound null safety support, new versions of the Ads, Maps, and WebView plugins, more tooling support, and more. They're also working on better web and desktop support, especially on Linux where they just announced a partnership with Canonical.