# ERP Mobile and PWA for Field Workers: Offline-First Design

> How to extend your custom ERP to field workers using Progressive Web Apps — covering offline data sync, service workers, and the real-world constraints of mobile ERP in Indonesia.

URL: https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/

- Author: Matthews Wong (https://www.matthewswong.com/en/about/)
- Published: 2025-06-10
- Updated: 2025-06-10
- Category: ERP

Field workers — technicians, delivery drivers, warehouse staff in remote locations, sales reps visiting customers — have always been the last mile of ERP adoption. They need to log work orders, record deliveries, check inventory, and submit forms from the field. But Indonesian field workers frequently operate in areas with poor or intermittent connectivity: rural areas, warehouse basements, factory floors with WiFi dead zones. Building a native mobile app is expensive and requires separate development for iOS and Android. Progressive Web Apps (PWAs) solve this elegantly: one codebase, installable on any device, with offline capability built on service workers and IndexedDB.

## Why PWA Is the Right Choice for Field ERP

For internal field worker tools, PWAs offer the right balance of capability and cost. A PWA is a web application that behaves like a native app: it can be added to the home screen, receives push notifications, works offline, and runs full-screen without a browser chrome. Development and maintenance costs a fraction of native app development because it's the same codebase as the web ERP. No app store approval process. Updates deploy instantly — the next time a user opens the app, they get the latest version without a manual update step. For Indonesian businesses that can't staff or budget a separate mobile development team, PWA is the practical answer.

### The Offline Architecture: Service Workers and IndexedDB

Offline capability in a PWA is built on two browser APIs. Service Workers: a JavaScript file that runs independently of the page, intercepts network requests, and serves cached responses when the network is unavailable. The service worker caches the app shell (HTML, CSS, JS) so the app loads instantly even with no connection. IndexedDB: a client-side database that stores structured data in the browser. Field workers can read records (customer data, work order details, inventory levels) and write new records (completion forms, delivery confirmations, damage reports) even when offline. When connectivity returns, the service worker syncs the IndexedDB data to the server.

### Data Sync Strategy: Designing for Conflicts

Offline data sync creates conflicts when the same record is modified both offline and on the server before sync. Your sync strategy must define how conflicts are resolved. For most field ERP use cases, a 'last write wins' strategy is acceptable for low-stakes data (a GPS location update, a time log entry). For transactional data (a delivery confirmation, a payment receipt), the sync should queue operations in order and apply them sequentially — conflicts are prevented by not allowing two users to modify the same record in the offline state. Design your data model to minimize shared mutable state in field workflows.

> From my freelance ERP consulting work: design the offline data set to be as small as possible. A field technician needs the work orders assigned to them today, the customer address and contact info, and the product/service catalog for their domain. They do not need the entire customer database or all historical invoices. Limit the offline data set to what's needed for that day's work, downloaded at the start of the shift. This keeps the IndexedDB manageable and reduces sync complexity significantly.

## Installing and Configuring the PWA

A PWA requires three things to be installable: a Web App Manifest (a JSON file that defines the app name, icon, display mode, and start URL), a registered Service Worker, and HTTPS (required for service workers to function). The manifest controls how the app appears when installed — choose 'standalone' display mode to run without browser chrome, set the theme color to match your ERP brand, and include icons in multiple sizes. On Android, the browser will automatically prompt 'Add to Home Screen' when these requirements are met. On iOS, users must manually use the Share menu. Make sure your onboarding flow explains this iOS-specific install step.

> **Don't build an offline-first app if your data is too sensitive**

> Offline PWAs store data on the device. If a field worker's device is lost or stolen, the cached data — including customer information, pricing, work order details — is potentially accessible. For ERP data that includes sensitive financial or personal information, implement device-level encryption requirements and remote wipe capability (via mobile device management software) before deploying an offline-capable field PWA. Also implement a session timeout that clears the local cache after a configurable idle period.

## Push Notifications for Field Coordination

PWA push notifications let the ERP communicate with field workers without requiring them to keep the app open. Use cases: a new work order has been assigned, a delivery route has changed, a customer has been called to confirm an appointment, inventory at a pickup location has been updated. Implementing push notifications requires: the Push API (for receiving server-sent notifications), the Notifications API (for displaying them), and a notification server (Firebase Cloud Messaging is the standard choice). Users must grant notification permission — design the permission request to explain why notifications are valuable before asking.

## Real-World Performance Considerations

Indonesian mobile networks vary dramatically by location. Your field PWA must perform on 3G connections (10–50 Mbps effective throughput in rural areas) as well as 4G. Optimize for network performance: compress all images (WebP format), lazy-load non-critical resources, use HTTP/2 or HTTP/3 on the server, and implement a request queue in the service worker that batches sync operations rather than making one API call per record. Target a First Contentful Paint of under 2 seconds on a 3G connection. Test on a physical Android device with network throttling, not just a desktop Chrome DevTools simulation.

## My Honest Assessment: Where PWA Fails

PWA is excellent for form-based field workflows (logging completions, recording deliveries, capturing signatures). It struggles with hardware integration (Bluetooth scanners, NFC readers, specialized printers) — these require native app or React Native. It also struggles with very complex UIs that users expect to feel native — a basic form works; a complex drag-and-drop production scheduling interface does not. For Indonesian field workers whose primary need is logging work, submitting forms, and accessing reference data, PWA covers 95% of the use case at a fraction of native app cost. Know the 5% and plan accordingly.

## Sources & Further Reading

- MDN — Offline and background operation (Progressive Web Apps) — https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation
- Google Developers — Progressive Web Apps: Going Offline — https://developers.google.com/codelabs/pwa-training/pwa03--going-offline
- Wikipedia — Progressive Web App — https://en.wikipedia.org/wiki/Progressive_web_app

> **Key takeaway:** Field workers are the last mile of ERP adoption: technicians, drivers and warehouse staff who need to log work orders and record deliveries where connectivity is unreliable. Designing the mobile client offline-first, syncing when a connection returns, is what makes the data arrive at all.

## Source links

- https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Offline_and_background_operation
- https://developers.google.com/codelabs/pwa-training/pwa03--going-offline
- https://en.wikipedia.org/wiki/Progressive_web_app

## FAQ

### Why choose a PWA over a native mobile app for field ERP?

PWAs share the same codebase as the web ERP, so development and maintenance costs a fraction of building separate iOS and Android apps. Updates deploy instantly when the user opens the app, with no app store approval process. For Indonesian businesses that can't staff or budget a separate mobile development team, PWA is the practical answer.

### How does offline data work in a field PWA?

Offline capability relies on two browser APIs: a Service Worker that intercepts network requests and serves cached responses when the network is unavailable, and IndexedDB, a client-side database where field workers can read and write records even without a connection. When connectivity returns, the service worker syncs the local IndexedDB data back to the server.

### How should conflicts be handled when offline data syncs back to the server?

The sync strategy depends on data sensitivity. A 'last write wins' approach is acceptable for low-stakes data like GPS location updates or time log entries. For transactional data such as delivery confirmations or payment receipts, operations should be queued in order and applied sequentially, preventing conflicts by not allowing two users to modify the same record while offline.

### What data should be stored offline on a field worker's device?

The offline dataset should be as small as possible — only what is needed for that day's work. A field technician needs the work orders assigned to them for the day, the relevant customer address and contact information, and the product or service catalog for their domain. They do not need the entire customer database or all historical invoices. Limiting the dataset keeps IndexedDB manageable and reduces sync complexity.

### Where does PWA fall short for field workers?

PWAs struggle with hardware integration such as Bluetooth scanners, NFC readers, and specialized printers — those scenarios require a native app or React Native. Very complex UIs that users expect to feel fully native are also a poor fit. For Indonesian field workers whose primary needs are logging work, submitting forms, and accessing reference data, PWA covers roughly 95% of the use case at a fraction of native app cost.

---

- HTML version: https://www.matthewswong.com/en/blog/erp-mobile-pwa-field-workers/
- Bahasa Indonesia: https://www.matthewswong.com/id/blog/erp-mobile-pwa-field-workers/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
