Loading
Data that a component owns and can change over time, causing the UI to update when it does.
Managed with `useState` or `useReducer`. Each state update schedules a re-render. State is local to the component instance. To share state between sibling components, lift it to their common ancestor.
React state updates are batched (React 18+ batches across all event handlers, not just synthetic events). Updater functions (`setCount(n => n + 1)`) avoid stale closure bugs. State lives in the fiber tree; it persists across renders but is destroyed when the component unmounts.