Skip to content
All work

FieldnoteMobile

An offline-first notes app that syncs without conflicts

A sync engine and mobile app for a research notes product used in places where a good connection is a luxury.

Client
Fieldnote
Industry
Software
Role
Lead engineer
Year
2023
Duration
9 months

Built with

  • React Native
  • TypeScript
  • SQLite
  • CRDTs
  • Node.js

Scope

  • Mobile
  • Sync engine
  • Architecture
  • Testing
A hand holding a smartphone above a pale green desk with coffee, a glass of water and sticky notes
Notes synced without a lost edit
2M+
App store rating after launch
4.8
Sync conflicts users have to resolve by hand
0

The challenge

Fieldnote's users take notes in remote places with no signal, then sync days later. The old sync overwrote edits made on two devices, and every lost note turned into a support ticket and an angry review.

The approach

We designed for offline first, treating the network as a bonus rather than a requirement.

  • A local SQLite database on every device, so the app is instant whether or not there is a connection.
  • A sync engine built on CRDTs, so edits from several devices merge cleanly without anyone having to pick a winner.
  • Property-based tests that replay thousands of random edit histories to prove nothing is ever lost.

The outcome

Since launch, Fieldnote has synced more than two million notes without a single lost edit. App store ratings climbed to 4.8 and sync-related support tickets disappeared.