Million

React Doctor v2

React Doctor v2 is here, and it's built to run every day.

v1 scored your React. v2 covers a lot more of it, reads your project more carefully, and fits into the way you already work.

React Native and Expo

The biggest addition is mobile. React Doctor now detects React Native and Expo projects and runs a dedicated set of rules for them, from non-virtualized lists that mount every row to shadow styles that silently don't render on Android. The score finally means something for mobile codebases, not just web.

Rules that catch real bugs

We went deep on the patterns that actually break apps. A full useEffect analyzer flags mirrored props, mutable dependencies, missing cleanup, effect chains, and state set straight from an event. There's a set of React 18 to 19 migration rules, design-quality checks for frontend polish, and framework rules for stacks like TanStack Start.

It uses your config

React Doctor now ships as an ESLint plugin and adopts your existing lint setup, so it builds on the rules you already run instead of fighting them.

Suppressions that stay out of the way

Real codebases need escape hatches. v2 adds per-file rule overrides, stacked and multi-line suppressions, and near-miss hints that tell you when a suppression almost matched but didn't.

Output you can actually read

A noisy scanner gets ignored. The summary now collapses to the top rules by default, breaks the score down by category inline, and keeps the full detail behind --verbose. On a branch, scan only what changed:

npx react-doctor@latest --verbose --diff

The GitHub Action grew up too, posting a PR comment with the score and the diff's findings so review happens in the pull request.

A leaderboard

We also published a leaderboard so you can see how real React projects score, and where yours lands.

Announced on X.