A Few Thoughts on Mobile Strategy
So I’m a mobile guy (with a focus on mobile web). As a mobile guy, I prefer when people make statements that inform the public rather than confuse them. And since there are not enough opinions on the Internet, I figured I would post some thoughts (and these are my thoughts, not those of my employer). The other day an oft-retweeted comment by Mark Zuckerberg came out that needs some serious nuance and most definitely confuses more than it does inform. He said this:
When I’m introspective about the last few years I think the biggest mistake that we made, as a company, is betting too much on HTML5 as opposed to native.
This kinda bugged me and set all sorts of haters off.
Then I saw a link to a much fuller quote, which helps put this statement in a much more informative light:
When I’m introspective about the last few years I think the biggest mistake that we made, as a company, is betting too much on HTML5 as opposed to native… because it just wasn’t there. And it’s not that HTML5 is bad. I’m actually, on long-term, really excited about it. One of the things that’s interesting is we actually have more people on a daily basis using mobile Web Facebook than we have using our iOS or Android apps combined. So mobile Web is a big thing for us.
After I read that, I went to the source of the misinformation, Techcrunch, and watched the whole interview so I could know what was said for sure. The interview of fairly interesting and worth listening to for those into mobile.
So here are some thoughts. Some are related to Zuckerberg’s comments, some are just good things to know.
Mobile web development has some strong advantages but mobile browsers are not as fast as native apps. I do enjoy mobile web development a lot but I’ve seen enough to know that in some cases, native is going to win. In many cases the performance difference will be negligible so you may safely not care. In some cases the performance difference will be easily noticeable. Often you won’t know until you try it.
“Betting too much on HTML5” would have been better stated “betting too much on a native/HTML 5 web hybrid app.” The problem in this equation is not HTML5. The problem is that they were expecting a hybrid app to be as responsive as a pure native app. HTML5 is a set of enhancements to the Html specs and accompanying browser implementations, often not in that order. HTML5 is not a mobile strategy. Poor choice of terminology because it just confuses those who don’t know better.
Hybrid apps can work. I have seen it work. LinkedIn has a hybrid app and it works fine for them. It is all a matter of a) what you use it for and b) how good your implementation is. I’ve heard enough from developers who have looked at their implementation to genuinely wonder if the problem was of their own making. But I haven’t looked, so I can’t say. Regardless, if you don’t know how to make fast mobile web apps, you can bet that your hybrid app will be slow. You can also bet that graphically intensive tasks will be better on native, though often they will be fine in browser. Once again, you never know till you try it.
You need to make a distinction between in-browser mobile web and embedded browser in native shells apps. The performance characteristics of a mobile browser versus a web view in a native shell are different, and mobile browsers are usually the winner. So just because it ends up being fast in mobile Safari doesn’t mean it won’t be clunky and slow in a web view.
If you are a big enough company, if mobile makes sense at all for your company, you should consider hitting both native and mobile web. If you can, being in various app stores and having a mobile web presence is generally going to be the best strategy. Since Android and iPhone are hugely popular, being in their app stores makes sense. It might make sense to be in the Windows Phone store but traffic may not justify the effort. But it also certainly makes sense to have a mobile website, because some people may not know that you have a native app. And you might get kicked out of the app store, so having the mobile website is very important. In the case of Facebook, more users use the mobile website than their native apps. It's hard to deny the importance of the mobile web.
If you are a small company or independent developer, your choice for native versus web is not straightforward. Just building a mobile website will make perfect sense for some. For others, there are ways of taking a web app and bundling it in a native shell for delivery (though note the caveats above). For others, native apps only might be the best route. If you want to go the native route, there are also projects that allow you to write cross-platform native code without losing the native performance. In the case of smaller development teams, it all depends on your situation.
Mobile web development wins in terms of deployment. With a mobile web solution, you can find bugs, fix and deploy in minutes rather than hours or days. This also means you don’t have to ask for permission to launch anything, which can be a huge problem when trying to deploy through the Apple store.
Write once, run anywhere with mobile web. Okay, that’s not actually true. It’s more like, “write once, then spend a lot of time handling browser differences and eventually get to the point of running anywhere.” Depending on what you are doing, this process can be moderately painful to very time consuming. But in most cases (almost all?) it is a lot faster to build cross-platform on the mobile web (assuming you have mad w3b 5k1llz).
There is much more that could be said in all this of course. For those actually doing mobile development, most of this will probably be old hat and rather uncontroversial. But for those who haven't yet, I hope you find it helpful.