Picking Mobile App Development platform

According to comScore’s 2018 Global Digital Future in Focus report mobile apps account for 80% of the time users are engaged with their mobile devices.

Companies create mobile apps for a number of reasons, including:
Brand visibility – having the app on the mobile device constantly reminds users about the brand/service/product.
Direct Marketing channel – with functionality like push notifications, an app is an excellent direct marketing delivery channel.
Improved engagement by tapping into built-in communication capabilities of the mobile device e.g. voice-calling, text messages etc.
Loyalty programs

Let’s review the technologies available today for building engaging mobile applications.

Mobile Web App

A mobile Progressive-Web App (PWA) might be one of the easiest ways to build the app. A PWA feels like a native mobile app, gets displayed on the homepage and in the app drawer, able to receive push notifications and integrate into system settings. Progressive Web Apps are required to support the offline-mode – work when there is no internet connection. PWAs also offer a one-click installation, right from the hosting website.

Browser support for PWAs varies, with Safari lagging behind Chrome and Firefox. PWA is also unable to get access to some of the device’s capabilities available to standard native apps. Complex PWAs with many screens might exhibit poor performance on mobile devices.

Twitter has adopted PWA technology to improve the engagement and reduce the bandwidth usage by its users. The outcome was a significant improvement:

  • 75% increase in Tweets sent,
  • 65% increase in pages per session,
  • 20% decrease in bounce rate,
  • Reduced data consumption by as much as 70%.

Market leaders, including Alibaba, Forbes and Pinterest deployed PWAs with amazing results.

Native

Native apps provide developers with complete control over the user experience. A native app is theoretically capable of the best performance possible, yet in practice, platform limitations are often less of a problem than poor app development choices made by the software programmers.

Native programming languages – Kotlin (and formerly Java) on Android and Swift (and Objective-C) on iOS are typed languages. Being able to write code in language enforcing type-safety at compile-time makes the code easier to maintain.

Building a native app involves developing two separate projects – one for Android and one for iOS versions of the app. Usually, the level of code-sharing between native iOS and Android versions of the same app is low or none.

Low-Code

A low-code development platform (LCDP) is software that provides an environment to create application software through graphical user interfaces and configuration instead of traditional computer programming.
There are hundreds of companies offering low-code platforms, often packaged as SaaS solutions, with the pitch being roughly: why spend hundreds of thousands of dollars to develop the app from scratch when we have all the pieces already prebuild and give you for 1%, 5% or 10% of the cost? The question indeed makes sense. At the same time, we could ourselves ask another question: why are companies like Apple, Google, Uber, AirBNB employ thousands of programmers working on mobile apps instead of using LCDP?

To answer the question, I want to cover a similar subject in a niche unrelated to mobile app development – business software systems. There are multi-billion dollar companies that use SaaS CRM tools, with the leader in that niche being of course Salesforce. Yet, there are other larger and smaller companies, using CRM and ERP platforms like Microsoft Dynamics and/or SAP. Those organizations, in addition to paying for the platform, must hire programmers to customize the base software, spending orders of magnitude more than an off-the-shelf SaaS solution would cost. Why do CIOs at these companies with huge IT budgets build custom systems? They build systems specifically tailored to their business-processes because for many organizations changing an optimally running business process is a lot less desirable and more expensive than spending even the same amount on IT to further enhance the business. CIOs watch operational expenses. Sometimes, a custom system, with significantly higher upfront costs, still delivers a much better ROI.

If low-code system works for your particular business need, it is definitely a valid option to consider. In addition to often being less expensive, using a low-code/no-code platform might save a great deal of development time.

In practice, majority of the apps that we use could never be built with a low-code/no-code platform. Low-code would typically be most suitable for entering data into a forms-based interface. For example, if an employee needs to perform work in a hazardous environment, low-code system could be used to make an app that shows the safety rules and asks employees to digitally sign a disclaimer before granting a work-permit. Most mobile low-code systems are essentially documents management platforms adopted for the touch interface.

