Native vs Cross platform mobile apps

This article was written in 2018. Published in 2020.

Harshana Abeyaratne
7 min readSep 20, 2020
Photo by Alvaro Reyes on Unsplash

Global mobile app revenue is expected to hit $190 Billion in 2020. Now more than ever, companies want to take their business mobile. Websites are already turning out to be a thing in past. Given the number of smartphones and tabs and their capabilities, mobile apps have become the new game changers.

When a business want to invest on a mobile app, the first decision they need to make is whether they go native or an alternative way. Something I’ve realized while building mobile apps for last couple of years is, most of small to mid size businesses (even some bigger once) do not invest on native apps anymore.

Why not native ?

Developing mobile apps isn't easy. Unless you want to make apps for one platform (which some does in the beginning), you will need to learn at least two different languages, design patterns and eco systems... You get my point, 2 of everything. Now it’s actually hard and not everyone have time to learn all that in order to make a mobile app. Then you need to handle the maintenance, bug fixes, updates for each and every platform.

On business point of view, Not every business or startup have the luxury to hire native developers (they aren’t cheap) and maintain two or more code bases with the limited funding they have.

At least not in the initial stages. So most of the companies need less expensive, less time consuming way to go to the market faster with apps that work on both major platforms.

Mobile apps with Javascript

Turns out, that way is Javascript. All mobile platforms have an inbuilt javascript engine. So it can compile and run any javascript code.

Frameworks like JQuery mobile, Ionic and Trigger.IO came to light initially which are based on this concept. And the best thing about this is, most of us come from a web development background, can use our existing knowledge to build amazing mobile apps.

Cross Platform apps

Cross platform mobile apps usually compatible with multiple platforms out of the box. So you have to maintain one codebase, much easier to maintain and most of all time and cost effective. It usually cuts the time-to-market in half, which saves a ton of money and allows the business to reach both Android and IOS users at the same time.

This also means going forward, new features will be available to both Android and IOS users same time and product owners will never have to postpone feature releases because the development on one platform is not finished.

Cross platform apps also comes with neat features like CodePush that allows you to push certain updates to your apps directly to users without waiting on play store/app store approvals. Even your users that have older versions of the app can have instant over-the-air updates without them manually updating the app through app store. This brings fantastic value if you know how to use it.

There are two types of cross platform mobile apps. I can’t really tell which is better. It depends on the nature of the app, requirements, design, target user base and various other factors.

1. Hybrid cross platform

Hybrid mobile apps are basically a responsive website that comes with an in-built browser. Resources such as CSS, HTML and some Images are locally saved hence it loads faster than a website. All the resources are actually wrapped in a native application shell using a platform like Cordova or PhoneGap. This wrapper app then renders the HTML inside a webview. It also has access to native features like camera, microphone, contacts and messages which are usually not available for a normal website otherwise.

Now hybrid mobile apps are good for most of the scenarios. If you are in a startup and want to test the market before go all in or if you are just making a simple app for some reason, Hybrid is your best bet.

But it can never match the native performance, native look and feel or the user experience of a *true* native app. You know the ‘webviews’ can only get you so far ;)

Also as the application grow and the views and features get more complex, hybrid mobile apps will take a significant performance hit. Popular way of going to the market with a mobile app is initially start off with a hybrid app. For one that saves lots of time (time = money) and at the end you get IOS and Android apps that works and looks the same. Thats one way. But there is another way. If you want to use one codebase and still want the app to work on both platforms with native like look and feel, you can use a native cross platform approach.

2. Native cross platform

Native apps has a unique language and a technology stack associated with that. Java or Kotlin for Android, C# for windows and Swift or Objective C for IOS are optimized for their respective platforms. Native cross platform approach uses an intermediate language like Javascript to expose a common API on top of the native software development kit (SDK).

React Native, NativeScript, Xamarin and Fuse Tools are some of the native cross platform frameworks that allows you to build apps with native look and feel. In fact most of them actually use native components on SDK under the hood. These frameworks also allows you to use most of the native APIs and tools that are provided by the platform.

While using native components, native cross platform apps share the same business logic across apps. So you basically get the best of both worlds. Native look and feel, lower cost and less time to market. I’ve seen lots of companies choose this path over the years and never look back.

Now Native cross platform apps are far from perfect. There could be some limitations to the cross platform framework that you use. Which sometimes means you won’t be able to meet exact product requirements. Frameworks like React Native allows you to write your own native code to overcome some of these challenges to an extend. Another would be your whole app will depend on the framework. Means if there is a new version of Android or IOS, framework you use needs to support it in order for you to access platform features/fix version specific issues. Most of the time framework upgrades get very messy if you don’t upgrade your frameworks, node modules, pods frequently. So keep that in mind too.

So what should you choose ?

There are certain things that you need to consider when you choose a between native, hybrid cross platform and native cross platform.

1. What kind of app are you building ?

if you are building an app that has just forms and lists, you can choose to go on cross platform path. While hybrid cross platform apps can come in handy for POCs, I’d recommend to go with native cross platform framework for production apps. You get the best of both worlds that way. However if you’re building a complex app that use a lot of native platform APIs, hardware or very graphics/processor intensive, go with Native.

2. Time-to-market

Usually cross platform development is faster than native development initially. Framework you choose will lay out the ground work most of the time, reducing the amount of work that you need to do to get started. If you need a POC, cross platform is ideal as you can build it faster for both platforms. Also going forward new features will go out simultaneously for both Android and IOS.

3. Cost

Building separate teams for Android and IOS is time consuming. And usually they are hard to come by and expensive to hire. At the same time you need 2 different teams to build Android and IOS now, which means more running costs. Cross platform is pretty similar to web development and if you already have web engineers, they will happily work on cross platform apps. Also if you choose cross platform, you will only need one team and they will maintain one codebase. That will cut the costs significantly.

4. User experience

Cross platform apps will never beat the fluidness and responsiveness of a native app. But they can come pretty close. So if fluid 60fps animations, delightful user feedbacks are important to you, stick with native apps.

5. Other benefits

If you have a single page web app, you might be able to reuse some of the logic parts in your cross platform mobile app.

eg: Say you have a web app and a mobile app build with React and React Native. You could share most of the logic parts between these 2 apps. Which will further reduce the development time.

Cross platform apps can take advantage of CodePush. Which means instant updates to users whenever you need them. Need to push an urgent bug fix ? No problem, just push it to the users so they will have it instantly.

Conclusion

Choosing between cross platform and native depends on the product requirements of the app. There are advantages and disadvantages of both.

Cross platform apps will never beat the native apps in terms of user experience and performance. However they will come in handy if you have a tight budget or a tight deadline. Either way I recommend going with native cross platform framework if you choose to go in cross platform path.

Native apps will come on top always except for costs and time to market. You will also have better support for os upgrades and latest features as soon as they are released without any dependency to a framework. You will also be able to support wide range or low-end to high-end devices with different operating system versions.

So thats my 2 cents about native and cross platform mobile apps. Cheers!

--

--