When our clients engage with us to develop a mobile app, we are commonly asked if cross platform development is a good option to reduce development costs.
What is a native app?
An app developed specifically for a single platform. To support both iOS and Android, two separate apps are developed. Functionality and appearance will largely be the same for both platforms, although tailored to each.
What is a cross platform app?
An app developed to target multiple platforms, with the goal of "write once, run anywhere" - sharing as much code as possible between platforms. Cross platform apps can be split up into two categories, web-based and hybrid.
Web-based cross platform apps are web apps wrapped up into a mobile app, with some access to the device's features (GPS, camera, accelerometer). The user interface is often exactly the same between platforms. They typically perform poorly, with slow/choppy scrolling and animations, but can be appropriate for quick throwaway prototypes.
Hybrid cross platform apps allow a common language to be used between platforms, which can abstract native components. User interfaces feel the same as native apps, with generally little performance difference, but customisation can be limited.
So why invest twice the effort when you can develop a single app that runs on both platforms?
Developing two native apps is not double the effort
A common misconception is that developing a native app for both platforms will require twice the effort of developing a single cross platform app. This is generally not the case beyond very simple apps. If a single platform is focused on first, where the bulk of user testing and feedback implementation is performed, developing the app on the second platform can be much quicker. At this point, the requirements are frozen and most technical problems have been solved - the first platform can be used as a strong reference point from which assets, knowledge and structure can be ported across to the second platform.
Most modern apps will have a cloud component, running software and a database on remote servers to support user accounts, data synchronisation, social features, and providing content/data. Depending on the complexity, the cloud component can be a large part of the development effort. This effort is not duplicated when developing for a second platform, which can significantly reduce the percentage difference in the overall cost of native vs cross platform.
Lack of open source libraries increases effort required
There are many native open source libraries available, which can substantially reduce development time. For hybrid cross platform tools, the choice can be quite restricted due to the relative size of the ecosystem, meaning that more time has to be spent developing extra components or finding ways to integrate them.
User interfaces differ between platforms
It can be challenging to meet the user interface guidelines for each platform with a cross platform app, especially if the user interface code is shared between platforms. Users have come to expect that the user interface and experience is consistent between apps on the same platform - web-based apps just don't cut it. There is also the issue of having your app rejected when submitted to the App Store for not following guidelines.
As hybrid apps use native components, this can be less of an issue. However, if using a single codebase for the user interface, customisation is limited, which can leave apps feeling bland. The time spent tweaking the abstracted user interface on different platforms means that the time is far from halved. Some tools, such as Xamarin, allow the user interface to be written natively for each platform, which is great but can take away the time saving benefits of cross platform.
The user interface is the bulk of app development
As apps grow in complexity, they offload more and more business logic to the cloud. The majority of the app development effort then goes into the user interface.
If the user interface has to be written twice, to effectively meet design guidelines for each platform, it is not worth the sacrifices that come with cross platform development to share the relatively small amount of business logic between platforms.
Up-front cost is not the full story
When making any business investment, such as developing a mobile app, it is important to remember that achieving the lowest cost is not necessarily the goal - achieving the highest return on investment is. If you knew from the outset that you could spend £10,000 and not be able to make a return, or that you could spend £15,000 and make a profit, the choice would be obvious.
Future developments will also be restricted to the limitations of the cross platform tool. Having to throw away the cross platform version and move to native development can be a costly endeavour.
Use evolutionary prototypes on a single platform
Cross platform development is commonly used for prototyping MVPs. It is often considered better to develop a native app on a single platform as an evolutionary prototype, rather than a throwaway one. This means that the initial effort is not wasted and there is no compromise on quality.
You are at the mercy of third parties
Android or iOS updates can throw a spanner in the works, especially for cross platform apps. These updates may break apps completely or partially, which cannot be fixed until the cross platform development tool has been fixed by the vendor. A lot of the big players promise same day "support" of new updates, but this doesn't stop smaller bugs filtering through which may only affect some apps.
Beating the competition is crucial
Successful competitors most likely have high quality apps, leading to higher user acquisition and retention. A clunky web-based cross platform app often cannot compete in today's market where users are increasingly spoiled for choice.
A web app may be a better option
Rather than going down the cross platform route, in an attempt to save on costs, a web app should be considered. This has the additional benefits of increased market reach by supporting customers computers and laptops, in addition to mobile devices, as well as improved discoverability through SEO by having content indexed by search engines.
Cross platform apps do have their place
As long as the limitations of cross platform development are understood and are an acceptable risk, they are definitely an option. The most appropriate use cases tend to be for internal business apps, where the user interface doesn't need to be too fancy, which will not be publicly available on the stores.
We would never recommend a web-based cross platform app, but a hybrid one - using tools such as Xamarin or React Native.