Facebook has rebuilt its iPhone app, optimising for speed
Facebook's ultra-slow iPhone app is to be replaced with a high speed native version, according to columnist @NickBilton for The New York Times.
It's not official yet, but two Facebook engineers have anonymously revealed that the app has been rebuilt using Objective-C and will be unveiled later this year. The current version is essentially a web browser inside a native container, and it's very, very slow.
Jeffrey Zeldman told us he welcomes the news: "Given their apparent strategy of delivering app-like behavior in mobile rather than providing quick access to a user's friends' content, the decision to switch to native is long overdue. If they had chosen to focus on providing faster access to *content* (rather than providing slick app-like behavior), they could have stayed with standard web technologies. The goal determined the technology choice.
"If I were advising them on these decisions, I would have had them look at what people actually WANT from Facebook – fast access to their friends' photos and posts – and I could have helped them design an HTML5 web experience that actually works for mobile."
Facebook has been floundering in the mobile space, and Zeldman reckons this is a big step towards rectifying things: "They needed to do something – change strategy or change technology – because the Facebook mobile experience on iPhone has been a dog. Half Facebook's business takes place on mobile. More would take place on mobile if the FB mobile experience on iPhone wasn't a complete disaster.
"Mobile is key for Facebook's (and everyone's) growth and health, and they've been sucking at it. They bought mighty Gowalla but they still sucked at mobile. They bought amazing Instagram but they still sucked at mobile.
"The sucking was not a design problem, not a UX problem. It was a CODE problem. Switching to native technology makes sense since they are determined to recreate as much as possible of the desktop experience on our phones. It makes sense because sticking a non-optimised, script-heavy website inside an Apple wrapper – their current strategy – doesn't work. It only frustrates people who are trying to use Facebook.
"I'm glad they're switching – as a user I look forward to finally being able to use Facebook on my iPhone again. I haven't been able to do so since they updated the mobile experience to match the Timeline. As a designer and user advocate, I wish they had thought more about what users actually love about Facebook – the ability to connect quickly with friends and family – and chosen to optimise for content, rather than treating technology as the problem."
Nathan Smith of projekt202 used the following analogy to explain why Facebook's approach to building their app hasn't worked:
"Let's say you are preparing to embark on a trip from Europe to the New World (by ship, because this is before airplane, ok?). You want to make sure you can eat your favorite type of dessert when you get there. To do so, you would not bake 10,000 pies before departure, because it would take up valuable cargo space. Instead, you would take only what you needed for the trip, and have a recipe on-hand. Upon arrival, you would then have a templated approach to making more pies.
"The way one should be handling network traffic for an iPhone (or any mobile) app is to retrieve only the data that is unique. So, rather than sending HTML/CSS/JS down the wire to your embedded mobile app, all of that should be bundled with the app itself.
"Instead, you should be sending and/or receiving JSON that has things like username, birthdate, etc. Any UI code that an app has to download equates to bytes that could've been shipped once, not multiple times, with the app itself (via app installation).
"So really, the debate isn't so much about "HTML5 versus native," because HTML5 isn't inherently slow. It's more about this: Regardless of your app's format, are you optimizing your app as much as possible? If the answer is "no," there's room for improvement."
You can read his tutorial on using Handlebars.js to build a lightweight embedded HTML5 app here.
Smith also pointed out that "LinkedIn recently relaunched their iPad app, to much acclaim, and 95% of it is HTML5."