State is information that can change and affects behavior or rendering. Durable domain state may outlive a screen, presentation state describes a feature workflow, and ephemeral state such as focus or an animation phase may remain local to a view. Promote state only when another owner genuinely needs it.
Unidirectional flow follows a repeatable loop: the user or system emits an action, a transition computes new state, effects interact with the outside world, and the view renders the resulting state. One mutation path makes changes easier to trace than several views and callbacks modifying shared values independently.
A reducer is useful when transitions are complex enough to benefit from pure input-output logic. It should not start network work secretly. Instead, the store interprets commands or launches effects through injected dependencies and feeds results back as actions. Cancellation, stale responses, duplicate loads, and main-actor rendering remain explicit parts of the design.