When Apple and Google first started making apps available on the respective stores, there wasn’t much choice of how you wrote apps for them. For Apple iOS apps, you had to write apps using an unusual language called Objective-C, and for Android you had to use Java.
The first problem with this approach was that you had to essentially write two complete apps using two languages and technologies that could not be more different. This cost a lot of time and money.
The second problem, and a much bigger problem in my opinion, is that you had to maintain and test two full apps. The chances of introducing bugs into your product essentially doubled. Now consider that these days people are using apps on all the following platforms and devices:
That’s potentially 10 different apps! While the native apps allow some reuse of the code and functionality (e.g. iPhone and iPad can share business logic), that’s a lot to develop and maintain.
With cross-platform development, the business logic is written once and shared across native UIs. This means that using a mature cross-platform solution such as Xamarin can deliver true native app functionality, or even a web based platform for simpler apps such as PhoneGap, gives you the following key benefits:
Put simply, the more code you’re writing and maintaining, the greater the chance of bugs appearing in your code. If you’re implementing a complex new screen in an iOS app as well as Android, you’re doubling the chance of bugs that can appear. Factor in trying to get a product to market quickly, you may not discover these bugs until the app has been released and you’re receiving negative public feedback.
Getting a product to market before your competitors can make or a break an app. If iOS users are talking about the latest restaurant finding app and Android users want to get the same but your app isn’t there, they’ll simply start using something else and likely not want to switch later on.
If you go cross-platform, you can get all the platforms you’re targeting into the marketplace faster and at the same time, giving you valuable and free word-of-mouth marketing.
Depending on the app you’re developing, the cost will vary and budgets can quickly blow out when you have to fork out money for a new app for every platform you want to support.
Developing for multiple platforms using the same code means less development hours and consequently less cost.
Very few people (almost zero) develop a perfect product first time. You must listen to your customers’ feedback and iterate to refine and massage your product into what people want to use.
Doing this quickly and efficiently is key. If you have to wait weeks while a new feature is developed you’re going to lose your users. If you can quickly deliver what your users want and to all platforms you’ll keep them engaged and happy.
Having the you app’s core functionality in one place means that as your app matures, if you want to start supporting other platforms, it’s easy to do so. If you find users want a simplified watch app, or they want to also use it their TV, then you can add that platform and make any user interface tweaks that you want. If however you chose to develop natively, this will likely require the development of a brand new app: you have to (potentially) start from scratch again.
Overall, in my opinion the vast majority of apps should be developed cross-platform for all of the reasons above. The tools and technologies that exist today enable real native app functionality such as GPS, Camera, NFC, Fingerprint scanning etc but with one common codebase for all the core business logic. Factoring in how of the fundamental nature of cross-platform development means fewer bugs and greater future flexibility, it really is the way of the future.