Oct 14, 2022, Mobile

Mobile app framework development

John Oxley Business Consultant
Mobile phone and cube
Recently, two iteo Flutter devs sat down to talk about the mobile world, its history, and where it is heading. There may be a few platforms out there, but everybody knows and loves Android and iOS. Android’s share of the market is bigger, probably due to the number of smartphone manufacturers, whereas Apple is the only one for iOS. There are more than 5 million apps for the two leading platforms, and historically it was quite expensive to develop a mobile app to run on both.

It needed two teams running concurrently to produce each version. Many companies settled for just one and it was difficult to decide. The choice of OS sometimes depended on location, with some countries preferring one over another. The US and Japan seemed to favor the iPhone, whereas Europe tended to lean towards Android. 

Android apps required a great deal of flexibility, especially when dealing with different screen sizes.

Apple iOS had plenty of weird bugs and flaws in the early days, particularly battery drain and wifi issues.

But then came the silver bullet – cross platform development.

A solution and a challenge?

The ability to write one code for two operating systems was a huge step forward but was also riddled with problems at first.

Laggy screen scrolling, random crashes and unresponsive screen buttons were among the many complaints in the early stages of cross platform dev. And don’t even mention screen sizes and camera notches.

But, as always, the technology got a fix and now all things seem to be coming together. The most important questions for devs to answer today are – what is needed and who needs it.

But cross platform isn’t the be-all and end-all solution – there are still other options that are better suited for different situations.

Native apps

The standard bearer of mobile apps, also the most expensive and least flexible in terms of platforms. One dedicated code, one operating system. Functionality and performance are premium, and the app works beautifully.

Web apps

These apps pretend to be native but actually run in a smartphone’s web browser, so there is no software to download. They work on all platforms, but they tend to be slower and slightly less secure than native apps.

There is an improved web app type that is getting a lot of positivity, the Progressive Web App or PWA.

A PWA is web based that replicates a native app, and it’s almost impossible to tell between the two. It works offline as well, using a caching system that updates when an internet connection is available. Security is not an issue either, as a PWA runs off the https protocol. 

Hybrid apps

While native apps are written specifically for a single operating system, Hybrid apps can be deployed to different systems by using specific software development kits (SDK) with the code remaining the same. 

It’s like the code uses a different container for Android, iOS and Windows (laptops and desktops). Basically, the hybrid name comes from a combination of a native and web app.

It can use the hardware and functions of the device, such as the camera and phone contacts, but the performance is not always as good as a native app.  

Responsive web design

Coming back to the problem of screen size and rendering, RWD allows for automatic adjustment of screens to fit the device, whether it is a smartphone, tablet or lap/desktop. This web based tech is a vast improvement from needing two URLs, one for desktop and one for mobile viewing.

Cross Platform App Development Frameworks

Trying to solve the problem of repeatedly writing the same code for different platforms is the goal here, and there are some heavyweights offering their open source solutions.

React Native

Backed by Meta, this is one of the most popular frameworks available, mainly because it uses Javascript, a choice of many developers. It’s been around since 2015 and has a large array of libraries and tools, but testing time is long and it’s hard to debug.

Xamarin

This framework, recently renamed MAUI (multiform app user interface) started out in 2011, using C# as its main language. Bought by Microsoft in 2016, it remains in the top ten list of frameworks as it is pretty good for code reuse, but still shows some bugs and the support is not great.

Flutter

Another heavyweight joins the fray, this time it’s Google with their offering of Flutter, released in 2018. Completely different from the others, Flutter uses ‘widgets’ and the Dart language. It has its own rendering engines making it super quick, but some devs question the usefulness of the language, asking if it is necessary to learn a new one. 

With Google’s new(ish) operating system, Fuchsia, maybe it will be.

Ionic

Based on standard web tech like HTML, CSS and JS, it touts itself as very developer friendly and the finished product looks very similar to a native user interface, but it is a hybrid and does not have clear access to native features like the camera or GPS. It also lacks the hot reload feature, available in Flutter and React Native.

Which one is best?

I’m pretty sure that developers will stand up for their own favourite, much like sports supporters, and proclaim that their choice is the best.

Although it’s young, Flutter has already taken the top spot (Statistica 2021), and will probably only get better.

From our perspective?

At iteo, we have a great team of 23 Flutter developers who are wildly enthusiastic in their support of the framework. Pawel, a Flutter dev who features on another podcasteo, says that once you have Dart under your belt, the rest is like Lego, quickly building a mobile app that looks stunning and does exactly what it’s supposed to do.

  

Share