ccstate
Read the reference matching the changed behavior; API work does not require the React/DOM reference unless it also changes that surface.
| Task | Reference |
|---|---|
computed, memoization, function-valued state, reactive fetches |
Reactive values |
API client status handling and accept |
HTTP |
| AbortSignal ownership, cancellation, debouncing, detached cleanup | Lifecycle |
| DOM callbacks, page signals, refs and ref cleanup | React and DOM |
| Shared command logic and signal factories | Commands |
Boundaries
- Keep derivation in
computedand semantic actions in commands. Do not create signals or mutate the store during React render. - Every async operation needs an owner and cancellation path. Await work or
return its promise inside signals; use
detach()only at an actual outer boundary with its ownership reason. Do not silence work withvoid. resetSignal()provides mutual exclusion. Add a parent when the work belongs to a page/route lifetime; parentless use still needs an explicit owner that cancels it. The lifecycle reference defines both valid patterns.- Use
acceptwith a non-empty status list forapiClient$calls. Preserve structured HTTP errors and use the view's loadable state for lifecycle UI. - Route setup owns
pageSignal$. Preserve stable callback refs andonRefcleanup returns.
See effects, cache, and Platform tests for the relevant broader contracts. For performance investigations, use React measurements.