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.
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 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.
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 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 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.
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.
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.