It’s 2018, how should you make an app? Here’s the short answer: nobody knows. But maybe that’s a good thing.

Yesterday, Google announced the official beta release of its Flutter app development framework (as seen on 9to5Google). It’s one way to make an app, and it’s especially well-suited to fancy user interfaces.

”But wait,” you ask, “didn’t Google just announce Kotlin support for Android development? Why would Google want me to learn Flutter now?”

And that’s a very good question.

See, there are two main paths to app development. “Native” development, where you use the default tools and languages provided by Apple or Google for their respective platforms. But then there’s... everything else. You can make apps for Android and iOS in C# using Microsoft’s Xamarin, you can use HTML and JavaScript in Apache Cordova, or you can just use JavaScript with Facebook’s React Native framework. You can also mix and match techniques, if you have the expertise.

There are a million methods to build apps, mostly for two simple reasons:

Native app development using official tools is disturbingly difficult. Code written specifically for Android or iOS is depressingly unportable.

Now Google is offering an alternative to its existing Android tools with a cross-platform framework of its own.

Flutter is a Frankenstein’s monster of various Google projects. It’s based on Google’s own Dart programming language, which is apparently popular within Google but nowhere else. It has a rendering engine based on the Skia Graphics Library, the same thing Chrome uses to draw pixels on a screen. There’s an IntelliJ IDE for Flutter, just like Google has with Android Studio. And Google is also using Flutter in its upcoming Fuchsia OS, so that whole team is in the mix.

Instead of wiring up to native Android and iOS components, Flutter paints every single pixel to the screen. Flutter has pixel-perfect replications of the iOS UI and Android’s Material UI, so developers can build familiar experiences out of the box, but Flutter’s real power is in creating totally custom interfaces and animations.

For instance, Flutter’s biggest real-world hit so far is the Hamilton app. Love it or hate it, it certainly has its own aesthetic.

I’m mostly excited about Flutter because it’s the default UI framework for Fuchsia, and I’m obsessed with Fuchsia. Google has a ways to go before Flutter is as intuitive as React Native, or as feature-rich as a native SDK. Also, is anyone really excited about learning Dart?

But I’m glad that, in some small sense, Google understands how horrible app development is and wants to make it better.