Cross-Platform

Cross-platform mobile app development is an approach leveraging a single codebase to produce applications for multiple platforms or software environments, instead of having to develop the app multiple times using the respective native technologies for each platform. Cross-platform mobile apps usually cost less to develop. Yet the performance of the cross-platform vary greatly, depending on the platform used to build it. There are specialized cross-platforms environments such as game engines, for example, Unity and Cocos, as well general purpose mobile development platforms such as Flutter, React-Native, and Ionic.

Flutter

Flutter is a new open source cross-platform development platform made by Google. Flutter does not use native OS widgets, instead implementing inside extensible Flutter libraries. This design has been successfully employed for a long-time by game engines. In fact, there are plenty of mobile apps built on game engines, when the actual end-user app is not a game at all. One such an app is the Concepts graphics editor, built on the Cocos-2d game engine. While many cross-platform mobile platforms make apps laggy, game engine -like design allows Flutter apps to show high number of frames per second, exhibiting native-like responsiveness.

Flutter seems to be a great framework, and we are eagerly watching its development and experimenting. Since we first reviewed Flutter, just several months ago, it already evolved with newly released Flutter 1.0 adding in both maturity and platform support.

Just because Flutter is still new and there are not many developers experienced with the Dart programming language, we, in general, would still not recommend Flutter to build a production app. Since Dart does compile to JavaScript and there are teams using Dart for both frontend, as well as backend development, using frameworks such as Aqueduct, there are definitely situations when it already makes sense to start working on Flutter apps.

React-Native

React Native is a framework for build native apps using JavaScript and React has been around since 2015. We had a client engage us on an early React-Native project. We were brought in to help with a project that has fallen badly behind schedule, and ended up participating in the development of an award-winning app.
The CTO of the company that introduced us to React-Native was a believer in the open source JavaScript ecosystem, and technologies such as React.JS, Node.JS. He decided to try early React-Native. Ultimately, the gamble paid off with an amazing native app and a single code-base for both Android and iOS. Since the entire stack is developed using JavaScript, with just a couple of native-modules, any developer is able to study/review and improve almost any part of the platform.

Further, JavaScript is well known among software engineers making scaling the development team easy. React-Native is built on an open source stack. While Facebook, which originally developed both React and React-Native leads the React and React-Native platform development, there is a transparent community process. Since the software is available under liberal licenses, private forks are permitted and some organizations with large React-Native codebases have forked the platform itself. Successfully companies, including Bloomberg, Facebook, Skype, SoundCloud and Uber released customer-facing production React-Native apps used by hundreds of millions of customers, everyday.

Unlike Flutter, React-Native utilizes native/standard platform widgets communicating between JavaScript code and the mobile OS via a special bridge. This makes certain interactions slower, and depending on the complexity of the app, might degrade performance to the point when users experience lagging or an app could get stuck for a second, at times. To address this, React-Native uses a combination of JavaScript code and native modules packaged into components suitable for integrating from JavaScript.

In addition, React and React-Native teams have taken a number of initiatives aimed at improving the overall performance of React and React-Native apps to close the gap on newer platforms such Flutter for mobile and/or Svelte for the web.

Conclusion

If a consumer-facing app does not capture the imagination of a first-time user, it is unlikely to gain traction with that same user in the future. While users of business apps might continue using software with subpar experience due to the lack of choice, ultimately degraded user-experience has been proven to decrease engagement and impact productivity. Our approach is to build great experiences because failing at UX might cause the entire project to fail.

No matter what mobile app platform you will end up using, start building your mobile product by designing the user-interaction experience. To learn how we think new products should be built, please read our building an MVP post.

We specialize in mobile PWAs, native mobile apps and as well as cross-platform mobile apps, with React-Native. If you are unsure what platform to use for your project, fill out our contact form and schedule a free consultation.

More from our blog

See all posts