Main image of article Time to Learn Flutter, or Stick to Native Development?

After spending 2018 in the incubator, Google has fledged Flutter as a cross-platform framework for every screen we use. But should developers adopt it, or stick to native app and web development?

At I/O 2019, Google announced Flutter is now available as a cross-platform user interface design platform. Initially created for responsive mobile app design, Google made the call to also release it for websites and desktop apps. In addition, it's being prepped for the Internet of Things (which Google tags as “embedded” devices) via Google’s Nest products (such as the Home Hub) and will make a home on Chrome OS.

In late 2018, the framework reached version 1.0, which Google dubbed the “first stable release.” That came after it shoved Flutter into a beta period in February 2018 (a moniker it removed in June of that same year).

Flutter for the web is in a “technical preview” period, but is a natural fit. Critically, it uses Google’s Dart language, which compiles to JavaScript, positioning it as useful for the web in addition to mobile. Flutter for mobile has reached version 1.5, while Flutter for desktop is now available for Mac, Windows, and Linux. It also helps Chrome OS become a developer-friendly platform; Android Studio and Visual Studio Code can be used on Chrome OS devices, both of which support Flutter and Dart development.

Two notable Udemy contributors, The App Brewery and Dev Slopes, both released Flutter courses during I/O. For $10, you can take over 30 hours of coursework to learn the framework, which sounds like a great deal. But is it worth it?

Flutter or Native Development?

If you examine the evidence, it’s clear who Flutter is meant for at this time. Google held a unique contest ahead of I/O; the winner made a compass app. The scope of the contest was limited by file size: all submissions had to be 5KB or less of Dart code. (Incidentally, Dart is now at version 2.3, which improves its use as a UI language, and adds more features to help it work better with Flutter.)

Flutter also sidesteps visual design principles. If you’re coming from iOS, you may find Flutter’s lack of a Storyboard frustrating. All design must be done programmatically, which is understandable since things such as button padding should be responsive to multiple screen sizes, but it can be a jarring change. Material Design is mandatory across the framework, too.

The Flutter ’Showcase’ website underscores the light touch Google’s design framework offers. There’s simply not a lot behind Flutter; the apps in its ‘Showcase’ are fairly simple and straightforward. That’s fine. Advocates will note Flutter works with Firebase (which has some intense features, such as machine learning), and has popular options such as Facebook sign-in and access to the device’s camera or GPS sensor.

Beyond that, you may have to write your own plugin if there’s native functionality you want or need. Currently, the Flutter/Dart plugin ecosystem is good enough, but not great. Another consideration: How many private APIs you'll want access to via other platforms, because those can’t be recreated.

For most applications, Flutter and Dart will do just fine; they just have the same limitations as any other cross-platform framework/language such as React Native. If you need something more robust (a mobile game or augmented reality, for instance), true native development is still preferred.