Thinking Offline by Default

By Spicer Matthews

Most software developers consider an application that runs offline a “phase 2” type of feature. Nowadays the Internet is everywhere, and it’s fast. In most cases only a small percentage of an application’s users lack a decent Internet connection. So rather than focus on the minority, at first we should focus on the majority, right? I say wrong—for a reason that has nothing to do with the speed of your Internet connection.

Recently, we at Cloudmanic Labs adopted a new mandate to build all of our applications—web and mobile—as offline first. Our first nonmobile example of an application that works completely offline is Heapless.

Why this new mandate? Very simply, offline is fast—really fast! Regardless of the speed of your Internet connection, storing your data and the files needed to run an application locally makes the user experience almost instantaneous. Modern browsers are able to prefetch all of the resources needed to run the application in the background using web workers. Which means that as a user goes from page to page or state to state everything is loaded instantly—no waiting for the application to communicate with the server. We use a similar approach to communicate data back to the server in the background to ensure that the user never has to wait.

Our primary goal of offline first is not to support users at 30,000 feet—the objective is making our application crazy fast and responsive. And thinking offline first has the added benefit of supporting our Internet-challenged users as well.

We need to shift our thinking about what offline means. As it applies to how we architect applications the term is misleading—because building offline really means building amazing applications. So how about we change “offline” to “crazy fast”?