In this article, I’ll highlight and discuss some of them, and if you need more details, you’ll find them in the source materials.
New Graphics Engine
From the very beginning, Flutter has been offering its own approach to rendering UI elements on the screen. The underlying Skia engine has performed well, although more curious individuals may notice some unwanted baggage that it carries without our consent, e.g. the so-called shader compilation jank. The Flutter team decided to address this issue comprehensively. Instead of making fixes to Skia, they created an entirely new, complete engine from scratch.
They named it Impeller and designed it with high performance in mind from the very beginning. Until recently, it was available as an optional preview for app developers. However, starting from Flutter 3.10, it is now enabled by default on iOS, and developers will have access to a preview version on Android. It is worth noting that it’s a significant change from the perspective of the framework itself. The implementation and testing process for the engine took several years. The change doesn’t directly affect the API or compatibility of existing solutions, but it shows that Google takes the development of this technology seriously.
Impeller uses the Metal API on iOS, while the Android version is based on Vulkan (with backward compatibility for devices that don’t support it). The replacement of the graphics engine not only solves the aforementioned shader problem, but also opens up the possibility of further increasing the performance of created applications (which is already quite impressive). The new engine itself enhances the stability, flexibility, and predictability as the foundation for our solutions.
Web applications are taking shape
In the latest version of Flutter, there are also improved optimizations for generated application bundles, reducing their size. In some cases, this can lead to a 42% increase in loading speed. Additionally, there is now the ability to embed Flutter-created elements within an existing HTML page (previously, Flutter had to create the entire screen). This provides developers with added flexibility, as they can embed only selected elements – such as those directly from a mobile application – into their web application. It’s important to note that when embedding such elements, we now have access to our components from CSS code, which allows us to leverage existing animations or other visual effects, for example.
Investments in security
In today’s world, cybersecurity is starting to play an increasingly important role. Well-designed solutions allocate significant financial resources to create products that are as secure as possible and also invest in user education in this area. After all, it is often humans who are the most vulnerable to attacks.
In 2023, the Flutter team greatly prioritized topics related to security which translated into improvements in various areas, including security testing, automation, and the entire supply chain. Flutter now achieves a 100% benchmark, which can be found at this address – you can read and explore the areas that have already been covered. In the next stages, it is supposed to achieve subsequent levels of the benchmark, namely Silver and Gold.
Additionally, the team implemented code analysis tools for good security practices and known vulnerabilities on all critical repositories, and Flutter and the Dart SDK have now reached SLSA L1 level. This is a significant step forward in better securing the tools used by developers every day.
Material 3 as the default look of widgets
The default component library provided by Google is being constantly developed, with its appearance refreshed. Its latest version now fully complies with the latest Material Design specifications. The changes include new components along with their themes, an updated look for existing ones, and many other useful elements. At the time of writing this article, Material 3 is optional, but starting from the next release of the stable version, it will be enabled by default.
The appearance of the new Flutter components can be previewed, among other places, in a specially prepared application.
Those interested in details about Material 3 can explore the official materials.
The changes in the latest version of Dart were definitely the hottest topic of discussion among programmers. Countless threads appeared on GitHub, various discussion forums, and even presentations at meetups and conferences, discussing what we can expect from the changes in the upcoming version 3.0.
As you may have noticed, the decision was made to increase the major version number (from 2.19 to 3.0), while for Flutter, only the second number was raised (from 3.7 to 3.10).
Here’s a brief outline of the selected changes in the latest iteration without delving into the details:
Dart is now 100% based on sound null safety. There is no longer support for packages and applications that don’t support null safety.
Records – in a simplified manner, types can now only take a single value. With the introduction of records, it is possible to return multiple values simultaneously.
Patterns and pattern matching – a mechanism that simplifies working with structured data, mainly records. Many programmers will be pleased that this mechanism expands the capabilities of the switch statement, which has been quite limited in Dart from the beginning.
Class modifiers – a mechanism that adds new possibilities mainly for creators of complex APIs. It allows for more precise control over how provided definitions can be used.
The innovations mentioned above are just some of the selected elements. Beneath them, especially directly from the API level, there are many more changes that will be of interest to programmers. As we can see, the latest version of Flutter, as well as Dart, brings many new and significant improvements. In our opinion, their nature strongly emphasizes that Google is focusing on the long-term development of the framework and has high hopes for it. The changes are not only superficial but also reach the very foundations. Some of them are already a solid foundation for future comprehensive enhancements, especially when we look at the web domain.