Native versus Web - which approach is best for mobile apps?
Introduction
The question of whether to run applications on individual end-user devices or to centralize them on a server has been around since the early days of computing. Microsoft succeeded in taking one round: the Windows operating system and the ecosystem surrounding it were a clear victory for individual, local applications. Nowadays, centralized solutions seem to be undergoing a revival, with faster network connections, more versatile web technologies and the efforts of pioneers like Google.
The same trend can also be seen within mobile applications. So far, native solutions have been dominating the field - and they still do. But as mobile browsers are improving all the time and new web standards like HTML5 offer more capabilities, the field is still open. Many professionals are betting on web-based applications becoming a major trend in the long term, whereas the popularity native applications is expected to peak in the next couple of years.
Web and Native approaches
The biggest advantage with the web-based approach is that the majority of mobile platforms can be supported with just one implementation. Also, a web application provided by a web server is a lot easier to maintain when compared with a native app. However, it must be noted that there is still some variation in the implementations of different web browsers and that may make it challenging to ensure a consistent user experience for all platforms and device types. Mobile web applications are also known to suffer from performance problems. This is particularly true for the more complex ones handling long, scrolling lists, smooth page transitions and heavy backend processing. The user experience is very important nowadays, as the new generation of consumers expects great usability and a stylish look and-feel.
Native applications are created on top of native application programming interfaces provided by a specific platform. In the world of mobile devices, there are a great number of different platforms; iOS, Android, Symbian and Windows Phone 7 just to list a few. No application provider has enough resources to support all of the end-user devices out there and, typically, this means analyzing the target user group and then selecting a subset of platforms to support.
As illustrated in figure 1, with the native approach you can access almost all of the capabilities of the mobile device. Also, with the native approach you can get the best possible performance from the device’s CPU. Putting these together, you can achieve the best possible user experience and access all available features.
Figure 1: Supported features – Native versus Web
|
Mobile device feature |
Web |
Native |
|
Calls |
* | * |
|
Messaging |
* | |
|
Network state, battery indication |
* | |
|
Personal information management (calendar, contacts,...) |
* | |
|
Application storage |
* | * |
|
File system |
* | |
|
Media playback |
* | * |
|
Media recording |
* | |
|
Graphic canvas |
* | * |
|
HW acceleration for more complex graphics |
* | |
|
Gestures, drag & drop |
* | * |
|
Notifications |
* | |
|
Geo locations |
* | * |
|
Sensors (accelerometer, proximity, illumination,...) |
* | |
|
Background processing |
* |
Which one to choose?
Firstly, even though the web-based approach may seem an attractive choice in theory, the fact is that neither mobile browsers nor HTML5 standards are ready to provide the ultimate user experience for applications needing hard data processing or certain features of the mobile device. These factors ensure that a native application is preferable. In many cases, it is the only viable choice – particularly in terms of the user experience – for most mobile apps available today. The real benefits of HTML5 may still take years to be realized.
However, if you do need to support many different platforms on a limited budget, and if the user interface is not too complex, then the web approach may be the preferred option. This may also be true if your application is part of an existing, web-centric solution. The web based approach should be also considered if you can see a need for your application to change often, in small increments. Furthermore, if you want to avoid Apple’s App Store, a web app is your only option.
One option that has not yet been mentioned is to take the best of both worlds: native wrapper apps could be used to include web apps in market places, accessing device-native capabilities and handling heavy CPU usage. The web part of the app could provide simple portable UI that could be reused over different platforms.
Therefore, choosing which approach to use for mobile applications is by no means black and white: the pros and cons must be analyzed carefully case by case. The vast majority of mobile apps are native, and this will continue for the near future. However, history suggests that this will change at some point – probably on many occasions – but no-one can tell for sure whether the next change will take a couple of years or even a decade.
