The places security officers work are the places phones lose signal. Underground parking, plant rooms, lift lobbies, metal-clad warehouses, container yards, and the far corner of a construction site all share the property that a patrol app which needs a connection will fail exactly where the patrol matters.
An officer app that only works online is not an officer app. This article describes what the app has to do when the signal drops, why each behaviour matters for the evidence you are collecting, and what to ask a vendor before trusting their answer.
Offline is the normal case, not the edge case
Vendors sometimes describe offline operation as a fallback. For a security officer app it is closer to the primary mode. On a typical night patrol across a mixed site, an officer may lose connectivity for a third of the route. In a basement parking structure, the whole patrol is offline. At a port, the signal may be fine at the gatehouse and absent 200 metres into the yard.
Design the expectation accordingly. Every action an officer can take while online, they must be able to take while offline, with the result preserved exactly as if they had been connected.
Check-ins must record the real time, not the sync time
The most common failure in offline patrol apps is timestamp corruption. The officer checks in at 21:58 in a dead zone, the app stores the event, and when the phone reconnects at 22:40 the server records the check-in at 22:40. The officer is now 40 minutes late on paper, and the client's invoice is wrong.
The app must store the device time at the moment of the action and transmit that original timestamp when it syncs. The server should record both the original time and the sync time so that operators can see the delay without losing the truth. PostWatch shows a pending state for a check-in that has been recorded on the device but not yet received, which tells the operator the officer is likely in a dead zone rather than absent.
Location must be captured at the moment of the action
A geofenced check-in depends on the phone knowing where it is. GPS works without a mobile data connection, because it uses satellites, but the app must request the position at the moment of the check-in and store it with the event. An app that fetches location when it syncs will record the officer's position at the moment the signal returned, which may be a different building.
Indoors, GPS degrades, and the app should fall back gracefully: use the last known good position, record the accuracy radius, and never block a check-in because the position is imprecise. Blocking creates a worse problem, which is officers who cannot check in at all.
Checkpoint scans must work without any lookup
NFC tags and QR codes both work offline, because the phone reads them directly. The app, however, must not need to call the server to interpret the tag. The route, the checkpoint list, and the identifier for each checkpoint should be downloaded to the device when the deployment is published, so that a scan in a dead zone is matched to its checkpoint locally.
The same applies to checkpoint prompts. If a checkpoint asks the officer to confirm a door is locked and take a photo, the prompt must be stored with the route. RouteProof downloads the full route to the device at the start of the shift for this reason.
Incident reports must capture everything locally
An officer dealing with a trespass at 02:00 should not be thinking about signal. The incident form, its required fields, the camera, the video recorder, and the voice note recorder must all work offline, and the media must be stored on the device until it can be uploaded.
Media is where offline queues get large. A few photos are small; a minute of video is not. The app should compress photos before storage, allow video uploads to be restricted to Wi-Fi, and show the officer a clear queue of what is waiting to sync so they are not surprised by data usage.
Sync must be automatic, ordered, and visible
When the signal returns, the app should sync without the officer doing anything. Events should be sent in the order they happened, so that a check-in is received before the checkpoint scans that followed it. Partial failures should retry without duplicating events.
The officer should be able to see sync status at a glance: how many items are queued, and whether the last sync succeeded. Operators should be able to see the same thing from the console. An officer with 30 items queued for two hours is a signal that something is wrong with the device, not the officer.
Battery and data must be respected
An app that drains a phone by 04:00 is an app that gets switched off. Location should be captured at events and at configured intervals during a deployment, not continuously. Background activity should be minimal. On a 12-hour shift, the app should use a small fraction of the battery on a modern phone.
Data usage matters for officers on personal phones. Outside of incident media, a month of check-ins and scans should amount to a few tens of megabytes.
Questions to ask a vendor
Before trusting a vendor's claim that their app works offline, ask these questions and ask for a demonstration in airplane mode.
- If I check in offline at 21:58 and sync at 22:40, what time does the server record?
- Is the location captured at the moment of the check-in or at sync?
- Can I scan a checkpoint on a route I have never opened online?
- Can I record a video incident report with no signal and see it in the queue?
- What happens if the phone restarts with items in the queue?
- How much battery does a 12-hour shift use?
A vendor who cannot answer these precisely has not built for the places your officers actually work. For the broader rollout considerations, including device selection, see a 14-day rollout plan for security workforce software.
The standard to hold
The test is simple. Put a phone in airplane mode, walk a patrol, record an incident, turn airplane mode off, and check that the console shows everything with the right times and places. If that test passes, the app is ready for the basement. If it does not, no amount of features elsewhere in the product will make up for it.