Import from @oddurs/steady/react in a client component. useTask, useNavigation, and useMutation take the same arguments as their core counterparts and return snapshot fields plus the relevant action methods. The hooks own their controller and dispose it on unmount. Disposal is deferred one microtask to tolerate StrictMode effect replay.
useStore(store) subscribes to an externally owned core store; the caller owns disposal. It uses React's useSyncExternalStore. Server and initial client data must match.
SteadyProvider supplies optional feedback defaults. Nested providers inherit parent defaults. Local options override provider defaults. Mutation hooks inherit delay and slow timing, never timeout. Timings, initial data, and concurrency policy are captured when a hook mounts. Operation callbacks and optimistic reducers update after each committed render.
Pending takes state={{ showPending, isSlow }}, children, optional slow content, and standard span props. It keeps a polite live region mounted and changes the text when needed. Reserve space with CSS where necessary. Announce errors in a separate local alert; avoid duplicating announcements for the same operation.