The two flavors of "offline" in field service software
When a vendor says "we support offline," they almost always mean one of two things:
- Offline-tolerant. The app caches a read-only copy of your job board so you can look at it without signal. The moment you try to save a ticket, photo, or signature, you get the spinner of death or a "you appear to be offline" toast.
- Offline-first. The app is built so that every action works locally first, queues writes to disk, and syncs in the background whenever a signal returns. The tech never sees a difference.
Offline-tolerant is fine for a software demo. Offline-first is what you need to bill a route.
What offline-first actually requires
1. A service worker that caches the whole app shell
ReliableTrack is a PWA — a Progressive Web App. The first time a tech opens it with signal, the service worker caches the entire app shell (HTML, CSS, JS, fonts, icons). After that, opening the app on a lease road is no different from opening it on Main Street.
2. Local-first writes with a sync queue
When the tech taps "Save" on a ticket, the data is written to local IndexedDB first — instantly, no spinner. A background sync queue then pushes the write to the server whenever a network is available. If the queue has 200 entries when signal returns, it processes all 200 in the background while the tech keeps working.
3. Photo handling that doesn't punt to the cloud
Most tools try to upload photos in real time and choke when they can't. We store the full-resolution photo on the device, attach it to the ticket locally, and upload only when bandwidth is real. If a tech takes 200 photos on a day with zero bars, all 200 are safe — and they sync the moment the truck pulls back into range.
4. Pre-caching the day's work
Before the truck leaves the yard, the app pre-caches: the day's job board, every ticket template, the customer and equipment list, the inventory snapshot, and the tech's open routes. The tech never has to "load" anything in the field.
5. Honest conflict handling
If two techs touch the same ticket offline, the server uses last-write-wins on individual fields and logs every change with a timestamp. The audit trail is on the server, not lost on someone's phone.
What this looks like on a real Permian day
Typical ROS day across the basin: Midland yard at 6 AM, six stops across Andrews / Stanton / Big Spring, back to the yard by 5. Signal is patchy from about mile 12 out. With ReliableTrack:
- Tech opens the app at the yard — job board, templates, customers, equipment all pre-cached.
- At stop one (one bar), tech fills out an EPA-grade heater treater PM, takes 8 photos, signs, customer signs. App writes everything locally. Sync queues one write.
- At stop two (no bars), same thing. Sync queue grows.
- Truck rolls back through Stanton (full LTE). Sync queue empties in 30 seconds without the tech doing anything.
- By the time the tech is back at the yard, dispatch already has all six tickets, all 50 photos, and all the signatures in the office system.
How to tell if a vendor's "offline" is real
Ask them four questions on the demo call:
- "Turn airplane mode on right now and let me fill out a ticket with a photo and a signature." (If they can't, the app is offline-tolerant at best.)
- "What happens to my data if my phone runs out of battery before sync?" (Local IndexedDB persists. RAM caches don't.)
- "How big can the sync queue get before things break?" (Should be effectively unbounded.)
- "Show me the audit trail for a conflict resolution." (If it doesn't exist, conflicts are silently lost.)
The Permian context
I built ReliableTrack because every off-the-shelf option failed at least one of those questions. The full operator write-up is in the ROS case study. For the local context on the basin specifically, see the Permian Basin landing page. For more on the technical patterns we use, see the earlier post on offline-first field apps.
FAQ
What's the difference between offline-first and offline-tolerant?+
Offline-tolerant means the app caches a read-only view and breaks when you try to write. Offline-first means you can read, write, attach photos, sign tickets, and submit — with zero bars — and everything syncs cleanly when you're back in range.
Why does a PWA work better than a native app for oilfield crews?+
PWAs install from a URL with no app store, update silently, and use the browser's service worker for caching. For an oilfield service company with a mixed fleet of Android and iPhone, that's one codebase, no MDM headaches, and no "update the app" tickets from techs.
What happens to my photos if I take 200 of them with no signal?+
They sit in a local write queue with full-resolution data on the device. When the tower comes back, the queue uploads them in the background — it doesn't block the tech from continuing work.
How does ReliableTrack handle two techs editing the same ticket offline?+
Last-write-wins on individual fields with a server-side audit trail of every change. For the same field touched by two users, the most recent timestamp wins and the older value is logged. Most tickets are assigned to a single tech, so conflicts are rare in practice.
Do I have to do anything special to make offline mode work?+
No. Open the app once with a signal, let it cache, and from then on it works offline by default. ReliableTrack pre-caches the day's job board, your templates, and the customer/equipment list.
Offline-first by default. Tailored in 48 hours.
Built by an operator running real Permian routes — not a demo from a conference room in Dallas.