Once you have an idea for a mobile application, it can be difficult to choose a development platform. There seems to be a never ending list of options, with new ones added daily. Asking around for advice can make the decision more difficult, as everyone tends to have their own preference or bias for using one platform over another.
So, what are my options?
The four most common types of mobile applications are:
- Native - Native applications are developed directly with the SDKs released by the companies that create the target mobile operating systems. Examples include Swift and Objective-C for iOS, and Android/Java and Kotlin for Android.
- Cross-Platform Native - These apps are written in a different development environment than your traditional native application, but are compiled and interact with the native SDKs directly. Examples include Xamarin & Kotlin/Native.
- Progressive Web App (PWA) - Progressive Web Apps are web applications which implement a web app manifest. This allows the application to be downloaded to the phone as an "app" for future use, including offline usage.
They each have their advantages and disadvantages. For instance, cross-platform applications make it easier and quicker to develop an application for multiple OSs by using a single codebase, and native applications handle CPU and graphics intensive tasks better.
What considerations should I take when choosing a platform?
Like most development projects, there are multiple ways to accomplish the end goal. Some questions to ask yourself when trying to make a decision are:
Will my app be CPU or graphics intensive?
Native applications and modules have a distinct advantage here. Since native applications interact directly with the native SDK, they offer the best performance of any of the application types. Cross-Platform apps are always inching closer to native applications in terms of performance, and typically offer the ability to build custom native modules, which interact with the rest of the application. With this, you get the performance benefit of a native application with the flexibility of a hybrid application. This approach does present a few minor drawbacks, however, as it increases the complexity and fragility of the application.
Am I targeting multiple platforms?
Cross-Platform and Progressive Web Apps are designed to ease the burden of creating apps for multiple platforms. In most cases, they allow you to have a single code base that compiles into applications for Android, iOS, Windows Phone, etc. Native apps, on the other hand, typically entail writing the same code multiple times, as each device type requires its own implementation. This results in Cross-Platform and Progressive Web Apps normally being quicker and cheaper to get to market.
What experience does my team have?
A big thing to take into consideration is what your team already knows. If you already have a group of skilled C# developers who have Visual Studio at their disposal, you should take a look at something like Xamarin. However, if all of your team's experience is in web development, you might want to play to your strengths and stick with a Hybrid platform like React Native or Cordova.
How will my app be distributed to end users?
The method which you plan to distribute your application -- whether it be on the App/Play Store, a private app store, or another method entirely -- can also influence what route you go for development. The App Store and Play Store have guidelines your application must follow in order to be accepted for distribution. Native application development tools make it easy to adhere to these standards, whereas Cross-Platform applications require a small bit of work. If you don't intend on utilizing an app store of some kind, Progressive Web Apps may be the right platform for you. In the case of PWAs, users navigate to your website and are provided a prompt to download the PWA to their device.
In the end, there are multiple options which could be considered the "right choice" for your application. Here at ISE we work with you to figure out the important considerations for your application, and help you make a decision which will set you up to be successful.
Are you getting started with creating a mobile app and have questions? Join in the conversation below or contact us to see how we could work together!