If you are a mobile developer, you must have noticed a bit of fuss around Google’s new, shiny SDK: Flutter. And if you are a mobile developer interested in creating a new app, you might have wondered: is it a viable option for your next project? In nearly every event that I’ve been to that touches on Flutter, I heard similar questions: Is Flutter mature enough for production? Does it support my favorite API? Why would I choose it over my current SDK? Let’s examine these concerns a bit closer.
New, or too new?
Unless you are just experimenting with different tech stacks, you probably think of releasing your new app to the wide world at some point. And you really don’t want to get stuck at the most tedious step of the development lifecycle, discovering that pushing your bundle to customers requires black magic.
Well, don’t fret! While Flutter’s official page lists just several major showcase apps, there’s a community-driven list of apps already in the wild that use the SDK. Surely people releasing those are not sorcerers! It’s doable and it’s being done.
But if you can’t stop wondering how the deployment of your Flutter app looks like, you need to remember that essentially you’ll be releasing a regular Android and/or iOS app with your Flutter code compiled into native libraries. Google has already provided some guides on how to do that on for iOS and Android, and several CI services (such as Bitrise, and Cirrus) have explicit support for Flutter apps. There’s even one service dedicated exclusively to Flutter.
More than just shiny
When Google presents Flutter, they like to show off insane animations, and repeat its impressive 60 fps rendering as a key feature of their SDK. But we in the real world know that eye-candy is often just an addition to the core functionality of our products. What good is 60 fps if you can’t integrate with your backend? You might as well sell fancy bricks.
Fortunately, Google maintains a listing of Flutter-compatible packages, that you can search through and explore. Many of those are written by Google engineers if you are wondering what’s the quality of those (if you don’t believe, check out their repository pages). And you can see there’s a lot of various packages — ranging from state management through UI features to operations support.
Naturally, that doesn’t mean that everything is already provided. If you depend on an obscure data format, you might need to write a bridge between the native code and your Flutter code using platform channels (shameless plug — see also my nifty presentation on that). And if you want to reuse your fancy UI, rather than rewriting it in Flutter, you can do that as well!
No painkillers necessary
With all this focus on what you can do, it’s easy to forget about You. While the features and possibilities of Flutter can be encouraging, you need to know if developing with it is going to hurt.
I need to be very frank here — the Flutter toolset is one of the main reasons I fell in love with it. First of all, the flutter command line tool is so stress-free that I’m eager to start new projects with it. Frankly, you might not even need more than it, but if you’re more inclined towards having everything done in your IDE, you can do that as well with plugins for Android Studio/IntelliJ and VS Code.
The development process itself is also nifty! With hot reload you can instantly see the changes to the widgets while you code. It preserves your widgets’ state, so there’s no need for redoing any operations that led you to your view. Of course, this comes with a downside: if you need the state to be reset, you’ll need to restart your app.
Moreover, Flutter comes with a set of tools to assist you in debugging — especially when it comes to the visual aspects of your app.
Do as Shia LaBeouf says
All of these arguments might be convincing, but the ultimate argument lies in practice. So find yourself a fun task, and try Flutter out! I’m pretty sure that after several hours of working with it, you’ll feel that it’s been the right thing to do.
As with any software, Flutter SDK is not flawless. Remember to reach out to the growing community if you feel stuck. Have fun, and see you there!