in Opinion

Design for slow internet connections first

The last few weeks I have been travelling quite a bit. And besides manic roaming costs, hotels charging more for wifi than they do for the room, extremely slow wifi connections in general, there is something else that was bothering my online activities. It was the complete lack of design of most apps for low-bandwidth (or expensive bandwidth) networks.

When something is just becoming unlimited in your own world, it is hard to imagine that it is scarce in somebody’s other world. It is something that is going for a longer period of time which is also shown in the HTTP archive. And I must say it is concerning, since, with easy changes, you can help people to have easy access in places that have a connectivity challenge.

Things you can do right now:

  • Load important stuff first. I have a couple of apps that first load everything (including the screens after the first screen). For Amazon the case is simple. 100ms faster, means 1% more revenue. Your case might be just as simple: if your app is slow, nobody will use it in the end, they will go for a better performing one.
  • Don’t load everything over and over again. Especially not if it is just decoration. Once every session is just enough.
  • Real time is sexy, though is it really important? Do you really need your app to load new content every minute? Probably not. Most apps don’t require real-time updates, and if it requires real-time updates, most likely only for a small part of your app.
  • Caching: this is not easy, however it is crucial to give your application good performance. Spend time on it. Do not only spend time on caching elements in your application, but also pay attention to HTTP response headers when you are using external sources such as APIs to get your data from.
  • Detect the carrier connection (if any), 3G, GPRS, 4G, most often the SDKs for your app provide you with native APIs which you can use to help the user. However keep in mind that wifi doesn’t mean that it is high-speed internet.
  • Use CDNs.¬†Slowness of connection is not only controlled by low bandwidth, but also by high latency. Such services help to reduce the negative effect of latency.

It shouldn’t be too hard to do this. Just don’t assume that everybody has a high-speed internet connection and that bandwidth is unlimited for everybody.