useOutbox

Queue mutations offline, replay them in order on reconnect.

Queue mutations while offline, replay IN ORDER on reconnect — over the existing optimistic layer. Replay stops at the first conflict to preserve causality. NOT multi-device CRDT (single-user/device, honest about its limits).

const outbox = useOutbox({ send })
// → { queue, enqueue, replay, online, pending, conflicts }