As part of its Mobile World Congress release slate, Google’s Flutter SDK is hitting beta 1. Flutter is an open source mobile UI framework that allows developers to make super-fast, cross-platform mobile apps.
“But wait!” you’re saying, “Google already has a mobile SDK! It’s called ‘Android.'” That’s correct, but as usual, Google isn’t attacking mobile app development with a single solution. It now has two mobile app SDKs: Android and Flutter.
As a cross-platform SDK, Flutter apps work on iOS and Android. It does a neat trick of kind of sidestepping both OS’ UI frameworks. Flutter apps don’t directly compile to native Android and iOS apps; they run on the Flutter rendering engine (written in C++) and Flutter Framework (written in Dart, just like Flutter apps), both of which get bundled up with every app, and then the SDK spits out a package that’s ready to go on each platform. You get your app, a new engine to run the Flutter code on, and enough native code to get the Flutter platform running on Android and iOS.
This is basically the “video game” method of app development. Just as a game would ignore most of the existing app framework and ship with its own engine that serves various goals, Flutter apps don’t use the existing app framework but come packaged with the Flutter app framework. Instead of an engine designed around blasting aliens in 3D or whatever, the Flutter ships with an engine designed for 2D app performance.
Shipping a whole engine along with every app does balloon the install size somewhat. The Flutter FAQ says an “empty” app is usually around 6.7MB on Android, so you’re adding that much extra to whatever your app is. The benefit of doing this is that the Flutter is fast. Flutter is designed from the ground up to hit 60FPS, and, while this might not be a rare thing on iOS, you can immediately feel the difference in Android. You also get to sidestep a lot of Android’s fragmentation issues, since you ship a platform along with your app.
Cross-platform development does not mean Flutter apps will feel out of place on your Android or iOS device. Flutter apps ship with built-in UI widgets for “Material Design” (Android) and “Cupertino” (iOS), which totally change how an app looks and feels. Flutter will change the scrolling behavior, buttons, sliders, dialog boxes, loading spinners, switches, tab bars, and more. If you want it to, a Flutter app really can feel just like a native app on both platforms. Shipping your own widgets also leads to a consistent look across Android’s fragmented device ecosystem.
Flutter has a good sales pitch for developers, too, beyond just the dual-platform capabilities. The Flutter team built a whole separation compiler just for development. While finished package apps get Ahead of Time (AoT) compiled with a lengthy compile time, for development there’s a JiT (Just in Time) compiler that is super fast. Use of the Dart language allows for a “hot reload” developer cycle, where many code changes can be seen instantly, live in the emulator. Flutter has plugins for popular developer tools like IntelliJ, Android Studio, and Visual Studio Code. You can mix and match Flutter code with each platform’s usual code, and there are plugins for Firebase.
Despite the “beta” tag, Google is already using Flutter in production for several apps, most notably for AdWords, Google’s advertising platform. Google says there are already hundreds of Flutter apps out there in the Android and iOS app stores, but the most popular example is the Hamilton: The Musical (iOS/Android) app. On Android, you can take a peek behind the scenes with the Flutter Gallery demo app.
The beta release of Flutter could also be seen as another step on the road to making Google’s experimental Fuchsia OS a real operating system some day. While Google’s new OS is called “Fuchsia,” a better name for it might be “Flutter OS.” Fuchsia’s UI is entirely written in Flutter, and the Dart VM is core to the operating system. When developers are writing Flutter apps for Android and iOS, they’re also technically writing Fuchsia apps, or at least code that will carry over to Fuchsia very easily.
As we’ve seen with Windows Phone and countless other upstart OSes, the key problem with getting a new OS off the ground is building an app ecosystem. If you can get everyone developing on a cross-platform SDK, and your new OS is just another target for that SDK, you’re giving your new OS a big head start. If Fuchsia does ever become a real consumer operating system (which still might never happen!), Flutter’s success will be a big part of it.
With an entry into beta, Flutter is quickly becoming a big deal at Google. We’ll definitely hear more about it at Google I/O 2018, where there are already several talks scheduled to get developers up and running on the new SDK.