Skip to content

CONCEPT Cited by 1 source

Durable client outbox

A durable client outbox is persistent local storage for a user's operation before the application depends on a remote write path. Each operation includes an identity, payload, lifecycle state, creation time, and retry information. It is the client-application analogue of a server-side transactional outbox, but its primary responsibility is preserving user intent across offline periods, temporary authorization convergence, retries, and stale read models.

Lifecycle

pending → backend accepted → settled → authoritative live read confirms → removed
     └→ non-transient failure → removed with local optimistic state rolled back

The settled state is important: a remote write can succeed while the next read still returns the prior state. Removing the local mutation immediately can make the interface appear to undo the user's action. A durable outbox therefore needs reconciliation against an authoritative read, not only acknowledgement handling.

Design constraints

  • Use stable operation IDs and make the server endpoint idempotent; retry without an idempotency contract risks duplicate writes.
  • Store only the minimal user intent and avoid persisting secrets or unencrypted sensitive data in browser storage.
  • Distinguish transient delivery failure from a terminal validation/authorization rejection.
  • Bound retries, expose stuck operations, and provide a recovery action; durable does not mean unbounded retry.
  • Reconcile by operation semantics, not merely status codes: the application needs a predicate that establishes whether the live state reflects the operation.

Seen in

Last updated · 619 distilled / 1,953 read