Today, Facebook finally released an update to their iOS app, making it native. With that, they brought to an end the largest test-case for web views in native wrappers. I would say it was an astonishing failure. Facebook admitted as much in their post about the new app.

Facebook says that iOS users expected a "fast, reliable experience", and their app was "falling short". If an app isn't fast and isn't reliable, why would anyone use it? My friend Daniel is a great example, saying he preferred using the mobile website in Safari, because it was faster than the app. All of these assertions are true. I used the app on my iPad, because I didn't like having the facebook cookie in my browser. This provided me with a consistently terrible experience, and left me wanting to use the service less.

The new app released today is miles ahead of the previous app. The look is better. The scrolling is smoother. The app isn't completely useless without a network connection. I do still have some gripes though. For instance, when your news feed updates, it doesn't add to the top of the list, it resets the whole view and moves you to the top, losing your place. Bad design.

By extrapolating what Facebook has done, developers can see that native is inherently better than a web view. Not only is the app significantly faster, but it looks better. The app can do things a web view never could, like have sensible navigation. This is coming from a major company that can afford to spend the time to improve the web views. Facebook abandoned the idea because it wasn't tenable.

Web views don't make sense as replacements for native apps, because they don't provide the experience users are looking for. You can always fake it with Javascript. I've used Sencha Touch, and it gets incredibly close, but you don't get the fine grained control. You can't emulate things perfectly. Everything is just slightly off. Edging into the uncanny valley. Not to mention the gross performance issues.

Javascript is slow. It always will be. I don't care how fast v8 engine gets, it will never be as fast as native, compiled code. Javascript relies on a parser to convert to machine code. That conversion takes time, while compiled code runs straight through the processor. These performance issues will dog developers forever. They're even a problem on desktops, so why wouldn't they cause trouble on lower powered mobile devices.

A web view will never be as good as a native view. Facebook has proven that. It's time for developers to stop fooling themselves, so that we can stop fooling consumers. A web view in a native wrapper is false advertising. The consumer isn't getting a native app, so stop packaging your webpage like one.

AuthorMichael Cantrell