Thinking Offline by Default
By Spicer Matthews
Most software developers consider an application that runs offline a aphase 2a type of feature. Nowadays the Internet is everywhere, and ita's fast. In most cases only a small percentage of an applicationa'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 wronga—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 applicationsa—web and mobilea—as offline first. Our first nonmobile example of an application that works completely offline is Heapless.
Why this new mandate? Very simply, offline is fasta—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 instantlya—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 feeta—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 misleadinga—because building offline really means building amazing applications. So how about we change aofflinea to acrazy fasta?