Mobile phone use is fairly widespread. While that statement contends for the understatement of the year, it remains a prominent driver of economic growth. As we have mentioned before, smartphone usage accounts for an average of 70% of total online use in many countries. So it is without question that there is a very large market for mobile devices. However, there is one debate that still continues: Should I build a native app (code specific to the device), or a web app (used in mobile browsers)?
To be clear, we aren’t making a judgment as to whether using development tools that leverage Web Technology like Cordova, NativeScript, React Native to build native apps are better than building with native languages. This is a comparison between pure browser apps and native apps.
TLDR; Native App. Why? Well, keep reading...
Ultimately, the most important factor of any product (physical or otherwise) is how well it works. Native applications allow for the highest degree of functionality. They enable developers to make full use of the device interface and reduce the uncertainty about how your design will look to the end-user. Unlike in HTML where a pixel is the difference between an intuitive user flow and a convoluted labyrinth, native code is more robust. This helps the application preserve a familiar look and feel that end-users anticipate and enjoy. As Robbie Abed wrote:
The problem ... is that even the most brilliant user experience architect cannot truly build an app that caters to the two dominant user types: iPhone users and Android users. Their style guidelines are simply too different, oftentimes to the point that from a design perspective any decision becomes a compromise which, on a case-by-case basis, must be weighed against all other strategic and tactical factors.
Of course, there are arguments in favor of web apps as well. Access to device hardware is no longer the sole advantage of native apps now that WebRTC is supported through Chrome on Android and soon with Safari on iOS. However, video live-streaming, in most cases, still demands the full capabilities of native apps as they retain a very large advantage; full mobile API access. That enables the generation of push notifications for alerts such as an incoming call. Any users on a web app would miss the call as there would be no way to signal them. The native API also gives you more control over the media in use. You can choose the codec you want to use such as h.264 high profile, or VP8 for Android. You can modify the application's performance by fine-tuning the resolution and adjust the bitrate on the fly. Thus without implementing native apps, you are not taking full advantage of their usefulness.
Some may argue that users may not download the app if they are away from a wifi connection. However, most people are used to downloading apps and enjoy having the convenience and reliability of an app store. Besides, once downloaded you can use it offline, free to scroll through your home feed wherever you are. Additionally, the access of native API graphics allows for faster performance, a key factor in user satisfaction.
Web apps depend upon everything coming through that internet tether which means they have to render everything making it significantly slower. HTML5 and the DOM method are not and will not be fast enough for adequate mobile performance. As Mozilla developer John Long, argues:
There's no indication the DOM will ever be fast enough, and if it does happen it's lightyears away on mobile. I've seen no technical description of a truly plausible way to make it significantly faster.
It's like an artist having to paint his canvas white for each picture. Isn't it just easier to start with a white one?
However, the strongest argument in favor of web apps is, like everything else, all about time and money. It is a popular claim that web apps are cheaper and faster to produce since they don't require different programming languages. That may be true, but no matter how much is saved, there is a much greater loss when users abandon the use of your services due to poor design. 85% of people are unlikely to do business with a company following a bad mobile experience. Yup, 85%. So yes, you saved money by scrimping on your development team and you saved time by building an inferior product but that's exactly the problem. Your customers don't care about web vs. native apps, they just want it to work.