Core Concepts

What Flux Is Not

Flux reduces or eliminates the need for server-side infrastructure dedicated to frontend state distribution, and it replaces a fair amount of hand-rolled offline and caching logic. It does not reach past the browser. This page states plainly where that line sits, so it's clear up front rather than discovered halfway through an integration.

1

Not a replacement for your server-side infrastructure

Flux removes the need for a separate server-side layer whose only job is distributing state to your frontend — the caching and pub/sub work that would otherwise exist purely to get data in front of a browser faster. It does not replace the infrastructure your backend uses for its own purposes: distributed locks between server processes, background job queues, or server-side session storage. Those systems solve problems that exist entirely on your server, independent of whether a browser is even involved, and Flux has no opinion about them.
2

Not server-to-server communication

Every mechanism described in these docs — the offline queue, the replay engine, the realtime adapters — operates between a browser and your API. None of it is a transport for service-to-service traffic, and none of it should be reached for when two backend systems need to talk to each other. That's a different problem with different tools.
3

Not a security or rate-limiting layer

The shaping behavior described in core-concepts/mutation-pipeline — deduplication, debouncing, coalescing — exists to stop your own UI from generating more requests than a user actually intended. It has no opinion about, and no effect on, a request made directly against your API by something other than your app's UI. Rate limiting, abuse prevention, and DDoS protection are server-side concerns and need to be enforced there, regardless of anything Flux does on the client.
4

Not a payments or ledger system

Anything that moves real money — a wire transfer, a direct debit, a balance-affecting write — needs to be synchronous and needs to be handled by your actual payment infrastructure, never queued for later replay. See the fintech boundary called out in core-concepts/mutation-pipeline for the specific configuration to use on endpoints like this. Flux is well suited to the surrounding UI — saved payment methods, preference toggles, non-ledger account details — just never the ledger write itself.
5

Not an authentication system

Flux's multi-tenant scoping isolates one logged-in user's cached data, queued writes, and tracked jobs from another user's, on the same shared browser. It does this entirely by namespacing client-side storage against whatever user identity your app tells it about — it has no concept of login, no session validation, and no way to confirm that identity is genuine. Confirming who someone actually is remains entirely your server's responsibility, exactly as it would be without Flux in the stack at all.
The boundary is the point

Everything on this page is a boundary, not an apology. Flux is deliberately a client-side data layer — the moment it started reaching backward into your server's job queues, your auth provider, or your payment rails, it would stop being something you could drop into an existing stack safely. The boundary is what makes it safe to adopt.

For what Flux does do, start at core-concepts/5-layer-stack. For the specific ledger-write boundary in practice, see core-concepts/mutation-pipeline. For how per-user isolation works without touching authentication, see core-concepts/multi-tenant-scoping.