In order to use my apps, I have to have Internet. But why ? When I open Uber, the Android app that’s been downloaded over 100,000,000 times, and don’t have internet, I get an error message “No Internet Connection”! Don’t the developers who created Uber ever need a ride when there’s no internet? Why can’t I at least access the menu, my history, or the help page?
Most of Uber’s features are only accessible when there’s internet. This limits interest in the app, because many people are unable to organize pickups in certain locations. In this sense, even though Uber is a great app, the user experience is pretty negative when it comes to adaptability. Users can easily understand that ordering a vehicle is a feature that’s only available with internet, but why totally block access to the app, why not at least enable access to the Uber environment?
Imagine the way we live with apps being applied to the way we live the rest of our lives. How would we deal with a car breaking down on the side of the road for example? The apps online/offline system would be the equivalent to my car blocking all access, not allowing me to open the trunk that holds the spare tire. Or if I were to exit the vehicle, the car would block me from getting back in to sit down, listen to the radio, or consult the guidebook in the glove compartment. This would be an absurd scenario, and one we wouldn’t put up with for long. So why don’t we ask more of our apps?
Many users around the world are without stable internet access on their smartphone, either because in many regions of the world, buying 3G/4G data is too expensive, or because they are momentarily caught in zones without coverage. We speak of the “Next 4 Billion” that are without internet access in emerging countries. Why deprive this audience from at least discovering some features of an app?
With a few simple tweaks, the user experience can be radically transformed, and allow developers to reach a new market, that represents a whopping 80% of users!
Features that can be made to work offline
When your app starts for the first time, there are generally a few introductory screens : the tutorial, the guide, etc…All content for these pages can be static and made to be accessible without internet connection. This way, a new user would be able to enter the App and get an idea of it’s environment, without consuming any data.
To create an account or to connect with your username, of course, Internet is needed But rather than have a popup error message displaying “No Internet Connection”, you can plan for a more welcoming experience for your users: an invite mode, or a demo mode that will work using data that’s already been stored in the app. Here again, the goal is to avoid frustration, and keep the user interested. Once the user has taken the time to download your app, and to launch it, you likely only have one chance to convince them. Don’t risk preventing them from trying it out, at the moment that they’ve chosen to take a look, even if at that moment, they happen to be offline.
Any app that needs to get information from the internet, when launched in offline mode, should be able to access at least some of that information, with an indication somewhere of the age of the data retreived. With the Uber app for example, I should be able to access my billing information, my route history, or even where I was when my card was last charged.
Tips and Tricks
When we speak of offline mode, or not having internet, we think of the cache mechanism. It’s a simple and effective method. The data can be saved within the app, or stocked in persistent memory to be reused when the app is launched in offline mode. But it’s important to also think of the flow, and reconsider how it can be disassociated from it’s mode. Whether or not the app is working with or without internet, the question should always be, “is this a good flow?” .
The display of content in a “view” cannot be blocked while waiting for a a response from an http request. A module that manages the content according to the level of connectivity needs to be introduced, without blocking anything from view. This module will retrieve the internet data when it’s possible, and otherwise, will retrieve the data that is already stored in a database from a previous session. The view then becomes always available, even without internet, with the eventual message indicating that the data has not been updated. Your new user, or occasional user, can then see the results, understand the app, or find the the results of a previous request, even if at the moment when they choose to use the app, there is no internet.
Rather than testing every time whether there is internet, first identify the functionalities that only use the data already stored in the app, or the data that can be cached.
Examples of Apps that work offline
Here are a few apps that do a good job of making their best features available offline.
- Evernote lets you enter a note, create a notebook, or calendar appointment without internet.
- Google Translate lets you opt to download a language, so that you can translate even offline
- Wikipedia lets you save your articles to consult when offline
Be-Bound, the answer to all your problems?
To go a step further, and get your app truly working with or without internet, with even more functionalities, you can integrate Be-Bound’s N4B SDK. Sign up here to use the beta version or hear about the official release.