Keep Informed and Carry On

User experience under failure is about preserving agency without hiding reality.

When something breaks, a professional product does not abandon the user. It explains what changed, protects their work, and lets them continue using the parts that are still safe.

Sometimes that means carrying on in a reduced mode. Sometimes it means stopping clearly because continuing would risk data loss, duplicate work, or a false promise.

What Still Works? #

If checkout is down, account history, invoices, saved carts, and support may still work. If recommendations are down, search can still work. If a shipment is delayed, the user should still be able to see the order, update contact information, or contact support.

Is It Game Over? #

Some failures are total for now. If AWS is down, payment processing is unavailable, or the warehouse cannot accept orders, pretending otherwise wastes the user's time.

Say so plainly and early:

"Checkout is temporarily unavailable. Your cart is saved. We'll update this page when checkout is back." is better than a spinner that never ends.

Carry on when the remaining path is safe. Stop clearly when continuing would mislead the user or risk their data.

Preserve the User's Work #

The best recovery gets out of the way. "Reconnecting..." should disappear when the connection returns. "Saved locally" should become "Saved" when sync succeeds.

Resilience Patterns #

The Circuit Breaker, Visualized

A circuit breaker has three states. It fails fast while a dependency is down, then uses a single probe to notice recovery — the "detect recovery, get out of the way" idea made mechanical.

   +--------+
   | CLOSED |   normal traffic
   +--------+
       |
       | trip: too many failures
       v
   +--------+
   |  OPEN  |   fail fast during
   +--------+   a cooldown window
       |
       | cooldown elapsed
       v
  +-------------+
  |  HALF-OPEN  |   allow ONE
  |  try 1 call |   probe call
  +-------------+
       |
       +--> worked -> back to CLOSED
       +--> failed -> back to OPEN

 CLOSED    : let calls through
 OPEN      : short-circuit; don't
             even try (fail fast)
 HALF-OPEN : a single probe decides
             whether it recovered

Fallback Sources #

Recovering Cleanly #

The third part of the rubric is the one most systems forget: what happens after things heal.

Recovery is not complete when a request finally succeeds. The system must get back to a truthful state.

For physical delivery, recovery may mean a replacement shipment, a refund, or a support workflow. That is still failure handling. The recovery path must be as intentional as the retry loop.

Front End vs. Back End Notes #


Related chapters: Whose Fault Is It Anyway? · Do or Do Not. Then Retry. · Writing Insanely Great Error Messages