Here at We Are Mobile First, we love everything mobile and have spent the last few years advocating for the importance of mobile-first development.
We mean collaborating with designers that specialise in the mobile user experience, building interfaces that take into account the specifics of the platform and subsequent devices, and creating well-considered apps that aren't just a reproduction of their website counterparts. You may remember that the latter featured in our post on the many myths and misconceptions of app development!
It also means creating UI that is built for single-hand use, drafting features that make sense when used on-the-go, as well as features that make use of the available sensors and work in tandem with the payment and authentication convenience we’re now accustomed to with modern, mobile devices.
The mobile-first way of thinking for us always meant that a native solution was the only way we could create the best experience for our users. Cross-platform always meant making compromises that were unacceptable to us, whether that was the fluidity of the frame rate or the slightly off presentation and feel of the components. Native had always been the only way to guarantee a compromise-free app.
2020, however, will see a shift in our thinking and subsequent app development.
Towards the end of 2018, we were made aware of a new Google development platform called Flutter. You’re bound to have read numerous articles about it in recent years, as it has rapidly grown in popularity within the app development industry, but in simple terms:
In this article, I want to focus on the benefits of Flutter and why we personally feel it is better than any other app development solution out there!
Flutter's cross-platform approach is unparalleled from a coders point of view.
Flutter offers its own implementation of popular mobile UI components, such as lists, tabs and navigation stacks. It also offers a masterfully implemented palette of all of the standard Material Components, as well as more specific iOS components.
The key here is that whilst they may look like the components we are used to in our favorite apps, they don't actually use the platform component itself. They’re instead rendered using Flutter’s highly-performant, cross-platform rendering engine.
This means they look and behave exactly the same on all platforms and they are extremely efficient. Since they are not the real native components, you are also insulated from any platform SDK changes, meaning your app will still look great on old, un-updated phones and it’s less likely to break with new releases of the platform SDK’s. iOS developers may remember the issues encountered with the introduction of Apple’s Dark Mode from a few years back!
As well as the standard library of components, Flutter gives you access to a very powerful rendering engine that allows you to make any custom UI component or effect you like and it does so efficiently.
Animation is an area where, in our professional opinion, Flutter blows even the native frameworks out of the water with its Rive support. Rive empowers modern motion UI designers to elevate apps to a whole new level.
With any cross-platform solution, you're going to have an issue with platform-specific features. Google, luckily, has you covered on that front! Flutter provides a mechanism, called Platform Channels, which allows you to call native methods and send data from native components back-and-forth with Flutter.
This enables you to write a plugin for anything that Flutter doesn’t currently support out of the box. Google has built an online repository and dependency management system for these plug-ins so, if you need a platform-specific feature, more often than not you don't even need to go to the trouble of creating the plugin yourself!
Being a native Swift developer myself for several years, moving to another language was a big concern for me. This concern, however, was quickly dispelled after we embarked on our first Flutter project.
By our second Flutter project, we were already developing much quicker than we could with our traditional native approach and, when you factor in that we now had one codebase for both Android and iOS, we couldn't help but fall in love with the solution.
Flutter’s performance is a big deal.
This is arguably one of the major drawbacks of the traditional cross-platform solutions that were always at a disadvantage due to some kind of translation layer. Flutter doesn’t have this problem. Its core-rendering engine is based on Skia. Skia is what both Chrome and Android uses for its UI and it is highly-optimised and hardware-accelerated on supported platforms.
Flutter apps are written in the Dart programming language - a relative newcomer in its field. Dart has the ability to compile down to native binary executables which gives Flutter a great speed advantage over many other cross-platform solutions. Dart, being a new language, doesn’t have any of the legacy hangups of other solutions. It has a clear, concise syntax that will be familiar to many native Swift or Kotlin developers without being too alien to general web developers. Dart has chosen to employ modern software engineering approaches making it easy to make clean declarative, reactive and functional apps without excessive use of libraries external to the standard set.
It’s true that Dart lacks some of the nicer advanced syntax sugar that Swift has but Swift sets the bar very high and Dart is not far away from reaching these heights. In my opinion, it’s a pleasure to write apps in Dart and I won’t want to give up the amazing cross-platform support that Flutter has emboldened me with anytime soon.
We feel Flutter is the best thing to happen to the mobile platform since the birth of the app store itself...so much so that we are staking our future on it.
From 2020 onwards, we will be implementing all of our client apps exclusively in Flutter.
We can’t wait to see where it takes us!
If you’ve got an app development project that you’d like to work on together, please email us at firstname.lastname@example.org. We look forward to hearing from you!
Have you experimented with Flutter yet? Tweet us and we’ll be sure to retweet the responses!
We Are Mobile First is a digital product agency based in Barcelona helping to transform businesses in a mobile-first world. Follow us on Twitter, LinkedIn and Medium to be notified of our future posts and stay up-to-date with our company news.