Flutter 2.5, the latest version of Google’s UI toolkit for native application development, offers better performance as well as full-screen enhancements for Android.
Introduced September 8, Flutter 2.5 improves frame rasterization by wiring up shading precompilation via Metal rendering. Proponents of Flutter stressed this move as another step toward reducing iOS jank. Also, frame processing now takes priority over processing other asynchronous events, eliminating jank from this source in testing of Flutter. A further move to reduce jank involves the garbage collector (GC), which has suffered from jank when the GC pauses the UI thread to reclaim memory; now, memory for unused images is reclaimed eagerly, considerably reducing GCs.
Another performance improvement involves latency when sending messages between Dart and Objective-C/Swift (iOS) or Dart and Kotlin/Android. As part of tuning up message channels, removing unnecessary copies from messaging codecs reduces latencies by as much as 50% depending on message size and device.
Another performance improvement pertains to targeting iOS. Flutter apps built on Apple Silicon M1 Macs run natively on ARM iOS simulators. Thus, there is no Rosetta translation between Intel x86_64 instructions and ARM, which increases performance during iOS app testing and allows developers to avoid subtle Rosetta issues. This is a step along a path for full support in Flutter for Apple Silicon.
Flutter 2.5 was announced as stable on September 8. Installation instructions can be found at flutter.dev. Also in Flutter 2.5:
- For Android, issues have been fixed related to full-screen modes. Support is offered for varying full-screen modes, which affect the visibility of UI overlays such as status and bottom navigation bars.
- Dart 2.14, also unveiled September 8, is included, featuring new formatting to make cascades clearer, new pub support for ignoring files, and language features, including the return of the legendary triple shift operator. Also included in Dart 2.14 is a standard set of lints shared between new Dart and Flutter projects that come out of the box.
- Flutter DevTools can take advantage of updates enabling, for example, Flutter to do a better job of associating trace events with specific frames, helping developers determine why a frame might be going over budget. DevTools also helps diagnose shader compilation jank in an app, using a Flutter engine capability for identifying shader compilation events. Meanwhile, a Widget Inspector update allows for hovering over a widget to evaluate the object and view properties.
- Support is being dropped for iOS 8, with Google citing its low market share.