Lewis Cowper: Offline first

Orde Saunders' avatarPublished: by Orde Saunders

Lewis Cowper (@LewisCowper) was speaking about the componetised web at EdinburghJS, these are my notes from his talk.

It's tempting to think that connectivity problems will solve themselves over time. This is fine where there is good infrastructure - such as in a city - but there are a lot of places where connectivity is at best intermittent.

We can't assume that everyone will be connected at all times. If we design something that works offline then when there is a connection it will work fine online - a connection is an enhancement.

There are UX problems to be solved around communicating the state. We need to communicate that the information has been saved on the device, it's not been lost but it's only on that device. Offline is not a fail condition, it's not an error it's just a state. UI should assert failure to communicate, not the lack of network.


Offline first, back end service. Write front end code, a jQuery developer should be able to write an offline first web app.

t will handle the heavy lifting of the offline technology and you don't need to know what the back end actually is. Allows back end developers freedom provided it meets the Hoodie interface.

Small core, lots of modular plugins.


Allows us to script persistently cached resources. Still working on the spec, not ready yet. AppCache has some pretty big problems in practice - there's no programmatic access to it, you have little control over it. ServiceWorkers will allow you intercept requests to the network and has a persistent cache.

Offline is...

  • not a feature
  • non-negotiable
  • a fact of life

It's something that will happen to everyone whether you like it or not.