Source
`npx react-doctor . --json` — 41 warnings tagged State & Effects.
Breakdown
| Rule |
Count |
| `no-derived-useState` |
16 |
| `no-cascading-set-state` |
9 |
| `no-effect-event-handler` |
6 |
| `prefer-use-effect-event` |
5 |
| `no-derived-state-effect` |
3 |
| `no-prop-callback-in-effect` |
2 |
Why this matters
- `useState` derived from props → use direct value or `useMemo`. Avoids stale state + extra renders.
- `setState` cascading inside an effect after another `setState` → can be merged or restructured.
- Event handlers wrapped in `useEffect` with deps → modern `useEffectEvent` (React 19) avoids stale closures.
- Calling prop callbacks from inside an effect can trigger infinite update loops in consumers.
Sample
- `registry/default/faq/faq.tsx:17` — `no-derived-useState`
- `registry/default/tldr-section/tldr-section.tsx:16` — `no-cascading-set-state`
- `registry/default/slideshow/slideshow.tsx:182` (×3) — `prefer-use-effect-event`
- `registry/default/progress-card/progress-card.tsx:81` — `no-effect-event-handler`
- `components/storybook-embed/storybook-embed.tsx:112` — `no-derived-state-effect`
- `registry/default/tutorial-card/tutorial-card.tsx:87` — `no-effect-event-handler`
Acceptance criteria
Depends on
Run
```bash
pnpm doctor --explain registry/default/faq/faq.tsx:17
```
Source
`npx react-doctor . --json` — 41 warnings tagged State & Effects.
Breakdown
Why this matters
Sample
Acceptance criteria
Depends on
no-react19-deprecated-apis(439 warnings) #268 (React 19 migration — `useEffectEvent` requires React 19)Run
```bash
pnpm doctor --explain registry/default/faq/faq.tsx:17
```