flutter, Google’s open-source multi-platform application framework, has seen quite a bit of momentum lately, with both of Google’s internal teams betting on it for projects such as the new Play Console app, the Google Cloud mobile app, and Android’s Near Share app for Windows, as well as developers at Canonical (for the new Ubuntu installer), French SNCF and others who use it for their projects. At Google I/O today, the team is announcing a number of new features for the project, which passed the 3.0 milestone at I/O last year and is now launching version 3.10.
Google also noted that there are now more than 1 million published Flutter-based apps, up from 500,000 by mid-2022.
With Flutter relatively stable at this point, it may come as no surprise that the team is working to expand some of its existing capabilities and make it easier to use Flutter in existing projects. But at the same time, Google is also looking ahead to new technologies, with a special attention to WebAssembly.
Image Credits: Google
With version 3.10, developers can now more easily integrate Flutter components into their existing web apps. That’s something Google started working on a while back, but now developers can use Flutter’s element embedding capabilities to embed Flutter components just like any other CSS element, and then manipulate it as a CSS as well -element.
In the early days, Flutter apps on the web were often full-scale, full-screen applications that were often based on existing mobile applications. “We started to see people building apps that took over the entire screen, often starting with ‘I have a mobile app and I want to use it on the web’. But we’re now starting to see people building apps that are designed around the web experience and hosting on it,” Tim Sneathsaid Google’s product and UX director for Flutter and the Dart programming language.
Sneath also noted that the team has been working hard to improve Flutter’s performance on the web (Flutter, it’s worth remembering, was originally a framework for mobile app development, with stable web support not coming until 2021). version 2 coming). In concrete terms, this means that loading times have now been significantly reduced.
Speaking of web support, the Flutter team continues to work on targeting WebAssembly (Wasm), despite the framework’s close connection to the Dart language. Since Wasm is still in its infancy, many of its specs remain in flux. As the Flutter team points out, Wasm didn’t have garbage collection until recently, but Google worked with a number of teams in the Wasm ecosystem to WasmGC extension, which is now being integrated into Chromium-based browsers. The team now felt comfortable with this added preview support for Wasm in its pre-release channels, allowing developers to compile Dart to Wasm.
“We’ve had production-grade JavaScript support for quite some time, but the ability to bring the native power of compiled experiences to the web will help even further,” Sneath said. “A lot of it is also about integration. If you have code in Kotlin or Dart or even other languages that compiles to the web, and the ability to interact with it, it shifts where the substrate is. Sometimes people are very concerned about this language versus that language and then treat them as these separate ecosystems. To us, you care about people writing code in whatever language they want and Wasm suddenly brings that consistency to our strategy. we’re excited to finally get to that point and maybe get away from dialogues around (language) A versus B.
Another recent focus for the Flutter team has been graphics performance. As the team announced earlier this year, it has completely rewritten its Impeller rendering runtime and in version 3.10 that is now the default for iOS apps. With this, simply by migrating to the latest version of Flutter, apps get a big performance boost.
On Android, Impeller is now in preview. The engine relies on that Vulkan library, which is supported by all modern Android devices (although Google will provide a compatibility mode for older devices). While it seems unusual that Android isn’t the first to receive these updates, Sneath noted that the Flutter graphics engine on Android was already quite optimized. So the team decided to prioritize iOS, where there was significantly more room to improve graphics performance