Windows stable, performance improvements, Material 3 updates, and more!
I can’t believe it’s time again for a Flutter-stable release! Hello and welcome to Flutter 2.10. It has been less than two months since our last release, but even in that short time, we’ve had 1,843 issues closed, and 1,525 PRs merged from 155 contributors worldwide. Thanks, everyone, for the great work, especially during the 2021 holiday season.
As part of this release, we have several exciting things to announce, including a big update on Flutter’s support for Windows, several significant performance improvements, new support for icons and colors in the framework, and some tooling improvements. In addition, we’ve got some updates on the removal of the dev channel, a reduction in support for older versions of iOS, and a shortlist of breaking changes. Let’s get to it!
Ready for production apps on Windows
First and foremost, the Flutter 2.10 release brings the stable release of Windows support. You no longer need to flip a flag to get the functionality that produces Windows apps on the stable channel of Flutter — now it’s available by default!
Of course, we did a lot more than just flip a flag. This release includes extensive improvements for text handling, keyboard handling, keyboard shortcuts, and new integrations directly into Windows, with support for command-line arguments, globalized text entry, and accessibility.
For much more on the Windows stable launch, see the Announcing Flutter for Windows blog post, which describes the architecture of Flutter on Windows that allows for deep integration and gives you a sense of just how many Flutter packages and plugins already support Windows. You can also see some examples of what our tooling and app partners are doing with Flutter on Windows!
This release of Flutter includes initial support for dirty region management provided by Flutter community member Knopp. He’s enabled partial repaints for a single dirty region on iOS/Metal. This change reduced 90th and 99th percentile rasterization times on a few benchmarks by order of magnitude and reduced GPU utilization on these benchmarks from more than 90% to less than 10%.
We expect to bring the benefits of partial repaints to other platforms in future releases.
In the Flutter 2.8 release, we landed our own internal picture recording format. Now in Flutter 2.10, we’ve started building optimizations with it. As an example, one common case of opacity layers is now implemented much more efficiently. Even in the worst case, frame raster times in our benchmarks fell to under a third of their previous value.