MCPcopy
hub / github.com/millionco/react-doctor

github.com/millionco/react-doctor @v2.2.2 sqlite

repository ↗ · DeepWiki ↗ · release v2.2.2 ↗
6,374 symbols 19,360 edges 2,863 files 10 documented · 0%
README

React Doctor

version downloads

Your agent writes bad React, this catches it.

React Doctor deterministically scans your codebase and finds issues across state & effects, performance, architecture, security, and accessibility.

Works for all React frameworks and libraries - Next.js, Vite, TanStack, React Native, Expo, you name it.

Website →

Install

1. Quick start

Run this at your project root to get an audit.

npx react-doctor@latest

https://github.com/user-attachments/assets/07cc88d9-9589-44c3-aa73-5d603cb1c570

2. Install for agents

Once you have an audit, you can install the skill for your coding agent to learn from the issues and fix them in the future.

npx react-doctor@latest install

Works with Claude Code, Cursor, Codex, OpenCode, and many more.

3. Run in CI

React Doctor CI (GitHub Actions) reviews every pull request automatically and reports only the issues your change introduced, not your existing backlog.

Add GitHub Action →

4. Configure rules

You can configure which rules to run and how to run them in doctor.config.ts.

Learn more →

Telemetry

The CLI reports crashes, basic run traces, and anonymous usage counters to Sentry to help us fix bugs and prioritize work.

We collect:

  • Environment: CLI version, platform, Node version
  • Invocation: which command, package manager, and run context (whether it's local vs. CI vs. coding agent)
  • Project shape: framework, React version, TypeScript, project size NO file contents)
  • Rules fired: rule names and counts only (e.g. react-doctor/no-array-index-as-key) (NO code or specific findings)
  • De-minified React Doctor CLI stack traces

To opt out, run: npx react-doctor@latest --no-telemetry

Contributing

Issues welcome!

MIT-licensed

Extension points exported contracts — how you extend this code

SupplyChainForkResult (Interface)
* The settled result of the background supply-chain fiber: its collected * diagnostics, plus whether the fork-relative
packages/core/src/run-inspect.ts
AnalyzeOutput (Interface)
(no doc)
packages/deslop-cli/src/run-analyze.ts
KeyedSeverity (Interface)
(no doc)
packages/oxlint-plugin-react-doctor/src/rules.ts
Logger (Interface)
(no doc)
packages/language-server/src/types.ts
EslintRuleContext (Interface)
(no doc)
packages/eslint-plugin-react-doctor/src/index.ts
ServerStatusParams (Interface)
(no doc)
packages/vscode-react-doctor/src/extension.ts
Diagnose (Interface)
(no doc)
packages/api/src/diagnose.ts
RuleDiagnostic (Interface)
(no doc)
packages/website/src/components/terminal.tsx

Core symbols most depended-on inside this repo

isNodeOfType
called by 3909
packages/oxlint-plugin-react-doctor/src/plugin/utils/is-node-of-type.ts
push
called by 953
packages/deslop-js/src/errors.ts
runRule
called by 940
packages/oxlint-plugin-react-doctor/src/test-utils/run-rule.ts
setupReactProject
called by 559
packages/react-doctor/tests/regressions/_helpers.ts
defineRule
called by 389
packages/oxlint-plugin-react-doctor/src/plugin/utils/define-rule.ts
get
called by 334
packages/language-server/src/diagnostics/manager.ts
collectRuleHits
called by 319
packages/react-doctor/tests/regressions/_helpers.ts
runScanRule
called by 213
packages/oxlint-plugin-react-doctor/src/test-utils/run-scan-rule.ts

Shape

Function 5,230
Interface 884
Class 164
Method 89
Enum 7

Languages

TypeScript100%
Python1%

Modules by API surface

packages/deslop-js/src/types.ts62 symbols
packages/deslop-js/src/resolver/resolve.ts58 symbols
packages/deslop-js/src/collect/entries.ts57 symbols
packages/deslop-js/src/collect/parse.ts48 symbols
packages/core/tests/fixtures/basic-react/src/design-issues.tsx47 symbols
packages/core/src/errors.ts46 symbols
packages/oxlint-plugin-react-doctor/src/plugin/rules/react-builtins/rules-of-hooks.ts44 symbols
packages/react-doctor/src/cli/utils/render-diagnostics.ts41 symbols
packages/oxlint-plugin-react-doctor/src/plugin/rules/react-builtins/exhaustive-deps.ts41 symbols
packages/oxlint-plugin-react-doctor/src/plugin/semantic/scope-analysis.ts40 symbols
packages/deslop-js/src/errors.ts39 symbols
packages/core/src/runners/oxlint/resolve-use-call-binding.ts37 symbols

Dependencies from manifests, versioned

@angular/core17.0.0 · 1×
@babel/cli7.0.0 · 1×
@babel/code-frame7.29.0 · 1×
@babel/core7.0.0 · 1×
@built-fixture/uiworkspace:* · 1×
@changesets/changelog-github0.7.0 · 1×
@changesets/cli2.31.0 · 1×
@docusaurus/core3.4.0 · 1×
@docusaurus/preset-classic3.4.0 · 1×
@effect/platform-node-shared4.0.0-beta.70 · 1×
@effect/vitest4.0.0-beta.70 · 1×
@fixture/uiworkspace:* · 1×

Datastores touched

(mongodb)Database · 1 repos
appDatabase · 1 repos
appDatabase · 1 repos
dbDatabase · 1 repos
apiDatabase · 1 repos
widgetDatabase · 1 repos

For agents

$ claude mcp add react-doctor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact