Lots of reaction this week to Zuckerberg’s statement during TechCrunch Disrupt that investing in HTML5 was “one of the biggest mistakes if not the biggest strategic mistake that we made.”
facebook used HTML5 technology in a really smart way in their iOS app by essentially iFrame’ing a version of the their mobile website inside an iOS app shell using something called a UIWebView.
This allowed them to fix bugs, push updates, or even make major UI changes without needing to push out a new version of the app through the App Store. Everything happened on the server side and was available in the app right away.
Dirk de Kok has a fantastic writeup about how this was actually implemented. Problem was it was horribly slow… Dirk explains why that particular architecture choice caused caused the facebook iOS app to perform so badly.
Facebook recently released an all new native iOS application, and guess what? It’s faster. Why? Because it’s a fully native app written in Objective-C.
The promise of HTML5 is very much like what we heard years ago with Java: write once, run everywhere. Unfortunately, it can also be: write once, suck everywhere.
I completely understand why you would want to abstract out core pieces of an application and reuse it across platforms. It doesn’t seem like that’s gonna cut it if you want to build a best-in-class application for each platform. If you want the best performance, you’re gonna have to go native on the platforms that matter most to you.
There’s nothing wrong with HTML5, facebook was just holding it wrong!