On August 23rd Facebook released an updated for their iOS app, claiming the new version was twice as fast. The previous version was a hybrid app: written in HTML 5, but with a native wrapper. The new version was re-written from the ground up in Objective-C.
The reason this was big news (ReadWriteWeb, The Verge, GigaOm, TechCrunch, Guardian to link but a few) was that Facebook has been a big supporter of HTML 5, and the move was seen as them ditching HTML5 in favour of native. Their developer centre has a wealth of HTML5-related document for people wanting to build apps for Facebook. Building their own apps with HTML5 also aligned well with their "write once, deploy everywhere" and continuous deployment strategies.
Back in May, Dirk de Kok wrote about why he thinks the previous version of the app was so slow (mostly about UIWebViews without the Nitro JavaScript engine), but I think that's just part of the story. On the day of the release of the new app, Jonathan Dann wrote a good, detailed, post about the switch (an emphasis on speed, but also about "a focus on digging deep into individual platforms"). A few days later Jason Grigsby of Cloud Four wrote about how the user experience, not the language, was the highest priority ("Apple doesn’t care how much HTML Facebook uses in its app"). Kristofer Layon's comment on that post is right on the money when he tags that as product management:
Clear product management thinking focuses design and development on delivering the most value and best UX to customers, rather than being prematurely disposed toward solutions for technical or political reasons.
What do I think?
They made the right decision for their users. People were unhappy with the app, especially the speed of it, and they produced a solution which solved that problem.
I love the web, so I'm interested in working on projects where the web is the best solution, but I realise that it isn't always. Native apps can offer deeper integration with the OS than HTML5 can at the moment. When a project has a large budget, native is often easier to justify too.
I'm not convinced that native is a long term solution, though: it's not as future friendly as HTML. The power of the web is its ability to flow into so many containers, and that's what draws me to it. The Web doesn't care about OS or Browser or WebView, or if you're checking Twitter on your toaster or Facebook on your fridge.
Word on the street is that this year's SPINJam is about HTML5, so I'm looking forward to discussion / heckling / shouting as necessary!