Almost every maintenance app claims to work offline. Almost none of them tell you which actions survive a lost connection, which ones need the network, or what happens to the work you did while it was gone. Those three answers are the whole subject.
Offline is a per-action property
A connection is not present or absent; it is present for some actions and not others. Filing a defect report written on a device in a basement is useful. A stock issue that cannot see the current balance is not — it might take a bin below zero, and the plant's answer would be wrong by the time you read it.
So the honest design is a list, not a slogan: these actions queue, those actions need the network, and the screen tells you which is which before you start typing.
Queued work must be safe to repeat
Shop-floor networks fail mid-request. If a retry can create a second work order, or take the same job twice, nobody will trust the queue. Every queued change carries an identity that makes sending it twice equivalent to sending it once.
A refusal must be visible
The failure mode that kills offline systems is the silent one: a report that appears filed on the device and never reached the plant. A durable refusal is the answer — the report is marked as needing review, with the reason, and retrying returns the same answer rather than looping.
Offline results must say what they searched
When a search box answers with no connection, it can only answer from what the device itself holds. Presenting that subset as the plant's answer is a lie of omission that somebody will act on. Saying “offline results — the plant's machines, jobs and parts are not cached on this device” costs one line of screen space and prevents a wrong decision.
And cold start is its own problem
Capturing work offline is one thing; loading the application with no network at all is another. Ours does not do the second yet, and it is listed as an open item rather than smoothed over.
