Onigiri the cat
ONIGIRICode Supervisor
VOL. 102025

INSPECTION FIELD APP2025 | Haru Li

INSPECTION FIELD APP screenshot 1
INSPECTION FIELD APP screenshot 2
INSPECTION FIELD APP screenshot 3
INSPECTION FIELD APP screenshot 4
DETAIL

The problem

Inspections happen inside newly finished buildings, where basements and stairwells routinely have no signal. A single case carries hundreds of checklist items and photos — saving over a live connection means losing the lot the moment it drops.

Approach

Built with another frontend engineer. Every screen reads local SQLite and an offline image bundle first; the network only pushes pending changes and pulls increments in the background. Two queues track pending operations and pending photos, pushed on three triggers — app foreground, a 10-minute poll, and pull-to-refresh — with exponential backoff up to 30 minutes on network failure. Saves batch instead of firing per item (sent 60 seconds after activity stops, or early at 10 operations or 3 photos), cutting the battery drain and heat from repeatedly waking the mobile radio. The pending-item list acts as a fuse on pulls so stale server values never overwrite local edits that have not synced. Case details sync by version, and the offline image bundle supports incremental download, cancellation and orphan cleanup. Reports render through react-native-pdf; errors and usage go to Firebase Crashlytics / Analytics.

Outcome

In continuous development since July 2025, now at version 2.3.8, shipped to iOS and Android through EAS Build.

TECH STACK //
React NativeExpo SDK 54TypeScriptExpo SQLiteLaravel APIFirebase AnalyticsCrashlyticsEAS BuildiOS / Android