The core design decision in field applications
The application must write to the device first and send to the server afterwards. The user never has to think about connectivity: the record completes locally and synchronisation runs in the background. For teams working in warehouses, basements or rural routes this is foundational, not a feature. The architecture is detailed in our [offline-first design guide](/en/blog/mobile-app-development-guide).
What we do
- iOS and Android development, native or cross-platform
- Local database, durable outbound operation queue and sync worker
- Field-level conflict resolution rules
- Barcode/QR scanning, camera, signature and location integrations
- Store release processes, forced updates and crash monitoring
- Enterprise authentication and remote session termination on device loss
The conflict rule is written at the start
What happens when two devices edit the same record offline is defined per field: merge for independent fields, last-writer-wins for non-critical ones, and server authority with a user prompt for fields with financial impact such as price, discount or collected amount. One strategy for a whole table produces either data loss or needless prompts.
We prevent duplicate records
On a weak connection the request is sent but the response is lost, the app retries, and two orders appear. We send every operation with a unique key generated on the device, and the server returns the original result when it sees that key again.
Location data and privacy
Employee location is personal data. We collect it on events such as visit start and end rather than as a continuous trail, and build purpose, retention period and employee visibility into the design.
Frequently asked questions
Native or cross-platform?
Native has the advantage in hardware-intensive scenarios: continuous scanning, background location, low-latency camera. For field applications dominated by forms and lists, cross-platform reaches both stores from one codebase.
Does local data need encryption?
Yes, if customer, pricing or collection data is held on the device. Remote session termination and local data wipe should also be planned for device loss.
How is sync status shown to the user?
Per record: pending, sent, confirmed. A single global "synced" indicator hides partial failures.