Offline-first does not mean cloning the entire backend onto a phone. It means identifying the complete job a person must finish without a connection—and making every state of that job legible.
Draw the offline boundary
List the decisions a field user must make during a visit. Cache only the customer, product, price and stock context required for those decisions, with a visible freshness policy.
Treat sync as a protocol
Queue operations rather than snapshots. Give every mutation an idempotency key, record its lifecycle and make retries safe. The UI should distinguish saved locally, syncing, synced and needs attention.
Conflicts are product rules
Last-write-wins is not a business policy. Inventory, pricing and customer notes each need a deliberate rule. Some conflicts can merge automatically; others should return to a person with enough context to decide.
Architecture becomes useful when its trade-offs are visible to the product—not just to the engineering team.