Skip to content

React Doctor

Actions

About

Scan React codebases for security, performance, and correctness issues
eslint-plugin-react-doctor@0.2.16
Latest
Star (11.8K)
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
Main.mp4

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 (GitHub Actions) for your team

GitHub Action

Add the reusable GitHub Action from Marketplace to scan every pull request, show inline annotations, and leave findings where reviewers already look.

name: React Doctor

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

permissions:
  contents: read
  pull-requests: write
  issues: write

concurrency:
  group: react-doctor-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  react-doctor:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: millionco/react-doctor@main

Add GitHub Action →

4. Configure rules in doctor.config.ts

Configure with a doctor.config.ts (or .js, .mjs, .cjs, .json, .jsonc) in your project root.

// doctor.config.ts
import type { ReactDoctorConfig } from "react-doctor/api";

export default {
  lint: true,
  rules: {
    "react-doctor/no-array-index-as-key": "off",
  },
} satisfies ReactDoctorConfig;

Prefer JSON? Use doctor.config.json:

{
  "$schema": "https://react.doctor/schema/config.json",
  "lint": true,
}

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

React Doctor is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Scan React codebases for security, performance, and correctness issues
eslint-plugin-react-doctor@0.2.16
Latest

React Doctor is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.