The phone is the source of truth during a shift
What we did
Local-first storage in SQLite through WatermelonDB, with a changeset sync rather than request-per-action.
Why
Every read and write is local, so the interface never waits on a network that is not there. Sync becomes a background concern instead of a blocking one.
What it cost
Schema migrations now run on the device, on data we cannot inspect first. Every migration ships with a rollback path and is tested against a corpus of real-shaped local databases before release.