| 01 | Server-Proof | No window/document/localStorage outside useEffect |
| 02 | Hydration-Proof | SSR output matches client's first render |
| 03 | Instance-Proof | useId() or useStableId() for all generated IDs |
| 04 | Concurrent-Proof | No side effects in render body |
| 05 | Composition-Proof | No cloneElement or Children.map |
| 06 | Portal-Proof | ownerDocument.defaultView for global listeners |
| 07 | Transition-Proof | Interactive state updates in startTransition |
| 08 | Activity-Proof | DOM side effects cleaned up via media or useLayoutEffect |
| 09 | Leak-Proof | Every effect has cleanup |
| 10 | Future-Proof | useMemo for perf only, useState for correctness |
| 11 | Race-Proof | Fetch effects use ignore flags or AbortController |
| 12 | Derived-State | No effect chains; derive during render |
| 13 | Type-Safe Context | Custom hooks throw if used outside provider |
| 14 | External-Store | useSyncExternalStore for browser/third-party data |
| 15 | StrictMode | Component survives double-mount without bugs |
| 16 | Key Reset | State resets use key, not effects |
| 17 | Accessible | Keyboard nav, ARIA attributes, focus management |
| 18 | Barrel-Safe | No naming conflicts in re-exports |
| 19 | Theme-Isolated | CSS vars scoped per instance |
| 20 | Handler vs Effect | Side effects in correct location |