Fernway Utilities · 2025

An offline-first app for field engineers

Engineers inspecting water meters filled in paper forms that were typed up days later. We built a mobile app that works with no signal and syncs photos and readings when it can.

  • React Native
  • SQLite
  • Postgres

The problem

Fernway's 85 field engineers inspect and replace water meters across a mostly rural region. Each visit produced a paper form and a handful of photos on a personal phone. Office staff typed the forms into the asset system, usually three to five days later. Around 9% of forms had a missing or unreadable meter serial, which meant a second visit.

A previous tablet app had failed because it needed a connection to load each job, and a third of the region has no reliable signal. Engineers went back to paper within a month. The brief to us was blunt: if it does not work in a basement with no bars, do not bother. It also had to run on the mid-range Android phones the company had already bought.

Process

  1. 01

    Offline is the default state

    We treated connectivity as a bonus. Each morning the app downloads the engineer's jobs, asset history and form definitions into SQLite on the device. Every action writes locally first. A sync queue pushes changes when a signal appears, with photos uploaded separately in the background so a slow connection never blocks a form submission.

  2. 02

    Conflicts with clear rules

    Two people occasionally touch the same asset, for instance when office staff update an address while an engineer is on site. We avoided a general merge algorithm and wrote field-level rules with the operations team: site readings always win from the field, contact details always win from the office. Anything else lands in a small review list.

  3. 03

    Scan instead of type

    Most data errors came from copying long serial numbers by hand. We added barcode scanning for meter serials with on-device recognition, plus range checks on readings that flag a value wildly different from the last visit. We chose React Native so the office web app and the mobile app could share validation code in TypeScript.

01Today's jobs, downloaded at 6 a.m. and usable with no signal
02Serial scan with on-device recognition and a reading range check
03Local-first writes, sync queue and background photo upload
04Office review list for the rare field and office conflicts
05Shared TypeScript validation used by both mobile and web

Outcome

The app rolled out to all 85 engineers over a month, starting with the depot that had the worst signal. Inspections now reach the asset system within an hour of signal returning, not days later. Repeat visits caused by bad data fell from 9% to 1.5%, and three office roles moved from data entry to scheduling.

<1 h
visit to asset system, was 3–5 d
1.5%
repeat visits, down from 9%
85
engineers using it daily
The test was a meter cupboard under a car park with zero signal. It worked there on day one, and that is when the engineers started taking it seriously.
Gareth PryceField Operations Lead, Fernway Utilities

Keep reading

All work
tidewatercode.com

Tell us what is slow, broken or still in a spreadsheet

Send a short brief. Within two working days you get a reply from an engineer, not a sales rep, with first questions and a rough range.

Booking projects from February 2027

Booking projects from February 2027

Live demo · Tidewater Code— View template →