Does your Facebook mobile app suck? Here’s why

For the past year or so, I’ve noticed that my Facebook mobile apps have slowed down with each screen tap. I used to tap the screen and see the latest posts or photos fairly quickly. Now I see the “Loading” message more than anything else. Even worse: I’m constantly pulling the screen down to refresh the data, even when tapping a Facebook notification takes me to a supposedly updated post. I’m not sure when that behavior started, but it’s quite annoying and happens on both my Android and iOS devices.

I long suspected these problems had much to do with Facebook’s use of various Web technologies, since much of the mobile platform was built with web standards and technologies such as HTML5, surrounded by a native wrapper for Android or iOS. But I’m not a developer, so I couldn’t be sure. Now I am, thanks to Dirk de Kok’s detailed post at Mobtest, which tests mobile applications.

The gist of the problem, at least for iOS (and likely for Android as well, at least partially) is two-fold. One problem concerns HTML use with UIWebViews but without support for Nitro, which is Apple’s JavaScript engine. The second happens because the app makes different data calls for similar, but out-of-sync information. Here’s a pair of excerpts to explain:

“For a starter, caching of unchanged content cannot be controlled by the developer. The FB app downloads the whole timeline HTML every time, and it is up to the UIWebView to determine whether it needs to download images, stylesheets etc again…. Also, to communicate from the UIWebView to the native app, a Javascript bridge is needed. This is tricky stuff, slow and not really thread safe.”

“For notifications, messages and friend requests regular REST calls are done, returning XML data. First check is to see what number of new notifications are there, then the actual content is retrieved in a separate call. As far as I can tell, the Facebook service calls return inconsistent information. When you check too fast what new notifications are awaiting you, you don’t get the new information.”

I recommend reading de Kok’s entire analysis because he explains in further detail how all these moving parts are working together in a less than optimal way, illustrating the exact behaviors I’ve seen in the Facebook mobile app. I think it’s great that Facebook is adding new features and improvements on a regular basis and I understand that by using Web technologies, it can make these changes on the server side; you don’t have to update your Facebook app as a result.

But for the time being, I’m going to switch to m.facebook.com in my smartphone browser. I did some testing this afternoon and the experience is far faster, up to date and generally offers the same features as the native mobile app.