Many mobile applications rely on data from the cloud to fully function. Those apps can either depend on network connectivity to retrieve the data users need in real time, keep data cached locally, or utilize a local data store synced with the cloud. Sometimes, not being able to access expected data can cause an application to behave unexpectedly and result in a negative user experience.
The decision as to how data will be accessed in an application is something that requires careful consideration. Depending on the context in which the application is used (remote locations, conference centers, subways, at home, at work, etc.), certain implementations could be better than others when trying to provide the best user experience possible. These options include utilizing live data only (where all data is retrieved as needed), cached data, and offline replicas.
Live Data Only
“Live data only” is the default implementation because it’s the fastest and easiest to get up and running. If the device has a network connection, the application works. If there is no network connection, the application doesn’t work. If the connection is intermittent, some features of the application may work, others may not. Some applications will add error handling and conditions to try to alert the user if a poor network connection is going to cause a bad experience, but this can actually get very difficult to implement due to all the different types of problems that can happen while trying to transfer data to and from the mobile device.
As the user explores the application, the data that is pulled down for each screen is kept on the device, instead of being tossed, as it would be in a live data only design. As the user encounters variable networking situations with intermittent or no connectivity, the application will look to the local cache of data to perform functions and render displays. However, if the user wanders into a part of the application that they haven’t visited recently, then the user experience is subject to the same problems as a Live Data Only design.
Developing and implementing a Cached Data design is more difficult than a live data only design because you are managing and storing data in addition to pulling it from the network. However, with a cached data design, the application still relies on the user’s actions to determine when, what, and how to bring data to the device. This makes the cached data design a relatively straightforward improvement on an existing live data only application.
The third option for managing data is to store an offline replica of the data that the application uses. This tends to take up more space than other options, but often this increase is negligible compared to the storage capacity of the mobile device. The upside is that applications backed by an offline replica of important data provide a user experience that is completely immune to network connectivity problems. This means that the user sees the same performance whether they are next to a wireless router, in a crowded bar, or on an airplane.
Creating a mobile application that uses an offline replica is no simple task, however. “Sync is hard” is a common developer mantra. The mobile development platforms recognize this and are taking steps to make this easier, but often these efforts are very platform-specific. One particular framework that is trying to tackle this in a cross-platform manner is Couchbase Mobile.
Here at Segue, we know through experience that the optimal user experience is often found with an offline replica design, but not everyone’s budget supports this type of functionality. We can help guide your design decision process to ensure you are getting the best mix of features for your mobile application.