Field Operations
Offline-First Field Software: A Decision Protocol for Reliable Operations
An architecture and acceptance framework for capturing, synchronizing, and controlling field operations without losing or duplicating data.

Decision supported
Field software is genuinely offline-first only when users can access the required data, record a critical operation, and see its true status without a network. Local storage holds the working state, every write has a stable identifier, retries cannot create duplicates, and conflicts follow explicit business rules. A cache or resync button alone is not sufficient.
Executive summary
- Use the local data source for application reads, then reconcile it with the server.
- Separate reference data and field evidence from transactions that commit stock, price, or payment.
- Make every write safely retryable with an operation ID, base version, and visible status.
- Do not release until outages, duplicates, conflicts, and recovery after forced shutdown have been tested.
Define offline-first as an operational capability
Offline operation means more than reopening a cached screen. Field teams must know which tasks remain available, how current the data is, and which actions still await server confirmation. That distinction prevents a false success state.
Android's offline-first guidance places a local source ahead of the upper application layers. The network refreshes and reconciles that source, but each read does not depend on a remote call. For Atlas, local work must be explicit, durable on the device, and observable until the server accepts it.
Verified architecture principle
Android guidance recommends a local source as the canonical read source for an offline-first application and distinguishes write strategies by operation criticality.
Choose a strategy for each type of write
Not every write can follow the same rule. A note or photo may wait locally, while a stock issue, price approval, or collection changes shared state and requires stronger control. Classify the action before choosing the technology.
| Action | Offline behaviour | Final authority | Reliability condition |
|---|---|---|---|
| Note, photo, or reading | Save locally and queue | Server after format and access checks | Keep the file, time, author, and local ID |
| Close a field job | Allow a pending state | Server after prerequisite checks | Show pending, accepted, or rejected clearly |
| Order or stock movement | Create an intent without promising final stock | Server and reservation rules | Return a deterministic result if stock or price changed |
| Payment collection | Capture evidence and limit actions by risk | Financial or reconciliation system | Use a unique ID, audit trail, and discrepancy process |
Atlas decision
We do not recommend one uniform offline mode. Device autonomy should decrease as an action commits shared stock, contractual pricing, or financial flows.
Write the synchronisation contract before the screens
Every local operation must be replayable after an outage without producing a second business effect. The device creates a stable operation ID before sending; the server stores that ID with the result and returns the same result when the request is repeated. This complements HTTP idempotency semantics.
The contract also carries the entity ID, base version, author, captured time, received time, and action type. At minimum, local status distinguishes queued, processing, accepted, and correction required. A business rejection is not a network failure.
- Create the operation ID on the device and retain it after restart.
- Include a base version to detect concurrent changes.
- Store the server response with the resulting version.
- Retry technical failures with progressive backoff.
- Use a separate exception queue for business rejections requiring human action.
Reliability practice
Idempotency handles repetition; versioning handles conflict. Both are required because a unique ID does not identify which business version should change.
Resolve conflicts according to business meaning
Last-write-wins is simple to code but dangerous when it erases evidence, changes an assignment, or hides a stock movement. Resolution must depend on the data type and leave an auditable trace.
| Data type | Recommended rule | Avoid |
|---|---|---|
| Photo, signature, measurement | Add new evidence without replacing the original | Overwriting the previous file |
| Descriptive comment | Keep both versions or request a merge | Silent last-write-wins |
| Task assignment | Compare versions and request a decision if changed | Invisible reassignment |
| Quantity or stock | Record a movement and recalculate on the server | Replacing a shared total directly |
Conflicts are explicitly documented
Android guidance states that conflict resolution requires versioning and metadata. It cites last-write-wins as a common strategy, not a universal rule.
Run an outage acceptance test, not a desk demo
The decisive test uses real devices, data volumes, and field journeys. Cut the network at the wrong moment, stop the application during a write, and create a concurrent change from another device. Prove what the user sees and what the system receives, not merely that the queue eventually empties.
- Create several operations in airplane mode, close the app, restart, and synchronise.
- Repeat the same action and verify that only one business effect occurs.
- Edit the same record on two devices and verify the declared conflict rule.
- Remove a user's right during the outage and verify controlled rejection on reconnection.
- Test a device with the wrong time; never treat its clock as an absolute order.
- Measure queue age, rejection rate, conflicts, recovery time, and blocked operations.
Make a Go, Conditional Go, or No-Go decision
| Decision | Minimum conditions |
|---|---|
| Go | No loss in critical scenarios; duplicates neutralised; conflicts explained; queue monitored; support procedure tested |
| Conditional Go | Offline scope limited to evidence or drafts, with visible restrictions on shared operations |
| No-Go | Success shown before server acceptance, non-durable local writes, possible duplicates, or no documented conflict rule |
Decision position
Weak coverage is not the only risk. Software that hides pending states can be more dangerous than software that clearly limits offline actions.
Decisions to make now
Recommended actions
- 01List field actions and their impact on stock, price, compliance, or payment.
- 02Define the final authority and expected offline behaviour for each action.
- 03Formalise the write contract: ID, version, statuses, and business errors.
- 04Build representative conflict cases with operations teams.
- 05Run field acceptance tests and set Go thresholds before deployment.
Watch points
- A green indicator that means saved on device, not accepted by the server.
- A local queue erased by an update, logout, or storage shortage.
- Stock movements represented by replacing a total.
- Automatic conflict resolution with no trace or correction path.
Frequently asked questions
Can a PWA be genuinely offline-first?
Yes, when local storage, update cycles, write queues, recovery, and browser limits are designed and tested. Choosing PWA or native does not replace the synchronisation contract.
Should orders be allowed without a network?
You can capture an order intent, but server authority must confirm stock, price, and commercial terms. The interface must distinguish a local draft, a received order, and a confirmed order.
How do we prevent duplicate operations?
Generate a stable ID before the first send, make server processing idempotent, and retain the associated result. Add versioning to detect conflicts that are not simple repetitions.
Sources and verification
Last editorial verification: 29 August 2026. Links point to the source texts, authorities, and reference guides consulted.
- 01Build an offline-first app
Android Developers, Google. Accessed 29 August 2026.
- 02Data layer
Android Developers, Google. Accessed 29 August 2026.
- 03RFC 9110: HTTP Semantics, section 9.2.2 Idempotent Methods
RFC Editor. Accessed 29 August 2026.
Related decisions
Continue with briefs that share the same operational, technical, or governance context.
B2B Commerce
B2B Orders on WhatsApp: From Messages to a Controlled Workflow
Read the briefB2B Commerce
B2B Distribution Pricing: Build Explainable and Auditable Rules
Read the briefCybersecurity
What Algeria's 2025-2029 Cybersecurity Strategy Means for Businesses
Read the briefField review
Test synchronisation across your critical field journeys.
We define local states, writes, conflict rules, and outage acceptance tests before deployment.