On my daily commute to the GigaOM office, I spend 10-30 minutes offline, depending on the whims of the San Francisco MUNI gods. I carry an iPhone 4 (s aapl) and an HTC Droid Incredible, and I grab one or the other from my purse to amuse myself. The best possible scenario is if I grab my iPhone before I go offline, sync up Instapaper, and happen to have recently saved some interesting articles that I haven’t yet read. If I haven’t made those stars align, I play a game — usually Angry Birds or Word Warp.
But for the most part, as soon as I lose connectivity, my mobile apps are mostly broken. Tapping my most-used apps — Gmail (s goog), Facebook and Twitter — only gets me error messages and frustration. Even Angry Birds and Word Warp are handicapped when they’re offline; they lose their social features and word lookups, respectively. If I organized my apps into panels of those that were useful offline and ones that needed connectivity, it’d be incredibly lopsided.
For a better user experience, I’d like to suggest two things:
- More offline content until we have more universal connectivity. This would probably in the Instapaper model where you refresh before you go out of range, and then access the content offline.
- Better transitions between offline and online experiences. Instead of giving you an error message, it would be great if an app cached what you’re doing and dealt with it next time it reconnects to the server.
For instance, it would be cool if you could press a button in your Facebook and Twitter apps to grab and cache the 50 latest updates from your contacts as well as all the web pages they linked to, so you get a capsule of the experience offline. This would probably be pretty hard to execute, as it would require fetching a whole bunch of diverse and not pre-formatted content in a short amount of time that wouldn’t necessarily even be consumed by the user. And it would increase mobile data usage even when that content went unread. But it would be super useful.
HTML5 promises to help solve the offline app problem (along with the climate crisis and world hunger). I was recently talking with Giles Goodwin, co-founder and CTO of Widgetbox, who has been working on some nifty mobile web app creation tools using HTML5. Goodwin and I spoke a bit about the tools that HTML5 provides to make offline work: The manifest holds rules for offline storage, web storage stores data on the device, and SQLite in WebKit gives access to stored complex data.
One good way to go about using this group of technologies is to create a manifest file that supports offline [access] then store[s] all remote data in the Web SQL DB as it is accessed. This way when the app is loaded you can fetch the latest feed data, stick it in the db, then read out of the db when the app is used offline. There are a number of tricks to do this right including setting up all the assets correctly in the manifest and dealing with binary data like images correctly.
That’s easier said than done. The first version of the new Widgetbox mobile product won’t be released with offline support. “[I]t’s one of the more difficult technical problems we had to solve in building our mobile app builder, and we’re not quite ready to release it due to some issues across devices and with some content,” Goodwin says.
We all want universal connectivity — and San Francisco MUNI should really just get Wi-Fi already — but in the meantime, apps should work to bridge the offline gap. Or maybe next time I commute I should bring a paper book.
Related content from GigaOM Pro (subscription req’d):