Mobile app developers in South Africa have not covered themselves in glory over the past few years. But, I don’t blame us.
Most clients do not have the budget to build apps “properly” in Kotlin and Swift, which leaves us with the Hybrid Frameworks (and I include you in this React Native); and these frameworks make it incredibly easy to put out mediocre apps and quite hard to do the opposite.
But, we must fret no more!
Not since we adopted Docker, have we been so excited about a new technology. When we first came across Flutter in early 2018, it was still fairly immature, but promised a lot.
Since then, it has been made stable by Google (version 1.0 released in December 2018) and we have rewritten and have started rewriting many of our client’s mobile apps in Flutter.
The results have been outstanding. Here are five things we absolutely love about Flutter and why we are unashamed fanboys and girls.
1. Fast startup time
We have found that our Hybrid apps (e.g written in React Native) startup up very slowly on devices. Anecdotally, I find this true for most Hybrid apps. First the white screen of death loads (for a second or two), then a loading screen (for another second or two), then the actual app, containing loading icons! I’m looking at you World Surf League!
Contrast this with Native apps (e.g Instagram). They will load almost instantly. We have found, that apps developed in Flutter load as quickly as Native apps. While this might seem like a small thing, it isn’t really. How quickly an app loads sets the tone for the entire user experience.
Our team has reported how the statically typed nature of Dart has prevented silly errors that would have otherwise occurred, especially when refactoring code. Named constructors also give a lot of flexibility. Flutter makes heavy use of this Dart feature.
3. Everything is a widget
While this takes a bit of getting used to (i.e. the concept that everything is a widget), embracing this leads to the rapid development of really slick user interfaces. Some benefits of this concept:
- No context switching. Development and “Designing the interface” are one and the same thing. Your app interface is the functionality and the functionality is the interface.
- Everything kinda works the same. You instantiate classes (widgets) using one of the many available named constructors. You look at the Flutter docs and work out which member variables you need. Rinse and repeat.
- This also leads to easy to follow, consistent documentation
4. Speed of development
Developer productivity gains have been significant. Factors here are the baked in elegance of Flutter widgets (using the Material theme) and it’s hot reloading capabilities. The VS Code extensions are also excellent, giving hints and catching errors early, with VS Code lighting up like a Christmas tree on error.
We have also found the experience of getting a developer setup with the Flutter development tools to be seamless. It has, so far, just worked. iOS was a bit trickier, but once our primary development Mac was upgraded to the latest everything (OS, XCode) everything “just worked” again.
5. The overall polish, feel & speed
With Flutter, you can build Just In Time for dev and Ahead of Time for production. This means that in development, hot reloading works and a few other goodies such as Assertions are enabled. Once you release to production though, the code is compiled ahead of time. This means blazingly fast, small apps that feel as quick as apps built natively in Kotlin and Swift.
Flutter gives you between 60 and 120 frames per second (on devices that can handle it). This means smooooth transitions and animations.
If you’ve gotten this far, don’t care for the technical jargon and are just wondering what this means for you and your business, then a) I salute you for reading on and b) will say that:
It simply means that one can now rapidly deliver exceptionally high quality apps at low cost
All thanks to Flutter. Yay!