Tuesday, March 28, 2023

Google Flutter Previews New Renderer on iOS

Google Flutter previews new renderer on iOS

Google recently released a significant update to its popular cross-platform development framework, Flutter. With version 3.7, developers now have access to a host of new features and improvements, including custom menu bar support and a preview of a rendering engine for iOS applications.

In addition to these improvements, Google also unveiled Dart 3. This is the latest version of the programming language used in conjunction with Flutter.

This alpha preview of Dart 3 provides developers with an early look at the newest enhancements to the language. Including improved performance and new features designed to make development easier and more efficient.

Menu Bars & Cascading Menus

Flutter 3.7 has introduced a range of new features for creating menu bars and cascading context menus.

For macOS, Flutter now includes the PlatformMenuBar widget, which provides developers with the ability to create menu bars that are natively rendered by macOS rather than Flutter. This results in a seamless, integrated user experience that feels like a truly native application.

And for other platforms, mobile app developers can define a Material Design menu that provides cascading menu bars (MenuBar), or standalone cascading menus triggered by another user interface element (MenuAnchor). These menus can be customized according to the specific needs of a project.


The impeller rendering engine, which is known to provide predictable performance, concurrency support, and portability is now available for preview on iOS’s stable channel. Google will make Impeller the default renderer on iOS in a forthcoming stable release.

Although Impeller on iOS will meet the rendering needs of nearly all existing Flutter apps, there are still a few gaps in API coverage listed on the Flutter wiki.

iOS Release Validation

When preparing to release an iOS app, it is important to follow a comprehensive checklist of settings. In order to ensure the app is fully optimized and ready for submission to the App Store.

To make this process easy, the "flutter build ipa" command now includes a validation process that checks these essential settings and provides important feedback to developers. This feature helps ensure that all necessary changes are made before the app is released, leading to a smoother and more efficient submission process.

Also In Flutter 3.7

    With the introduction of the 3.7 version, Material 3 support has been greatly enhanced with the migration of widgets including Badge, BottomAppBar, Checkbox, SegmentedButton, Menus, Slider, Banner, and so on.

To leverage the benefits of these features you just have to turn on the useMaterial3 flag in your application’s ThemeData widget.

    In this release, the DevTools Memory debugging tool has undergone a complete overhaul. Three new feature tabs have been added namely Profile, Trace, and Diff that support all the previously supported memory debugging features.

If you want to know more about these features, then you can check out the official documentation i.e. Flutter.dev

The Performance page in Flutter 3.7 has also been updated with some highly anticipated new features that will greatly benefit developers. One such feature is the introduction of the Frame Analysis tab, which provides in-depth insights into the selected Flutter frame. This tab is located at the top of the Performance page and provides developers with a wealth of information about their Flutter frame.

    Scrolling has also been improved by the arrival of polish and refinement for trackpad interactions, and new widgets like Scrollbars and DraggableScrollableSheet.

With the addition of newscrolling.physics, macOS applications will experience higher fidelity to match the desktop platform.

    Internationalization support was completely revamped.

    Previously, it has been announced that Flutter will no longer support macOS versions 10.11 and 10.12. Further analysis revealed that removing support for version 10.13 would have a limited impact and help to simplify the codebase. This means that apps built using the latest stable Flutter SDKs will no longer be compatible with these versions and the minimum supported version of macOS will be increased to 10.14 Mojave.

Consequently, due to the widespread support for Metal across all versions of iOS and macOS supported by Flutter, the OpenGL backend has been successfully removed from both the iOS and macOS embedders. This has led to a notable reduction in the size of the Flutter engine, with the compressed size being decreased by a considerable 100KB.

    As Apple continues to prioritize Swift for its APIs, developers are looking for ways to adapt their Flutter plugins to this new technology. To assist them in this process, Google has migrated the quick_actions plugin from Objective-C to Swift.

This provides a valuable example of best practices for those looking to migrate or create new plugins in Swift. The quick_actions plugin serves as a model for those looking to create plugins that are both functional and optimized for performance.

    In Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14. Due to this, bitcode support has been removed from Flutter.

However in case if you have enabled bitcode manually in your Xcode project, then you can disable it as soon as you upgrade to Xcode 14.

Also, you can check out Apple’s documentation if you want to know more about bitcode distribution.

    A major enhancement to the integration of native iOS views and Flutter has also been introduced. The integration has now been elevated with the addition of the capability for native iOS views to be blurred when they are rendered underneath a blurred Flutter widget.

This powerful new feature is made possible through the use of the BackdropFilter, which now enables UiKitView widgets to be wrapped inside, providing seamless integration.

This development opens up a whole new realm of possibilities for developers who can now create visually stunning and highly interactive user interfaces with ease.

    This release also introduces a major improvement in memory management. It includes several optimizations that work together to significantly reduce junk caused by garbage collection pauses and lower CPU utilization. This results from high allocation velocity and background GC threads and minimizes the memory footprint.

Also, the Flutter engine will handle GPU images and native objects that back Dart:ui Dart objects. This improvement streamlines the memory management of these objects, leading to improved performance and a reduction in memory pressure.

Previously, the Flutter engine registered the size of GPU images with the Dart Virtual Machine (VM). Even though the images were manually deallocated by the framework when no longer needed. This resulted in an increase in Dart heap memory pressure and triggered ill-timed garbage collection (GC) events that could not have collected any additional memory.   

DianApps is a leading flutter development company.

Also Read – Advantages of Hiring a Flutter App Development Company?

Also Read – Top 6 Flutter Development Companies in India