Local First Software

Offline-first is a product promise

1 min read

Offline-first is not primarily a storage architecture. It is a promise about what remains trustworthy when the network disappears.

The product should say:

  1. what works offline
  2. what queues
  3. what becomes stale
  4. what needs a connection
  5. what a conflict looks like

“Saved on this device” is different from “waiting to sync.” “Conflict needs review” is different from “sync failed.” “Remote status unavailable” is different from “cached value.” The interface should expose those distinctions rather than leaving the user to infer them from a spinner.

An offline action records intent; it does not prove that the server agreed. Queues therefore need idempotency keys, visible pending state, and recovery when sync fails or permission changes before the action lands.

A note app, field tool, banking app, and coding tool will make different promises. The implementation is honest when the user can tell what is real, what is pending, and what may be stale.

Jeremy London

About Jeremy London

Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.