Flutter: Emerging Dominance In The Cross-platform Market.

And The Death of Hybrid Technologies

Wisdom Mbila
Flutter Community

--

The use of mobile technologies is rising at an alarming scale. Consequently, the need for mobile applications has soared, more powerful and efficient mobile development stacks are required to keep up with the demands.

Mobile market cap stats from Statista

Since there are several mobile platforms (iOS, Android, BlackBerry OS, et cetera), each one with a different SDK (Software Development Kit)and specific development capabilities, application development becomes more complicated and expensive. The challenge is to come up with a solution that allows us to deploy in different platforms using a single SDK tool and maintaining the same performance as the native application.

The growth of cross-platform technology has been on a hike since the past decade since its introduction into the technology market. Before we dive deep into how they compare, what do we mean by Cross-Platform?

Cross-Platform (also multi-platform software) software is a type of software application that works on multiple operating systems or devices, in clear terms it simply means writing from a single codebase and deploying to multiple platforms (Android, iOS, Desktop, Web).

Nitobi developed the first cross-platform technology Apache Cordova (formerly PhoneGap) which was later acquired by Adobe Systems in 2011. Ever since new technologies have been emerging into the market starting from Xamarin (developed by Nat Friedman — Github CEO) which later got acquired by Microsoft in 2016 for $500 million due to the hypes around the market value of these technologies.

Evolution Of Hybrid And Reactive Technologies

Following the tremendous growth of these technologies, some other cross-platform frameworks were built with the premise to expand cross-platform to other development stacks thereby enabling web developers to build mobile apps that can run on multiple platforms.

Ionic Framework was built on top of AngularJS and Apache Cordova to allow creating mobile apps and PWAs using HTML5, CSS, and Javascript. With the recent announcements of support for other frameworks like React.js and Vue.

The technology has been adopted by top companies in the leagues of the world’s largest fast-food chain company McDonalds ( McDonald’s Türkiye was built with ionic), automotive company McLaren and many others.

However, it flops in large-scale applications and hi-tech environment despite its massive traction. Its core architecture has limited capabilities to cater to huge technical demands.

As earlier emphasized, this technology was built as a bridge to enable non-mobile developers to create apps thereby eliminating code compilation and rendering as an embedded WebView. Much like loading a website outside the browser, bundled as APK or APP for ios.

Notable is the lope holes such as speed, performance, UI design, user experience, and even access to platform level APIs, though websites can call intent to mobile services like camera, audio, and sound recorder.

It is a different ball game when broadcast receivers, security APIs (such as Touch/Face ID), system accessibility (i.e battery optimization, etc), background services (NB: service workers are useless when the app is killed), OEM APIs (Original Equipment Manufacturers), Telephony APIs (i.e making phone calls, sending SMS/MMS), native database/storage (SQLite), e.t.c are required.

Autify is an automation mobile application that is largely adopted by Data/Subscription SMEs to automate sending airtime/data subscriptions to their customers even when the app has been removed from the foreground or killed. It automatically starts when the phone is rebooted or switched on without the need to launch the app again.

All these features can only be achieved using broadcast receivers, background service, and telephony APIs which hybrid technologies are lacking access to.

Similarly, its user experience is wack. Hybrid apps are don’t adhere to the Interface/Design Guidelines set by Apple and Google, so users don’t feel “at home”!.

Needless to overemphasize the cost of performance; these apps are way too heavy. It doesn’t compile and at the same time horribly slow.

React-Native which was developed by Facebook didn’t save the day either. It's far better than any hybrid/reactive frameworks in a sense. It has more support for platform-level APIs and closer to the native SDKs, unlike others.

It handles most of the cons I highlighted earlier concerning other hybrids such as background service, telephony service APIs, broadcast receivers, better performance (improved UI rendering/ User experience). Other major issues persist.

React-Native runs on Javascript. It uses bridge-like tools to render. Apps are quite slow and heavy.

Top companies that adopted it have reverted back to native stacks including its creator, Facebook, who reverted back to the native languages (Java and Swift) based on rising performance concerns.

According to their report: “ Rewriting the Messenger codebase makes the app faster, smaller, and simpler messaging app”.

We are excited to begin rolling out the new version of Messenger on iOS. To make the Messenger iOS app faster, smaller, and simpler, we rebuilt the architecture and rewrote the entire codebase, which is an incredibly rare undertaking and involved engineers from across the company.

