In Spring 2017 Google announced their revolutionary, new hybrid mobile application development framework, Flutter. While the idea of hybrid frameworks in themselves isn’t a revolutionary concept, what google has provided us with is.
Traditionally, web and mobile apps are developed in one of three ways, Native, Cross Platform or Hybrid. Where Native is concerned, you’re developing an application solely for use on one operating system, typically in mobile they would be Android or iOS. Native development requires extensive knowledge of at times complex programming languages, as a result, the associated cost and timeline of producing a Native app is greatly increased. It also entails what is essentially 2 separate apps, both needing individual updates, and bug fixes, which with its complexity can drive up costs.
Traditionally, native apps delivered the best performance, they were more intuitive which led to a better user experience, interactions were also developed specifically for the platform meaning they felt more natural to the user.
The antithesis of native development is cross-platform development, in which one codebase is applied to more than one platform e.g. iOS and Android. Cross platform development can allow for dramatically decreased development times and costs, as you’re only creating one version of the software, however, it’s not without its drawbacks.
Cross-platform apps often feel clunky, and awkward to use. They don’t ‘flow’ in the same way that Native apps do. The below programmatic diagram shows the relationship between the code base in the backend, and the subsequent input on the front end.
Cross platform development often involves building a bridge between the code, and the native UI inputs, such as buttons and menus. With some users accessing UI interactions up to 60 times a second, the use of a bridge in the aforementioned sense can lead to performance issues.
There is a third way to develop apps, and this is where Flutter comes in. Flutter is a hybrid language, which in a nutshell is a combination between the efficiency of developing for cross platform, with the intuitive and robust nature of Native Development.
Flutter allows us to create apps for both IOS and Android from the same codebase, in some cases cutting development times in half. It also allows for easier maintenance given it's single codebase whilst at the same time allowing access to low level OS sensors and APIs.
Crucially, Flutter applications also compile to native code. This means that each application runs as though it were built natively in Swift/Objective-C (for IOS) or Java for Android. This is a game changer in the industry as typically hybrid frameworks suffer from performance degradation in exchange for a single codebase.
If you’d like to experience the possibilities of flutter in action, check out the DB8 and Quieten apps. They’re both currently live on the Android and IOS stores and utilise OS features such as subscription gateways, network layer tools, and animation.
Written by Rob Crozier, Lead Developer at Arch