Teams building for intermittent connectivity usually start by caching responses. It demos well and it fails in production, because the hard part of working offline is not reading stale data — it is accepting writes you cannot immediately validate against the server.
Once the client accepts a write it becomes an authority, and two authorities eventually disagree. The question is not whether conflicts happen but whether your resolution is deterministic. Last-write-wins on device clocks is not deterministic; devices in the field disagree about the time by more than you expect.
The version that holds up treats the local store as the primary write target and models changes as ordered events rather than state mutations. Resolution then depends on event ordering you control rather than wall-clock time you do not. This is a data model decision made early, and it is not something you can retrofit onto a request-response application without rewriting the write path.