State Management Is a UX Decision
How your application manages state determines how it feels to use. This is not an engineering abstraction — it is a direct line to user experience quality.
Engineers talk about state management as an architecture concern. Product managers talk about features. Designers talk about flows. Rarely does anyone in the room identify state management choices as UX decisions — but that's precisely what they are.
Consider what state management controls: what the user sees when data is loading; whether their in-progress work survives a navigation event; how quickly the interface responds to their inputs; whether the app feels consistent across multiple browsers and sessions. These are defining experiential qualities. They are also all direct consequences of state architecture.
Optimistic updates are the clearest example. An application that waits for server confirmation before updating the UI will always feel slower than one that assumes success and updates immediately. The technical difference may be milliseconds. The experiential difference is the perception of whether the app is alive and responsive, or sluggish and distrustful of the user.
Local state versus server state is another. Over-fetching — pulling data from the server when perfectly valid data is already in local cache — makes applications feel slow and creates unnecessary loading states. The discipline to distinguish 'what needs to be fresh' from 'what can be served from cache' is as much a UX discipline as a performance one.
URL state is the most neglected dimension. If a user filters a data table, sorts it, and then shares the URL with a colleague, does the colleague land on the same view? If not, the application has made implicit information non-transferable. URL state makes context shareable and bookmarkable — it is the interface's contract with the browser.
The architecture of state is the architecture of user trust. Every time the application loses state it should have kept, or fetches data it already had, or fails to persist context across navigation, it breaks a small promise to the user. Enough broken promises, and the product feels unreliable — regardless of how good the visual design is.