Choosing Between Native, React Native, Progressive Web Apps and NoCode
Launching an app is an exciting business endeavour but is also rife with tough decisions; many of which can quickly derail progress and send you into a financial tail spin.
One such decision is the technology or platform on which to build. While there are only really two players for mobile operating systems, iOS and Android, there are an array of choices on how to build upon them. This is a common question from our clients and one we encourage them not to take lightly.
In this article I’ll outline 4 major options with pros and cons of each. By the end, you’ll be ready to make an educated decision about which platform to build your app on.
The 4 mobile platforms
While there are technically more than 4 options out there, these are the leaders from which we choose time and time again. Each offers its own unique benefits (and pitfalls).
Platform specific (aka: Native)
Developing for each OS (operating system) in its native language is of course the most supported and most performant. It’s also the most expensive. This is because you’ll be writing the app in a separate language for each. The two players are iOS (written in Swift or Objective-C) and Android (written in Java or Kotlin). While there are developers that can code in both, you’re much more likely to end up hiring one for each, doubling your overhead. Native apps are the best choice when they have high performance or memory requirements, OS specific libraries not supported elsewhere or games.
👍 Most performant
👍 Best support for leveraging hardware functionality
👎 Most expensive
👍 Majority of code is re-used across both OS’s
👍 Significant cost and time savings
👎 Hard to debug, easy to shoot yourself in the foot
Progressive Web Apps (PWA’s) are exactly what they sound like; apps that work via the web. Instead of installing the app on your phone from the App Store, you can access them via the browser on your phone. This has some significant advantages. The biggest is the ability to use stable and well known web languages with 100% code sharing. There are a few drawbacks however. Most notably you won’t be able to install the app from the app store and offline capabilities are very limited with iOS (Android has full support). We often use PWA’s when timelines and budgets are a concern or when a client is still validating the concept with a basic offering (also known as a MVP).
It should be noted there are ways of wrapping a PWA in a Native “shell” in order to install on the App Store or use hardware functionality. In these cases, we believe using React Native is a better choice than wrapping the PWA.
👍 Works on all devices with a single code base
👍 By far the cheapest
👎 No App Store, limited functionality and offline capabilities
The #NoCode movement is relatively new to the industry and is a way of using other existing tools to “mashup” an app by piecing them together in interesting ways. As the name implies, there is no (or very little) coding involved. Each of the tools you use will have their own monthly licensing fee, which can add up quickly. We like to use NoCode for proof of concepts or when building tools for a client that will be used internally. A good example might be a an inventory tracking system for a shipping and receiving company. More often than not however, these are quickly outgrown and a custom app is developed.
👍 Fastest way to market
👍 New options popping up daily
👎 Monthly licensing can get expensive quickly, outgrown quickly
Where to go from here
When choosing a platform its important to ask a few questions:
- What is your budget?
- What is your timeline?
- Does the app need to work on iOS, Android or both?
- Does the app need offline capabilities?
- Will the app require hardware functionality such as GPS or Bluetooth?
If you have a tight timeline and budget, going with a hybrid approach using React Native or PWA is probably your best bet. If you have a bit of budget, hardware requirements and need it to run on both OS’s, React Native is a good choice. If you have specific hardware requirements not supported by other tools or high performance requirements then Native is basically your only option.
Hopefully after all that you have a better understanding of how to choose the best platform for your app. Its important to remember that, regardless of what you choose, you can always change it later. Yes sometimes that can be more expensive, but not launching at all or choosing the wrong platform to start will stop you before you even get started.