Facebook AJAXifies all their navigation


Today I was stunned to see that Facebook has begun loading all their pages over AJAX, very much like what they were previously doing on their iPhone frontend.

Basically, the trick is to use URLs like:

http://www.facebook.com/home.php\#/profile.php?id=665788844

and never move away from “home.php”, always change the signet part only.

I think Joe Hewitt has much to do in this update because he’s the creator of the Facebook iPhone frontend, which can be considered as a closed-source fork of iUI. For those who don’t know him, he was hired to Facebook when they bought his stealth startup Parakey, and he’s also the creator of the almighty Firebug. So he’s the kind of guy who gets it right when it comes to browser stuff ;-)

I think the main reason of that change is the Chat function which was added to Facebook a couple of weeks ago. I was amazed at how they managed to reload it at each pageview and still provide a “good enough” chat experience. Still, like many others, I noticed a few issues and my guess is that they decided to solve them once and for all by avoiding to reload the page constantly, just like Gmail.

Are we at the dawn of a standardization of this kind of navigation paradigm? It sure looks so. Its advantages compared to the “regular” way are worth the added complexity if you’re big enough.

Another detail worth mentioning here is that the Facebook implementation is quite neat, as all the links to “regular” pages like www.facebook.com/notifications.php are still valid but as they use progressive enhancement, they just can turn on the advanced navigation feature at any time on the client side, and take you to www.facebook.com/home.php\#/notifications.php instead.

So congrats to the Facebook team for this update, they must have begun preparing it a long time ago… What’s next?