What’s New in Flutter 3.13
Hello Flutter enthusiasts! We’re thrilled to unveil our newest quarterly stable release, Flutter 3.13. Since our last update, an astonishing 724 pull requests have been merged, with 55 of them being the debut contributions from our community members.
Let’s dive into the exciting enhancements and additions the Flutter community has infused into this release.
Impeller Enhancements: In response to valuable feedback from our community, we’ve significantly boosted the performance of our new graphics renderer, Impeller, especially on iOS. Notably, benchmark tests on the flutter/gallery transitions reveal that the average frame rasterization time has been halved from its previous measure using Skia.
Several optimizations led to this improvement, including:
- Enabled dirty region management and partial repaint.
- Concurrent render pass encoding.
- Multiple enhancements to text rendering.
- A faster pathway for convex shapes.
- Utilizing compute shaders for several operations.
- Proactive culling of irrelevant draw operations.
Fidelity Upgrades: We've integrated wide gamut colors by default for iOS when using Impeller.
Impeller Progress on Android: While we're refining the Vulkan backend for Impeller on Android, we've made significant strides in enhancing the OpenGL and Vulkan backends.
Huge shout-out to GitHub user ColdPaleLight and others for their indispensable contributions to the Impeller updates.
Impeller Now on macOS
After successfully introducing Impeller as our default rendering engine for iOS, we're thrilled to preview Impeller for macOS. We encourage users to test, give feedback, and report any bugs or performance issues.
Supporting Foldable Devices
For better compatibility with foldable devices, we've introduced a new API. The FlutterView.display now provides details such as physical size, pixel ratio, and refresh rate of the display.
Material Framework Updates: We've amped up our Material Framework with:
- Character recognition in TextField for iOS.
- An adaptive constructor for platform-specific dialog displays.
- Added monthYear mode in CupertinoDatePicker.
- Checkmark style for CupertinoRadio.
- More customization options for Material widgets, including tooltips, padding, and alignment features.
Scroller Additions: New classes and interactions have been introduced for a richer two-dimensional scrolling experience. Examples include ChildVicinity, TwoDimensionalChildDelegate, and diagonal scrolling capabilities.
New Slivers: Unique scrolling effects can now be achieved with new slivers such as SliverMainAxisGroup, SliverCrossAxisGroup, and DecoratedSliver.
Several accessibility updates, like onOffSwitchLabels for CupertinoSwitch and improved screen reader support for IconButton’s isSelected, have been integrated.
Platform Specific Enhancements
Android: Flutter now supports Android 14/ API 34, ensuring a smoother developer experience on the newest SDK.
iOS: We've reduced visual distortions during screen rotations and introduced flexibility to rename the Runner project. Flutter 3.13 is primed for the forthcoming iOS 17 and Xcode 15.
Game Developments with Flutter
Since the launch of our Flutter casual games toolkit in 2022, we’ve seen an explosion of games developed using Flutter. We've enhanced the toolkit with more resources and sample code, and conducted workshops to further support Flutter game developers.
DevTools has been refined for better performance, including faster scrolling, enhanced search capabilities, and more intuitive navigation.
In our upcoming release, expect to see Material 3 as the default theme, and a shift from supporting Android Jelly Bean API levels to newer ones.
Contributions & Triage Scheme
Our efforts to streamline bug reporting and prioritizing have led to clearer definitions for priorities and an automated triage system. This is part of our commitment to address issues more efficiently.
Our journey towards this release wouldn’t have been possible without our vibrant community. Dive into the full list of updates in the release notes.
Jump aboard the Flutter 3.13 journey today by simply executing a flutter upgrade. Until next time, happy coding!