Where should application state live?
A sample design note using a property-management dashboard.
The scenario
A property dashboard combines remote records, filters, selection, and a multi-step editing workflow. Giving every value the same owner makes changes harder to reason about.
A useful starting point
Separate remote data from local interaction state. Explore TanStack Query for fetching and caching server records, and Redux for a client workflow that crosses several views.
The decision to document
Not every value needs a global store. Keep component-only state close to the component, and consider whether a shareable filter belongs in the URL.
Failure behavior matters
Describe what happens when a save fails, when cached records are refreshed, and when a user returns to an unfinished form. Make optimistic behavior reversible.
How I would validate it
Use a small working dashboard and a few concrete user journeys. Show loading, empty, error, and recovery states, then explain the tradeoffs in the code.