Skip to content
Engineering2 March 20268 min read

Building software that survives load-shedding

Offline-first patterns, graceful degradation and sync strategies that keep your product useful when the power, and the network, drops.

If your software assumes constant power and a stable connection, it will fail your South African users on a Tuesday afternoon. Designing for intermittent everything isn’t pessimism, it’s just accuracy.

Offline-first, not offline-maybe

Treat the network as an enhancement, not a requirement. Cache what the user needs, let them keep working when the connection drops, and sync changes when it returns. A queue of pending actions that drains automatically beats a spinner that times out.

For data the user creates, write locally first and reconcile with the server in the background. Conflicts are rarer than people fear, and usually resolvable with a sensible last-write or merge rule.

Degrade gracefully

When something is unavailable, the product should get smaller, not break. Hide what can’t work, keep what can, and tell the user plainly what’s happening. A clear “you’re offline, we’ll send this when you’re back” is worth more than a perfect UI that only exists with full bars.

Test in the real world

Throttle the network, kill it mid-action, reload on a cold cache. The failures you find on a fast office connection are a fraction of the ones your users hit daily. Build for the worst case and the best case takes care of itself.

Got a project where this matters?

We’d love to help you build it properly.

Next read

How we scope a whole project in one week