There are a lot of great reasons to build a mobile Web app just as there are a lot of great reasons to build any Web app and I’m certainly not here to continue the great Web versus native app debate. It’s not native versus Web, it’s both and it depends on your situation.
But what I’m here to talk about are the pretenders. Pretenders are mobile Web apps that try to replicate the native experience. You’ve no doubt seen Web apps with iPhone-style back buttons, awkward attempts at implementing gestures, laggy scrolling and the like.
Pretenders have problems
They don’t meet user expectations
Users of pretender apps get an experience that falls squarely in the uncanny valley — it looks like a native app, but something isn’t quite right. Perhaps it doesn’t respond as expected or it doesn’t quite follow the conventions of a native app. Often pretender apps have both of these problems and then some. They simply don’t feel “at home”.
They are a huge drain on development resources
Development teams can spend countless hours trying to make the Web act native. How many times have you heard that HTML5 is “almost there” in providing a native-equivalent experience? But the gap between “almost there” and “all there” is significant and may never be closed. Just imagine how many hours have been spent trying to improve the performance of scrolling lists. It’s fine to tackle these problems as part of an open source project, but if you’re attempting to solve these problems in your product you are consuming valuable time that could be spent making your product better!
Embrace the Web
If you’ve decided to deliver your app via the Web, you should embrace the capabilities and constraints of the Web. Don’t spend time and resources making a pretender app, spend that time making a great app that works on the Web.
Bagcheck offers a good example of a mobile Web app that embraces the Web. Instead of using floating headers and footers in an attempt to replicate a native app, the page scrolls like any other Web page. A simple anchor link is employed to allow users to quickly jump to the bottom of the page where a set of menu options appears. Because Bagcheck doesn’t pretend to be native, performance is great and the app offers up a mobile-optimized UI that meets user expectations. In other words it acts like what it is — a website.
If you’re making a Web app, don’t pretend to be something you’re not. If you do, your users will notice right away and it will turn them off. Besides, it’s a lot of work doing all that pretending. It’s far easier to embrace the Web’s constraints and capabilities and doing so will result in a much better product.
- This article was featured on Daring Fireball. Check out what Jon Gruber has to say on the subject.
- John Allsopp wrote an interesting piece partly inspired by this post, partly a counter-point to this post. See John’s original post and my response.
- iOS5 Brings Native-Style Scrolling to Web Apps by ReadWriteWeb
- How to fail at mobile web by @sunpig