Mobile Web versus Native Apps

The topic of mobile web versus native apps comes up quite often. The typical scenario is that of a company who already has a web presence and wants to bridge the gap to be more engaging to mobile users. The challenge is then to decide which platform (or platforms) to support.

The company is now left with the decision of native versus mobile web (which includes embedded web implementations such as PhoneGap).

The Argument for Mobile Web

There are 2 scenarios where a mobile web approach is often seen as more appropriate:

  • Multiple platforms need to be supported (iPhone and Android, for example)
  • There is already an existing web platform which can be leveraged in a mobile effort

The mobile web approach also offers several advantages over a native approach.

Possibly the greatest advantage is having a single codebase to maintain. One codebase, one technology stack. This also offers the implicit advantage that a single team of developers would be able to maintain the entire mobile codebase. Even better, web developers can often be skilled up in mobile web development pretty easily making resourcing less of a problem.

Another advantage is the ability to apply updates instantly to all users, even multiple times per day. Facebook engineering manager Dave Fetterman described the approach at f8, Facebook’s developer conference, in 2011:

Being able to write it once today and ship it tomorrow? That is something that Facebook is really good at and that we love doing, and that is at the center of being able to move fast. Move fast has an implicit third clause – move fast, break things, and fix things fast. That is very difficult to do if you have already shipped your binary to Apple or Android and they have to download another version of it.

The technologies involved in building a mobile web experience are also very popular at the moment. HTML5 is a massive buzzword and JavaScript frameworks are numerous – all making the mobile web approach very attractice.

The Argument for Native Support

With all the advances being made in HTML5 and JavaScript you would almost expect native apps to become less popular. But that hasn’t quite been the case.

This month LinkedIn became the latest company to publicly switch from a mobile web to native approach. FaceBook’s switch to a native iOS platform is also well-documented. FaceBook CEO Mark Zuckerberg even went so far as to say the mobile web approach was “one of the biggest mistakes [FaceBook] ever made”.

There are several reasons why I think a native approach is superior and will remain superior for the foreseeable future.

The first and foremost is the user experience. No matter how much effort is made to the contrary, the mobile web experience is simply not nearly as good as the native counterpart. Mobile web applications often try to mimic a native application, but I have found that you will very quickly reach the limits of the technology.

The second reason is platform conventions. Each mobile platform – iOS, Android, BlackBerry, Windows Phone – has it’s own convention in terms of what UI elements (buttons, toolbars, etc) look like how interactions (transitions, popups, etc) work. This is typically what gives each platform it’s unique flavor and while it’s possible to mimic this (to a certain extent) for a specific platform it’s incredibly difficult (or maybe impossible) to do so for multiple platforms. For example, if we try and mimic an iPhone application with our mobile web approach the app will look and feel broken to an Android user.

The bottom line is that a native approach leads to a better user experience. It’s difficult to argue with this.

Asking the Right Questions

There are obviously still scenarios where a mobile web approach makes sense. For example, if you’re reading this blog on your phone you’re doing so on a responsive design. I can think of several websites which are optimized for mobile devices and work very well – Amazon, CNN, Kayak, etc.

There are some good questions to ask when deciding between a mobile web and native approach.

Do we really need to support multiple platforms? This seems like an obvious question, but I’ve been surprised by how many times the answer is no. For example, a client may simply want to be able to showcase the web application on an iPad. If the answer is no, the argument for a native application becomes much stronger.

How important is the offline experience? It’s important here to understand the common connectivity scenario for users – will the app be used on the subway or in areas where there is limited network connectivity? Or will the app only be used in an office setting where a strong wifi connection is always available? The more important the offline experience, the stronger the argument for a native implementation.

When thinking of mobile, think audience first, and determine what’s most valuable: the convenience of the web or the robustness of an app. Happy coding.