In my recent post, A Mobile Web Strategy, I covered some of the architectural decisions that go into build a mobile website. I glazed over the process of choosing whether to a mobile web application or build a native application. I wanted to cover the other topic first since it tends to be less controversial. The debate on mobile web vs. native application is one the incites passion in most developers. It is my intent to take an objective stance during this post. I will save my opinion until the end.
A native application is an application that runs directly on the hardware of the device and not in the device’s web browser. These applications are usually delivered and updated from an app store. Here are some pros and cons of building native applications.
- Native applications are able to access all the hardware sensors on the device.
- Native applications can work offline and may not need a connection. Data can be cached locally.
- You can usually get better performance out of native applications since they run closer to the hardware. This tends to provide better user experience.
- Most platforms offer native applications the ability to perform tasks in the background, even when the application is not running.
- Native applications can be more readily monetized. Most stores offer infrastructure for handling purchasing transactions (for a cut of the cost).
- Changes to the application require redeployment of the applications but most stores handle this gracefully.
- The application certification process can take time for you deployment.
- Native development requires developers skilled for working with the different platforms. Depending on how many platforms you need to target this may require many different skill set.
Mobile Web Applications
Mobile web applications are web applications that have been optimized for mobile devices. These applications may be smaller versions of their desktop equivalents or completely different applications that provide functionality that makes sense for mobile devices (i.e. consider data bandwidth, power consumption and usability on a small form factor).
- Broader pool of developers – most web developers are able to shift to mobile web development with minimal learning curve.
- Plethora of open source frameworks to help speed up development.
- Mobile web applications are able to be modified without having to release to a web store – all user access the latest build without having to manually update the application.
- Runs on most platforms, including non-smartphone devices.
- You are limited with which device sensors you can access.
- Very limited offline/background processing (requires HTML5 at a minimum).
- You are responsible for implementing monetization infrastructure.
My Two Cents
The are just some of the things to consider when creating your mobile strategy. My preference is building native applications but I am not against mobile web development either. The situation should dictate which approach you should take. Don’t build a native app just for the sake of building a native app. In the past most smartphone users avoided using the web browser. The experience was not ideal. As more sites are redesigned with mobile in mind this is steadily changing. So it is up to you to build out compelling applications that makes the user want to come back.
One of my pet peeves is when a native application is a shell for web content. There is no value add except that it gets you in the app store and provides you a way to update your application with deploying a new version. In my experience these type of applications lack in user experience. They just don’t perform as well as pure native applications. The opposite is true too. Don’t make me install you native application when I visit your site on a mobile device.
No matter which approach you choose you should make sure that you pick the approach that best suite your needs. Build out a compelling solution so that users want to use your application. As I noted in the last post, A Mobile Web Strategy, consolidate as much functionality as you can behind a service layer. This allows you the most functionality in making your choice.