21. January, 2018 : Articles
FLUTTER IS THE FUTURE OF MOBILE APP DEVELOPMENT

Flutter is the future of mobile app development

“Flutter is a new mobile app SDK to help developers and designers build modern mobile apps for iOS and Android.” Modern, reactive framework allows us to build powerful UI with animations, shared codebase and views over iOS and Android platforms. It makes development process easier, development costs at minimal and rapid deployment. Flutter is build with C, C++, Dart and Skia. And the most beautiful part is that all release code is compiled in native code (Android NDK, LLVM, AOT-compiled) without interpreter involved. If you are familiar with performance drawbacks of hybrid frameworks you can easy say that flutter compile fastest code very close to pure native performance.

Comparison of Cross-Platform frameworks

React Native

We have used React Native only in one test project, but we evaluated that it’s not better option than Flutter.

Pros: Large dev community, used in production by couple of “top apps”, ease of development with “hot reload”, native OEM Widgets, shared code base and views for Android and iOS.

Cons: Javascript codebase - not fully native, Restrictive licence.

HTML5 Hybrid apps and PWA

We are primarily web development company and we have build almost all our apps using HTML5, including high performance football game for Heineken UCL campaign using PixiJS (defacto best performing WebGL engine and you should check it out on http://www.pixijs.com/). We are real fans of HTML5 and Progressive Web Apps (PWA) but we have encountered many problems with different platform versions and performance drawbacks on low budget devices, we will continue to use it in the future as we have build custom platform wrappers to make development process easy with highest possible performance. There are many other options to choose, if you build simple hybrid app, including Cordova, Ionic, Framework7 or NativeScript, etc but they all have their own drawbacks.

Pros: Largest dev community, ease of development, web developer skills are all that is required for most types of apps, shared code base and views for Android, iOS and Web browser - still some latest HTML5 and CSS3 methods are platform specific.

Cons: Performance, webview restrictions, platform versions (webview versions) dependency.

Flutter.io

Easy, fast, efficient and completely different, but still close to Android and Javascript development environment.

Pros: Supported and developed by Google. Used in production by some of “top apps”. Primary development SDK for Google’s new mobile OS called Fuchsia. High performance (highest that I’ve observed). Native C/C++ compiled code. Full control over widgets rendering (can use Material widgets on iOS or Cupertino on Android or both on specific platforms from same codebase). Ease of development with “hot reload”. Build, test, install is easy with one terminal command, blazing fast IDE IntelliJ IDEA, So much more :)

Cons: Alpha stage in Jan 2018 (almost at Beta stage with high pulse rate on GitHub), Dart language (although similar to JavaScript so learning some Dart lang specifics is easy), needs some smart engineering to make complex things work in alpha version.

NAPP BaaS with Flutter

Our own NAPP BaaS has evolved and with last project it has support for Flutter. Currently supports client libraries in Android Java, iOS swift, HTML5 and Flutter. NAPP uses RESTful API and WebSockets so integration on other frameworks is trivial, but it’s always good to have ready to use client libraries for faster app development. In case of Flutter it works absolutely amazing, streamed data is one of best feature of Flutter/Dart and it can support couple of thousands listview items with no decreased performance.

APP that was build with Flutter and NAPP

We were approached by a client that needed mobile app for hotel guests check-in and they need it fast as possible (approx one month). Idea behind app has great potential and it solves many issues that every property owner has with guests process handling. We have accepted the challenge, postpone some of the other projects and dive into this project. At first we have eliminated our regular approach and solutions for app development (hybrid mobile app), as it was not suitable for our client due performance and some native third party plugins. We were testing development in react native but failed to speed up the development process, then we tested Flutter and development was really fast despite the fact that we had to learn Dart Language, some non traditional (code first) UI programming approach and lack of tutorials and examples. Only worry we had was “alpha stage” of framework and if everything will work on production, especially on iOS with their thorough app test review. I can put your worries at rest, everything works at least as good as pure native app, there are some challenges and workarounds to make more advanced app work, but nothing average coder can’t tackle. There is one thing we had missed in flutter is support for SVG or similar vector image rendering, so to add app logo we had to build it by code, also there are other solutions to this problem, raster images or custom icon font embeddings but there are some cases where this isn’t best or appropriate. In Flutter everything is a widget! And this is great, you can create your custom widgets or extend available widgets, and screen view in code is practically the same as elements (objects) it contains. That makes it very easy to adopt this Flutter specific programming paradigm, just compose widgets and flutter will handle everything with use of widgets - gestures, animations, input elements, text views, forms, UI, etc. Mind that flutter is “code first” framework, you don’t have layout builder UI in IDE and you need to stack widgets in Dart Language, this can be painfully hard if you choose different layout structure in latter development cycles as you can get lost in “json looks-a-like” snake of brackets code and is usually better to just delete everything and carefully rethink UI structure before coding, but that rule is almost the same with HTML development and usually a good practice everywhere.

Hope you liked our insights from development with Flutter framework and that this could encourage you to at least try it as better alternative to React Native.


Flutter web page: https://flutter.io/
Flutter GitHub: https://github.com/flutter/flutter
Boštjan Mrak

Boštjan Mrak

Cofounder, CTO, lead developer
I code in sleep and sometimes sleep while I code.

Linkedin