Journal/Field notes

Why offline-first is the only honest promise in site software

Signal dies in basements, and that is exactly where the defects are. So the phone is the source of truth until it syncs, and sync is something you never think about.

A two-colour risograph poster of two hi-vis workers seen from above, looking at a tablet together on site
WP
Will PrinmanCo-founder
25 May 2026·6 min read

There is a moment on every site where the software stops being software and becomes a liability. A super is standing in a level-three plant room with no signal, three defects in their head, and the tool wants to phone home before it will let them save anything.

We built IssuesId so that moment never happens.

Sites are not connected, and pretending otherwise loses defects

The industry has spent fifteen years pretending sites are online. They are not. Basements, lift cores, plant rooms, stairwells, the back half of a 240-dwelling block before the comms riser is live. Dead zones, all of them, and they are exactly where the defects are.

A tool that needs a connection does not fail politely in those places. It fails mid-capture, photo half uploaded, description half typed, at the worst possible second. The super learns that lesson once. After that they stop trusting the tool and go back to the notebook, the data never makes it into the system, and the handover pack is missing the things that actually mattered. If your software loses a defect because the wifi dropped, the super will never forgive it, and they shouldn't.

What offline-first actually means

Most "offline support" is a cache and a hope. The app remembers the last screen you looked at and queues a write or two before it gets confused. That is not this.

Offline-first means the phone in your hand is the source of truth until it syncs. Every defect, photo, annotation, and status change is written to the device first, with no network in the loop. The screen never waits on a request. Sync is a background job that runs whenever a connection turns up, and you are not meant to notice it.

The test is simple. Open the app in airplane mode. Capture twelve defects with photos across four locations. Close the app, reboot the phone, reopen in airplane mode. Every defect is still there, exactly as you left it. Walk back to the site office and watch them sync without a single tap. If a tool cannot pass that, it is not offline-first. It is online software with a safety blanket.

The hard part is reconciliation, and it took us a while

Writing offline is easy. Merging two weeks of offline work from six devices without losing or duplicating anything is the whole problem, and it is where most of our early bugs lived. Three decisions got us out of it, and they have held up.

Every record carries its own identity. IDs are generated on the device, not the server, so a defect created in a basement is the same defect after it syncs. No temporary-ID juggling, no duplicate when two supers shoot the same crack from different angles.

Changes are append-only events, not overwrites. When two people edit the same defect offline, we do not pick a winner and quietly bin the loser. We replay both in timestamp order and put anything that genuinely conflicts in front of a human to sort out.

Photos sync on their own, separate from the record. A defect can be complete and useful before its 4 MB photo has crawled up a single bar of 4G. The record lands first. The evidence catches up.

What it buys the person on site

All of that engineering disappears into one feeling: the app is fast and it never eats your work. The super in the plant room logs the defect, moves on, and forgets sync exists, which is the point.

Offline-first is not a checkbox we tick to win a comparison table. It is the only honest promise you can make to someone whose job happens in a basement.