Offline Write Queue
What happens to a write when the network isn't there to receive it — and the one category of write that should never go through this system at all.
When a channel is registered with a queueConfig, any write to it that can't reach the server immediately — because the device is offline, or the request simply failed — is captured and held rather than discarded. The moment connectivity returns, it's sent automatically. Your UI code for "save this note" doesn't need an offline branch; the same call works identically online or off.
Turning a channel into an offline-safe write path
queueConfig to any registration and every write against that channel becomes offline-safe. Nothing else about the registration changes.replayEndpoint is where the queued write gets sent once it's safe to send. Until then, it sits captured locally — surviving a page refresh, a browser crash, and even a tab freeze, so nothing is lost between the moment the user hits save and the moment the network is actually available to hear about it.Duplicate writes are handled for you
dedupeField and dedupeStrategy let you decide what happens when that occurs while an earlier write for the same identifier is still queued.'reject' blocks the second write outright — the first one queued wins. 'replace' merges the new payload into the still-queued entry, so the most recent input wins without producing two separate requests once the connection returns.Storage is resilient across three tiers
Multiple open tabs never duplicate a write
The offline write queue is built for writes where "send it a little later" is an acceptable outcome — a saved draft, a preference change, a beneficiary added to an account. It is deliberately not built, and should never be used, for financial ledger writes: payments, wire transfers, direct debits, or any operation where a duplicate send or a delayed send against changed conditions has real financial consequences.
There is no configuration on the queue that makes this safe. A queued payment that replays after reconnecting could execute against a balance, a rate, or an authorization that's no longer valid the moment it was queued under. The correct pattern is to keep payment endpoints entirely outside the queue system and instead block the action at the UI level while the app is offline — failing fast and visibly, rather than deferring silently.
queueConfig at all:isOnline from useFlux() — the same flag every other part of your app can read to know whether the device currently has a connection:See core-concepts/conflict-resolution for what happens when a queued write for a non-financial record conflicts with a change made on the server while the user was offline, and core-concepts/mutation-pipeline for shaping rapid-fire writes — like autosave — before they ever reach the queue.