Field operations

Offline-first

Cached reads, queued writes, photo upload buffer — your work doesn't stop when the signal does.

Available on the Free plan and above.

The problem

Trades work in basements, attics, on rooftops, and in fields. The signal drops constantly. Most apps treat that as a failure mode — spinners, lost work, "please try again". The wrong assumption.

What Stelid does

Stelid is offline-first by construction. Every read serves from a persistent React Query cache. Every write goes through a sync outbox with idempotency keys, version checks, and dependency chains. Photos buffer locally. Session expiry parks queued work indefinitely until you re-auth — never dead-letters.

Capabilities

What you actually get.

Persistent React Query cache

Reads work from cache the moment the app boots. No initial spinner.

Idempotent sync outbox

Every write carries an Idempotency-Key + If-Match version. Replays are safe.

Photo upload buffer

Up to 100 MB of photos queue locally. Drained automatically on reconnect.

Cross-tab Web Locks

Two tabs coming online together don't both replay the same outbox.

Resume-aware

The replay engine listens to onAppResumed() so backgrounded native apps drain on resume.

Conflict resolver UI

When server state has changed (409/410), you get a side-by-side resolver, not a silent overwrite.

FAQ

Questions, answered.

  • Queued mutations are "parked" — they wait indefinitely without consuming retry attempts. When you re-auth, they replay against the new session.
  • About 50-100 MB for typical use. The IndexedDB persister evicts least-recently-used entries first, so the cache stays bounded.
  • Both clients carry the version they last read. If the server's moved on, the late client gets a 409 and a side-by-side conflict resolver — keep mine, keep theirs, or merge.

Ready when you are.

7-day free trial on every paid plan — offline-first is one of the things you get. Cancel anytime before billing starts.