When connection fails
@basiafusinska
basiafusinska.com
barbarafusinska.com
Going offline on mobile
About me
@basiafusinska
basiafusinska.com
barbarafusinska.com
Agenda
• Why & when
• What
• How
– Data sync patterns
– Full offline experience
– Local data sync
– Conflicts
WHY DO WE EVEN NEED OFFLINE?
UX PATTERNS FOR OFFLINE APPS
DON’T LOSE LOCAL DATA…
DON’T TREAT OFFLINELIKE AN ERROR…
DON’T SCARETHE USER…
Atwood’s Law
Any application that can be written in JavaScript, will eventually be written in
JavaScript
HOW TO BUILDFULL OFFLINE EXPERIENCE?
Cache
• Retrieving data from a new source
• Local copy
Local database
How much data do you need?
OFFLINE IS NOT A PROBLEM
OFFLINE PATTERNScache, deferred updating, local
database sync
BACKGROUNDCACHING
DEFERRED UPDATING
LOCAL DATABASE SYNC
FULL OFFLINE EXPERIENCE
VERSIONING & MIGRATION
Syncing technologies
http://grasmeyer.com/blog/2013/10/8/a-comparison-of-syncing-technologies
GET /endpoint/{timestamp}
POST /enpoint {data}
HOW TO GATHER INCREMENTAL DATA?
Sequential changes
Created & updated
Created & deleted
Updated & deleted
RESOLVING RELATIONS
Sync new/created data
No conflicts
… unless relations
Summary
• Full offline experience
• Data sync
• Conflict resolution
Questions?
@basiafusinskabarbarafusinska.combasiafusinska.com