By Chris Marra, Emerging Markets Product Manager at Facebook and Alex Sourov, Emerging Markets Engineering Manager at Facebook
People are coming online at a staggering rate in emerging markets and, in most cases, are doing so on mobile via 2G connections. In order to make sure another billion people can connect using Facebook we need to design features of the product that work seamlessly regardless of mobile network and device. What this means for those of us on the News Feed team is making sure people can load and scroll through News Feed on any connection speed. We’ve worked on a few updates recently to improve the experience so it works seamlessly and quickly for people in all parts of the world.
Taking connection speed into account
There are many factors we take into account in News Feed to make sure you’re seeing the most relevant stories for you – even the type of device you’re on or the speed of your mobile network or wifi connection. Taking this into account helps us determine what kinds of stories to show you in News Feed. For example, if you are on a slower internet connection that won’t load videos, News Feed will show you fewer videos and more status updates and links.
In order to simplify the way we distinguish between different types of networks, we developed an open-sourced Network Connection Class (http://www.apo.af/EBSaaf), which is a way for us to determine how fast your connection is. With recent updates, we can now start retrieving more stories and photos while you are reading News Feed on slower connections to make sure stories are always available as you keep scrolling. So if you are reading a post from your friend about their weekend, but doing so on a slower connection, we will load more stories while you’re reading so they are ready for you when you’re done reading that post.
Prioritizing which stories to load
If you are on a poor internet connection and your News Feed is loading slowly, we will first download the story you’re currently looking at, rather than download a series of News Feed stories. For example, if you are looking at a photo your friend posted or a photo from a Page you’ve liked, that isn’t fully downloaded, we prioritize that photo over loading a story below it that you aren’t currently looking at, so you can see the most important photos you’re viewing as quickly as possible.
We’re also investing in the best image formats for photo loading. We recently moved to a Progressive JPEG photo format which allows us to start showing lower-quality versions of photos while they’re still downloading, so you can see some of the photo instead of nothing. This lowers the amount of data required to send photos to be loaded, and speeds up the wait time for photos. We made this change (http://www.apo.af/LoR6QY) for iOS at the beginning of the year and now use the same technology on both iOS and Android.
Showing you stories when on particularly poor connections
Sometimes we are unable to load any new News Feed stories if a connection is particularly congested or poor quality. People have told us that when they visit News Feed they’d rather see stories that may have loaded on a previous visit than not see any stories at all. So now when you leave News Feed and then come back again on a bad connection, we will display previously downloaded stories. You can scroll down and see stories from your previous visit to News Feed until you are able to connect again to a mobile network. For example, if you were to open News Feed on an airplane you’d still be able to read stories you scrolled past previously, when you did have a connection, instead of just waiting for anything to load.
Even though we load stories from previous visits to News Feed, we don’t re-retrieve these stories that you have already seen, so we aren’t wasting more data. However, if something about the story has changed — for example if the number of comments and likes has changed or if the post was deleted — we will make updates when you see the story again.