Offline-first and mobile

The people doing the work often have the worst connection — on a vessel, in a basement, on a site with no coverage. An application that needs the network in order to function is an application that stops when it is needed most.

We build offline-first: the device holds the authoritative copy of the work in progress, every change is recorded so it can be replayed, and synchronisation is deterministic — the same set of changes reconciles to the same result whatever order they arrive in. Conflicts are settled by a rule the client agreed, not by whichever device happened to connect last.

On mobile that is React Native and Expo, with a device test matrix covering the hardware people actually carry. On the web it is a service worker doing the same job, so a browser tab keeps working when the connection does not.