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¶
- sources/2026-08-07-atlassian-building-a-real-time-pwa-on-atlassians-own-stack — the Atlassian Unleash PWA persists actions locally as
pending, retries when its readiness probe permits, marks accepted operationssettled, and removes them only after a live Jira read reflects the action. The client applies an optimistic overlay at enqueue time and keeps it through the settled interval. See patterns/durable-client-outbox-with-settled-overlay.