Welcome to the era of multi-platforms. The term “Computer” doesn’t apply only to Desktops any more. It doesn’t matter what services your software provides, or whether it is a ‘website’ or an ‘app’, consumers will consume it using multiple platforms.
You need to target multiple platforms in order for your software to be relevant.
We established the fact that you want (and need) to target multiple platforms . This introduces a set of difficult decisions.
- Should you or even can you use a single code base for multiple platforms?
- Will you have to implement the app from scratch foreach platform you target?
- Should you use the same UI in all of the platforms, or to retain the look and feel of each one?
- What type of developers do you need? And how to divide them into teams; according to technology or according to platform?
These are crucial and hard questions that have to be answered before starting a project. Unfortunately, every situation is unique. There isn’t a simple answer for all of them.
There are simple a lot of factors you need to consider before being able to make the right choice.
Let’s explore the options.
Native Mobile Applications
With the Native approach you have to develop a version of the app for each platform, using a platform-specific programming languages and dev tools. For instance, iOS apps are developed in Objective-C or Swift using XCode, Android apps are developed in Java using Android Studio and Windows-Platform apps are developed in C#, VB.Net or C++ using Visual Studio.
With Native apps, you can utilize platform-specific API’s and abilities, while ensuring maximum utilization of OS resources. This is one of the reasons that make Native Applications considerably more performant than other approaches.
Hybrid Mobile Applications
Since the apps are built using regular web stack, you can leverage frameworks such as Angular, React and Vue.js while developing your app.
In addition, you are able to update parts of your app on the fly using a “hot code push” techniques without the need to push updates to the App Store.
Cross Platform Mobile Applications
Apps that are developed using this approach are OS agnostic. They are able to use OS API’s using an abstraction provided for them by the framework. These abstractions are consistent among all of the platforms, which means they can only offer API’s that are common in all of the platforms – the greater common denominator.
In some cases, you are still able to access platform-specific API’s and customizations, such as animations, but in doing so you will add complexity and share less code between platforms.
Progressive Web Apps (PWA)
With the Progressive Web App approach, you will develop websites that are optimized for mobile and that offer experience similar to that of a regular app. These apps run using the browser and do not require installation. This means, Progressive Web Apps do not exist in App Stores.
Since they run on the browser, they can utilize only the API’s that are provided by the browser and can not access OS level API’s.
Despite the fact they are essentially websites, Progressive Web Apps can still run offline. The functionality that will be provided depends on the app and on the services it can provide to the user.
Because they do not exist in App Stores, they will likely be less discoverable by consumers.
In terms of performance, Native apps are the obvious winner. This is due to the fact they do not require any intermediate framework to run (other than the platform’s SDK). In addition, they are able to use platform-specific API’s, granting them the ability to manage resources better.
There isn’t an obvious winner – it is a tie.
- Native Apps – While it is easy for Native Apps to use platform-specific themes, animations and controls, you will have to implement the same functionality for every platform. It is also challenging to keep a consistent UI for your application across platforms.
- Hybrid Apps – While it can be considerably easy to design UI in HTML and JS (for those who are skilled with these technologies), since they are not native controls, they won’t be consistent with the look and feel of the platforms – users will probably notice the difference.
- Cross-Platforms Apps – Since sometimes Platform-specific API’s are necessary to preserve consistency with the look and feel of each platform, like with animations, you might find yourself often deviating from the shared code base to implement customizations that are platform-specific.
- Progressive Web Apps – Since PWAs are basically websites, more often than not it iwill be obvious that they are not regular app.
Organization & Trainings
Native Apps have less advantages. In contrast to the rest of the approaches, developers can’t reuse their skills and expertise between platforms, as each platform is built using different programming languages, frameworks, libraries, tools and technologies.
You might find yourself selecting an approach solely based on the skills of your developers.
Time to Market
Native Apps have less advantages. In contrast to other approaches, the app must be built from scratch for each platform, without the possibility to easily share code base.
Your efforts are multiplied by the number of platforms targeted; Separate code bases, separate teams, and of course, more testing. The same process is repeated each time a new feature is being added.
It is hard to declare a winner. Since the majority of apps are Native Apps, and since they have existed first, there are already a lot of information sources, articles and documentation regarding native app development for each platform out there . That being said, for Hybrid and WPA, both use web technologies, there are arguably a lot more information. The difference relies on information regarding the integration of these technologies with mobile platforms. The same goes for Cross-Platform apps.
Native Apps have more advantages over the rest of the approaches. Each platform provides tooling that were specifically built and design for it, allowing them to be more precise and easy to use on that platform.
While there are great tools and extensions for Hybrid and Cross-Platform development, the experience is still lacking compared to tools for Native Apps. For instance, until recently, the Xamarin tools and extensions for Visual Studio were really hard to configure, and it might be a challenge for beginners to get started using those tools.
Traditionally, there were two main approaches for Mobile Application Development; Native and Hybrid. While Native were best suited for performance, Hybrid apps were easier and faster to develop.
Today, there is a broad spectrum of options, including Cross-Platforms frameworks and Progressive Web Apps.
Since there isn’t one that is best in all situations, when starting a new project, you must choose an approach carefully according to your needs and to your development staff.