Designing Software for Businesses That Do Not Always Have Perfect Connectivity

Connectivity-aware design is not an “offline mode” checkbox. It is a set of product decisions about what remains safe and useful when a request cannot complete.

A connection can be available enough to load a screen and still fail during a write. Software used across Zimbabwe and other variable network environments needs to communicate that uncertainty without making assumptions about every user or location.

Classify work before caching it

Reference data may be safe to cache. A draft may be safe to store locally. A payment, stock movement or command may require server confirmation before the interface can call it complete. Offline behaviour follows operational risk, not a single technical pattern.

Represent pending and failed states honestly

A queued action is not a completed action. Show when it was created, whether it is waiting to sync, and what the user can safely do next. Retrying silently without an idempotency key can duplicate work.

User actionLocal validationDurable queueConnectivity returnsIdempotent APIServer acknowledgementLocal state reconciled
Resilient write path

Choose a conflict policy by domain

Last-write-wins may be acceptable for a personal preference and dangerous for inventory. Some changes need field-level merging; others need an explicit review. Record versions and timestamps, but do not mistake them for a complete conflict policy.

Test transitions, not just offline and online

Throttle links, drop requests after submission, expire credentials, reorder responses and reconnect with an old local state. The difficult bugs live in transitions between states, especially when the user cannot tell whether the server acted.

Written by

Rodent Lab Engineering

Notes from the team designing software, electronics and connected operational systems at Rodent Lab.

Offline-awareQueuesResilienceUX

Continue through the system

Related work and capability

Building something similar?

Talk to Rodent Lab about the system you're trying to design, automate or connect.

Start a conversation