Compared with the previous iOS version, this new Messenger is twice as fast to start and is one-fourth the size. We reduced core Messenger code by 84 percent, from more than 1.7M lines to 360,000.

We accomplished this by using the native OS wherever possible, reusing the UI with dynamic templates powered by SQLite, using SQLite as a universal system, and building a server broker to operate as a universal gateway between Messenger and its server features.

Wow, from 1.7 million to 360,000 lines code, that’s one-forty-seventh of its previous codebase. Some other companies have taken the same step:

And, more recently, Dropbox with shared code in C++:

We have now completely backed off from this strategy in favor of using each platforms’ native languages (primarily Swift and Kotlin, which didn’t exist when we started out). This decision was due to the (not so) hidden cost associated with code sharing.

https://blogs.dropbox.com/tech/2019/08/the-not-so-hidden-cost-of-sharing-code-between-ios-and-android/amp/

Cost Of Efficiency

Why other companies/startups haven’t reverted back to native technology in order to mitigate all these lope holes in using hybrid technologies?

Critically accessed Facebook and other companies aforementioned can afford to have several Android (Java/Kotlin) and ios (swift/objective C) developers to work on two separate codebases to produce the same app.

Search for the cost of an entry-level android or ios developer. It is something north of $76000 per year (around 30 million naira). Spending that much on 2 developers equals $152,000 (60 million naira wawu!!!).

Imagine the death of a non-funded startup, crazy right? Or let’s do the maths for a service-based tech company in terms of Cost Of Acquiring Customers (CAC).

Scenario:

You closed a client for an app development with 2 months development window. I am certain that it will cross that and 2 developers working on the different OS (android and ios) app minus the backend engineer if API will be needed will paid $24,000 (11 million naira) both for the 2 months.

How much will you charge the client? $30,000 (around 13 million naira) or upward?

Anything lower is a lost but am just imagining the wide possibility of a Nigerian brand paying that much for an app.

For some less funded startup and service-based companies, Hybrid is a way to recycle their web developers to fill that gap on low cost but that won’t solve the technical problem.

Getting to the market faster may win the battle, but not the war. Acquiring users before your competitors are important, but even more important is the retention of those users. Bad user experiences are intolerable. With hybrid, you are bound to lose to the competition, talkless of staging a disruption.
(You are definitely daydreaming 🤦‍♂️🤦‍♂️).

The Saviour Has Arrived.

All thanks to Google Developers for giving us Flutter.

Flutter was initially released in 2017. So flutter is a widget structured cross-platform technology that supports dart as its core development language. It was developed to connect directly to the native SDK of all major platforms (Android, iOS UI kit, windows, mac, web, and Linux). I know you guys are smiling now. So how is that for a savior 😎?

Flutter doesn’t run on the bridge or neither does it render as an embed UI, rather its widget is connected to the exact UI element of the native SDK. When you call a flutter widget it automatically renders the exact UI element from either of the platform SDK. It works directly with the native UI. The idea behind Flutter is to help developers build beautiful, natively compiled applications for mobile, web, and desktop by using a single codebase.

Key Features:

  • Code Reusability: Since Flutter provides its own widgets with its own high-performance rendering engine, thus code reusability is much faster, quicker, and highly flexible.
  • Code Structure: Flutter uses Dart programming language which is sufficient for customizing the UI layout of the app and allows developers to create platforms, structures, and widgets that can be easily reused.
  • Performance: Flutter provides 60 frames per second (fps) performance speed which is the same compare with native apps (java/Swift).

According to statistical (Analytical platform), flutter has a bright light of having hedge over other cross-platform technology.

https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/

Flutter was launch in 2017, 2 years later than its closest competitor React Native which was initially released in 2015. Following these stats, there have been drops from 2019–2020 on the market share of other cross-platform technologies with Cordova, Ionic, and Xamarin dropping to 9%, 10%, and 12% respectively.

Although React-native remained on a stagnant level following its 42% market share in 2019 and 2020. Flutter has shown a progressive increase of 9% prior to its 2019 30% share.

Statically observed, it is the only technology that shows a growth mark from 2019 –2020. Flutter is definitely growing to dominate the market. And, strongly convinced, Flutter appears to have what it takes (performance, security, better UX, active community, continuous adoption) to lead.

--

--

Wisdom Mbila
Flutter Community

Mobile Developer 📱| I write about software development and personal life experiences