millionco/react-doctorPublic

Your agent writes bad React. This catches it

AI summary: A deterministic CLI code reviewer that identifies performance and architectural issues in React and Next.js applications.

Stars
15K
+11 today
Forks
487
Watchers
28
Open issues
22
Open PRs
102
Contributors
~17
Commits
1.4K
Branches
899

TypeScriptOtherCreated Feb 13, 2026Last push 3d agoLatest release [email protected]+33 stars this week+256 this month

Quick answers

What is react-doctor?
A deterministic CLI code reviewer that identifies performance and architectural issues in React and Next.js applications.
What does react-doctor do?
React Doctor operates as an automated, specialized code reviewer that strictly analyzes React-based codebases. It deterministically flags performance bottlenecks like unnecessary re-renders, improper hook dependencies, and bloated components across frameworks like Next.js and Vite. The tool provides a CLI for local audits, a GitHub Action for scanning pull requests dynamically, and an installable skill for AI coding agents. It surfaces actionable health reports with exact code snippets to help engineers quickly remediate architectural debt. The tool leverages deep AST analysis to aggressively root out performance bottlenecks like unnecessary re-renders. It functions proactively within the CI/CD pipeline, catching architectural flaws before they are merged into production.
Who is react-doctor for?
Frontend engineers, technical leads, and DevOps teams looking to enforce strict performance and architectural standards in large React codebases.
How do I get started with react-doctor?
npx react-doctor@latest
How popular is react-doctor on GitHub?
millionco/react-doctor has 14,950 stars and 487 forks on GitHub, and gained 33 stars in the last 7 days.
What license does react-doctor use?
millionco/react-doctor is released under the Other license.

Star history

since Jul 29, 2026
05K10K15KJul 2026Aug 2026Sep 2026Oct 2026
15K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 5 commits2026-02-14: 0 commits2026-02-15: 4 commits2026-02-16: 48 commits2026-02-17: 57 commits2026-02-18: 19 commits2026-02-19: 24 commits2026-02-20: 6 commits2026-02-21: 3 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 3 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 1 commit2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 2 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 4 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 4 commits2026-04-15: 0 commits2026-04-16: 8 commits2026-04-17: 1 commit2026-04-18: 6 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 1 commit2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 7 commits2026-04-29: 1 commit2026-04-30: 3 commits2026-05-01: 7 commits2026-05-02: 2 commits2026-05-03: 1 commit2026-05-04: 0 commits2026-05-05: 1 commit2026-05-06: 1 commit2026-05-07: 3 commits2026-05-08: 39 commits2026-05-09: 14 commits2026-05-10: 0 commits2026-05-11: 2 commits2026-05-12: 0 commits2026-05-13: 16 commits2026-05-14: 8 commits2026-05-15: 17 commits2026-05-16: 20 commits2026-05-17: 16 commits2026-05-18: 9 commits2026-05-19: 0 commits2026-05-20: 2 commits2026-05-21: 4 commits2026-05-22: 32 commits2026-05-23: 13 commits2026-05-24: 36 commits2026-05-25: 71 commits2026-05-26: 26 commits2026-05-27: 20 commits2026-05-28: 27 commits2026-05-29: 17 commits2026-05-30: 9 commits2026-05-31: 14 commits2026-06-01: 27 commits2026-06-02: 10 commits2026-06-03: 7 commits2026-06-04: 13 commits2026-06-05: 2 commits2026-06-06: 12 commits2026-06-07: 20 commits2026-06-08: 11 commits2026-06-09: 10 commits2026-06-10: 4 commits2026-06-11: 4 commits2026-06-12: 9 commits2026-06-13: 6 commits2026-06-14: 2 commits2026-06-15: 9 commits2026-06-16: 9 commits2026-06-17: 9 commits2026-06-18: 11 commits2026-06-19: 9 commits2026-06-20: 4 commits2026-06-21: 9 commits2026-06-22: 8 commits2026-06-23: 0 commits2026-06-24: 1 commit2026-06-25: 16 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 2 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 20 commits2026-07-03: 19 commits2026-07-04: 13 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 6 commits2026-07-08: 2 commits2026-07-09: 24 commits2026-07-10: 9 commits2026-07-11: 43 commits2026-07-12: 13 commits2026-07-13: 37 commits2026-07-14: 59 commits2026-07-15: 9 commits2026-07-16: 1 commit2026-07-17: 41 commits2026-07-18: 13 commits2026-07-19: 14 commits2026-07-20: 11 commits2026-07-21: 4 commits2026-07-22: 6 commits2026-07-23: 10 commits2026-07-24: 4 commits2026-07-25: 5 commits2026-07-26: 4 commits2026-07-27: 1 commit2026-07-28: 1 commit2026-07-29: 15 commits2026-07-30: 16 commits2026-07-31: 19 commits2026-08-01: 2 commits2026-08-02: 13 commits2026-08-03: 17 commits2026-08-04: 9 commits2026-08-05: 6 commits2026-08-06: 4 commits2026-08-07: 5 commits2026-08-08: 10 commits2026-08-09: 4 commits2026-08-10: 1 commit2026-08-11: 1 commit2026-08-12: 9 commits2026-08-13: 9 commits2026-08-14: 1 commit2026-08-15: 1 commit2026-08-16: 2 commits2026-08-17: 2 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 1 commit2026-08-21: 1 commit2026-08-22: 4 commits2026-08-23: 1 commit2026-08-24: 1 commit2026-08-25: 1 commit2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 3 commits2026-08-29: 6 commits2026-08-30: 8 commits2026-08-31: 3 commits2026-09-01: 7 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 1 commit2026-09-06: 7 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 7 commits2026-09-10: 1 commit2026-09-11: 0 commits2026-09-12: 3 commits2026-09-13: 1 commit2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 1 commit2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 1 commit2026-09-22: 1 commit2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
1,433 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    14,950 stars

  • Very active

    1,433 commits in 52 weeks

  • Continuous integration

    Automated checks passing

  • Repeat trending

    5 trending appearances

What react-doctor does

React Doctor operates as an automated, specialized code reviewer that strictly analyzes React-based codebases. It deterministically flags performance bottlenecks like unnecessary re-renders, improper hook dependencies, and bloated components across frameworks like Next.js and Vite. The tool provides a CLI for local audits, a GitHub Action for scanning pull requests dynamically, and an installable skill for AI coding agents. It surfaces actionable health reports with exact code snippets to help engineers quickly remediate architectural debt. The tool leverages deep AST analysis to aggressively root out performance bottlenecks like unnecessary re-renders. It functions proactively within the CI/CD pipeline, catching architectural flaws before they are merged into production.

Frontend engineers, technical leads, and DevOps teams looking to enforce strict performance and architectural standards in large React codebases.

  • Deterministic scanning: Reliably uncovers structural and performance issues in React applications without false positives.
  • Hook dependency checking: Automatically flags missing or incorrect dependency arrays in useEffect and useMemo implementations.
  • Dynamic PR auditing: Integrates into CI pipelines to report only new regressions introduced by a specific pull request.
  • Agent skill capability: Installs into AI assistants like Cursor or Claude Code to guide them toward writing optimized React.
  • Broad framework support: Works seamlessly across Next.js, Vite, Astro, React Native, and Expo environments.
  • AST Deep Analysis: Parses component trees to identify structural flaws beyond simple regex matching
  • Proactive Tech Debt Prevention: Integrates into workflows to block poorly structured code from merging

Where teams use it

Pre-Release Optimization

Frontend engineers run the CLI locally to catch and fix excessive re-renders before deploying a major feature update.

Automated PR Review

Engineering teams configure the GitHub Action to automatically block pull requests that degrade React performance.

AI Agent Training

Developers install the skill into Claude Code to ensure the AI generates code adhering to strict memoization standards.

Legacy Code Auditing

Tech leads run project-wide scans to identify architectural debt and prioritize refactoring efforts.

Legacy Code Migration

Running the tool over older components to automatically suggest modern hook implementations.

Automated PR Review

Triggering the agent on every pull request to ensure strict adherence to React performance guidelines.

Getting started: npx react-doctor@latest

README

main branch
React Doctor

version downloads

Your agent writes bad React, this catches it.

React Doctor deterministically scans your codebase and finds issues across state and effects, performance, architecture, security, accessibility, and maintainability. It highlights overly complex React functions and repeated JSX trees that are good candidates for composition.

Works across React frameworks and React-enabled sites - Next.js, Vite, Astro, 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

Pass file paths to scan only the files that another CI step selected.

npx react-doctor@latest src/a.tsx src/b.tsx
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

React Doctor reviews every pull request and reports only the issues your change introduced, not your existing backlog. Set it up with one command:

npx react-doctor@latest ci install

This adds the workflow, scans every pull request, and posts a summary comment. Change the gate, scan scope, and comments anytime with react-doctor ci config, and bump the action with react-doctor ci upgrade. GitHub Actions is fully supported; GitLab CI gets a gate-only scaffold.

CI docs →

4. Configure rules

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

Learn more →

Runtime performance traces

Record a Chrome DevTools performance trace while you interact with a running React app:

npx react-doctor@latest scan http://localhost:3000

React Doctor opens system Chrome in a temporary isolated profile, records until you press Enter (up to five minutes), and flashes purple outlines with component names as React renders. It then returns a readable summary plus the path to a compressed DevTools trace. Use --format json or --format jsonl for coding agents. In an interactive terminal, you can run react-doctor scan without a URL and choose a detected localhost app or enter another URL; coding agents and CI must pass the URL explicitly.

An already-open normal browser is left alone. To reuse an authenticated session, start a dedicated Chrome profile with remote debugging, sign in, close its non-blank tabs, and pass its endpoint:

npx react-doctor@latest scan https://app.example.com --cdp http://127.0.0.1:9222

Chrome performance tracing is browser-wide, so React Doctor rejects attached profiles with open pages. It closes blank startup tabs before tracing and closes its scan tab afterward; the attached browser stays open. The trace is stored locally and is never uploaded, but it can contain page URLs, source paths, and React profiling details. Treat it as sensitive application data.

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

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

222 total
  1. ### Patch Changes - [#1783](https://github.com/millionco/react-doctor/pull/1783) [`1239043`](https://github.com/millionco/react-doctor/commit/1239043c65a55c1e1755087536fdb3f3f18c5734) Thanks [@aidenybai](https://github.com/aidenybai)! - Upgrade oxlint to 1.81 and oxc-parser to 0.148. - [#1777](https://github.com/millionco/react-doctor/pull/1777) [`52ab4f5`](https://github.com/millionco/react-doctor/commit/52ab4f5bb2631b8df24f71e82a749e8d30802234) Thanks [@aidenybai](https://github.com/aidenybai)! - Detect React Compiler when `@vitejs/plugin-react` is called with an enabled `compiler` option (`react({ compiler: true })` or `react({ compiler: { ... } })`), including aliased, namespace, and CommonJS forms of the default export. `compiler: false` and unrelated objects with a `compiler` property stay undetected, so rules disabled under React Compiler now switch off for these Vite projects. - [#1778](https://github.com/millionco/react-doctor/pull/1778) [`1279996`](https://github.com/millionco/react-doctor/commit/1279996ea1936d8fc31489f0bc03ddfc18934dd0) Thanks [@aidenybai](https://github.com/aidenybai)! - Skip source files that Git still tracks but that no longer exist in the working

  2. ### Patch Changes - [#1783](https://github.com/millionco/react-doctor/pull/1783) [`1239043`](https://github.com/millionco/react-doctor/commit/1239043c65a55c1e1755087536fdb3f3f18c5734) Thanks [@aidenybai](https://github.com/aidenybai)! - Upgrade oxlint to 1.81 and oxc-parser to 0.148. - [#1762](https://github.com/millionco/react-doctor/pull/1762) [`ff7dd67`](https://github.com/millionco/react-doctor/commit/ff7dd679e8b9939a7dd8f828a530559a275836f7) Thanks [@skoshx](https://github.com/skoshx)! - Avoid `effect-needs-cleanup` diagnostics for owned chained timers, guarded post-await timers, and listeners released through an abort handler. - [#1763](https://github.com/millionco/react-doctor/pull/1763) [`0fbef9b`](https://github.com/millionco/react-doctor/commit/0fbef9b01162d301167be6ca6b5263714610f4e5) Thanks [@skoshx](https://github.com/skoshx)! - Fix an `async-defer-await` false positive on exact `live` and `isLive` liveness guards without exempting unrelated names that only contain the same text. - [#1761](https://github.com/millionco/react-doctor/pull/1761) [`6ac8b71`](https://github.com/millionco/react-doctor/commit/6ac8b71985123ce43f7219965e188bdecf11f7b8) Thanks [@skoshx](https

  3. ### Patch Changes - [#1801](https://github.com/millionco/react-doctor/pull/1801) [`fd64d26`](https://github.com/millionco/react-doctor/commit/fd64d2605481e241ada5561b01a635f2cd923b6a) Thanks [@aidenybai](https://github.com/aidenybai)! - Stop reporting local service `.use()` methods as React hooks. Preserve diagnostics for React namespace calls, including aliases and CommonJS imports. Only recommend `setAnimationLoop` when a recursive animation frame callback renders through a known Three.js renderer. Leave independent 2D canvas and DOM loops alone, including files that also import Three.js. - [#1802](https://github.com/millionco/react-doctor/pull/1802) [`c9e3e15`](https://github.com/millionco/react-doctor/commit/c9e3e1590e06ed3b776af5f21dda38a060b9eef9) Thanks [@aidenybai](https://github.com/aidenybai)! - Retire 33 low-value rule IDs while keeping them registered as silent compatibility entries. Make 26 cleanup, migration, performance, and security-review rules opt-in. Existing rule configurations still load; default scans no longer report these recommendations as defects. - Updated dependencies [[`1239043`](https://github.com/millionco/react-doctor/commit/1239043c65a55c1e175

  4. ### Patch Changes - [`28a1a9f`](https://github.com/millionco/react-doctor/commit/28a1a9fd35d41b6871a6696ea8e04494aab907ba) Thanks [@aidenybai](https://github.com/aidenybai)! - Add bippy as a runtime dependency. - [#1695](https://github.com/millionco/react-doctor/pull/1695) [`ac87f7d`](https://github.com/millionco/react-doctor/commit/ac87f7d7f64d77cc0a648ee863dd50b3c69c0257) Thanks [@skoshx](https://github.com/skoshx)! - Preserve plugin settings when React Doctor adopts an existing lint config. - [#1651](https://github.com/millionco/react-doctor/pull/1651) [`ffc2d14`](https://github.com/millionco/react-doctor/commit/ffc2d142545167107b11908f004d764ac4e31399) Thanks [@aidenybai](https://github.com/aidenybai)! - Upgrade the Oxc parser and Oxlint runtime while preserving hard failures for broken JS plugins. - [#1689](https://github.com/millionco/react-doctor/pull/1689) [`1d3e4a6`](https://github.com/millionco/react-doctor/commit/1d3e4a606192ac949360371d98838abb1fb9e47d) Thanks [@skoshx](https://github.com/skoshx)! - Use pnpm's strict dependency layout and declare the runtime dependencies that the CLI imports directly. - [#1646](https://github.com/millionco/react-doctor/pull/1646) [

  5. ### Patch Changes - [#1651](https://github.com/millionco/react-doctor/pull/1651) [`ffc2d14`](https://github.com/millionco/react-doctor/commit/ffc2d142545167107b11908f004d764ac4e31399) Thanks [@aidenybai](https://github.com/aidenybai)! - Upgrade the Oxc parser and Oxlint runtime while preserving hard failures for broken JS plugins. - [#1652](https://github.com/millionco/react-doctor/pull/1652) [`f7efb7d`](https://github.com/millionco/react-doctor/commit/f7efb7d1c4fc564fa647a0dc26c48867da9166c9) Thanks [@aidenybai](https://github.com/aidenybai)! - Keep ESLint presets on React Doctor's curated low-noise rule behavior and honor configured capabilities when a rule declares `disabledWhen`, including suppressing manual-memoization diagnostics for React Compiler projects. - [#1646](https://github.com/millionco/react-doctor/pull/1646) [`05ef989`](https://github.com/millionco/react-doctor/commit/05ef98926de787b01e817c8853101d6c31e2071a) Thanks [@aidenybai](https://github.com/aidenybai)! - Keep the interactive score header intact in narrow split views and invalidate locally stale scan results when rule implementations change. Report standalone Three.js render loops that use `requestAnim

Code frequency

additions and deletions
+663.6K-663.6KWeek of 2026-02-08: +663,632 linesWeek of 2026-02-08: -662,615 linesWeek of 2026-02-15: +35,573 linesWeek of 2026-02-15: -14,574 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +167 linesWeek of 2026-03-01: -32 linesWeek of 2026-03-08: +0 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +0 linesWeek of 2026-03-22: -0 linesWeek of 2026-03-29: +159 linesWeek of 2026-03-29: -29 linesWeek of 2026-04-05: +6,884 linesWeek of 2026-04-05: -6,144 linesWeek of 2026-04-12: +4,787 linesWeek of 2026-04-12: -552 linesWeek of 2026-04-19: +104 linesWeek of 2026-04-19: -3 linesWeek of 2026-04-26: +22,662 linesWeek of 2026-04-26: -3,205 linesWeek of 2026-05-03: +14,315 linesWeek of 2026-05-03: -13,218 linesWeek of 2026-05-10: +136,776 linesWeek of 2026-05-10: -118,830 linesWeek of 2026-05-17: +95,588 linesWeek of 2026-05-17: -15,212 linesWeek of 2026-05-24: +48,521 linesWeek of 2026-05-24: -17,739 linesWeek of 2026-05-31: +37,949 linesWeek of 2026-05-31: -8,357 linesWeek of 2026-06-07: +22,583 linesWeek of 2026-06-07: -5,251 linesWeek of 2026-06-14: +53,645 linesWeek of 2026-06-14: -3,958 linesWeek of 2026-06-21: +6,826 linesWeek of 2026-06-21: -916 linesWeek of 2026-06-28: +50,308 linesWeek of 2026-06-28: -4,809 linesWeek of 2026-07-05: +90,548 linesWeek of 2026-07-05: -12,907 linesWeek of 2026-07-12: +106,532 linesWeek of 2026-07-12: -8,567 linesWeek of 2026-07-19: +393,565 linesWeek of 2026-07-19: -109,592 linesWeek of 2026-07-26: +62,321 linesWeek of 2026-07-26: -4,680 linesWeek of 2026-08-02: +222,619 linesWeek of 2026-08-02: -63,584 linesWeek of 2026-08-09: +120,986 linesWeek of 2026-08-09: -53,422 linesWeek of 2026-08-16: +10,153 linesWeek of 2026-08-16: -539 linesWeek of 2026-08-23: +1,167 linesWeek of 2026-08-23: -74 linesWeek of 2026-08-30: +3,069 linesWeek of 2026-08-30: -514 linesWeek of 2026-09-06: +9,704 linesWeek of 2026-09-06: -13,846 linesWeek of 2026-09-13: +2,527 linesWeek of 2026-09-13: -429 linesFeb 8, 2026Sep 13, 2026
+2.2M lines added, -1.1M removed over the last year.

Commits per week

last 52 weeks
2060Week of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 5 commitsWeek of 2026-02-15: 161 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 3 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 1 commitsWeek of 2026-04-05: 6 commitsWeek of 2026-04-12: 19 commitsWeek of 2026-04-19: 1 commitsWeek of 2026-04-26: 20 commitsWeek of 2026-05-03: 59 commitsWeek of 2026-05-10: 63 commitsWeek of 2026-05-17: 76 commitsWeek of 2026-05-24: 206 commitsWeek of 2026-05-31: 85 commitsWeek of 2026-06-07: 64 commitsWeek of 2026-06-14: 53 commitsWeek of 2026-06-21: 34 commitsWeek of 2026-06-28: 54 commitsWeek of 2026-07-05: 84 commitsWeek of 2026-07-12: 173 commitsWeek of 2026-07-19: 54 commitsWeek of 2026-07-26: 58 commitsWeek of 2026-08-02: 64 commitsWeek of 2026-08-09: 26 commitsWeek of 2026-08-16: 10 commitsWeek of 2026-08-23: 12 commitsWeek of 2026-08-30: 19 commitsWeek of 2026-09-06: 18 commitsWeek of 2026-09-13: 3 commitsWeek of 2026-09-20: 2 commitsSep 27, 2025Sep 20, 2026
1.4K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 35 commitsSun 1:00 — 16 commitsSun 2:00 — 12 commitsSun 3:00 — 10 commitsSun 4:00 — 6 commitsSun 5:00 — 1 commitsSun 6:00 — 1 commitsSun 7:00 — 4 commitsSun 8:00 — 8 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 3 commitsSun 16:00 — 5 commitsSun 17:00 — 9 commitsSun 18:00 — 8 commitsSun 19:00 — 15 commitsSun 20:00 — 6 commitsSun 21:00 — 11 commitsSun 22:00 — 3 commitsSun 23:00 — 16 commitsMon 0:00 — 25 commitsMon 1:00 — 8 commitsMon 2:00 — 12 commitsMon 3:00 — 22 commitsMon 4:00 — 13 commitsMon 5:00 — 14 commitsMon 6:00 — 18 commitsMon 7:00 — 15 commitsMon 8:00 — 5 commitsMon 9:00 — 2 commitsMon 10:00 — 3 commitsMon 11:00 — 8 commitsMon 12:00 — 8 commitsMon 13:00 — 13 commitsMon 14:00 — 18 commitsMon 15:00 — 17 commitsMon 16:00 — 14 commitsMon 17:00 — 14 commitsMon 18:00 — 3 commitsMon 19:00 — 4 commitsMon 20:00 — 2 commitsMon 21:00 — 4 commitsMon 22:00 — 10 commitsMon 23:00 — 12 commitsTue 0:00 — 17 commitsTue 1:00 — 7 commitsTue 2:00 — 4 commitsTue 3:00 — 6 commitsTue 4:00 — 8 commitsTue 5:00 — 4 commitsTue 6:00 — 5 commitsTue 7:00 — 13 commitsTue 8:00 — 4 commitsTue 9:00 — 6 commitsTue 10:00 — 6 commitsTue 11:00 — 5 commitsTue 12:00 — 9 commitsTue 13:00 — 6 commitsTue 14:00 — 6 commitsTue 15:00 — 11 commitsTue 16:00 — 8 commitsTue 17:00 — 9 commitsTue 18:00 — 6 commitsTue 19:00 — 7 commitsTue 20:00 — 12 commitsTue 21:00 — 9 commitsTue 22:00 — 30 commitsTue 23:00 — 15 commitsWed 0:00 — 15 commitsWed 1:00 — 7 commitsWed 2:00 — 4 commitsWed 3:00 — 7 commitsWed 4:00 — 8 commitsWed 5:00 — 1 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 1 commitsWed 9:00 — 3 commitsWed 10:00 — 7 commitsWed 11:00 — 3 commitsWed 12:00 — 0 commitsWed 13:00 — 0 commitsWed 14:00 — 4 commitsWed 15:00 — 7 commitsWed 16:00 — 9 commitsWed 17:00 — 9 commitsWed 18:00 — 3 commitsWed 19:00 — 5 commitsWed 20:00 — 4 commitsWed 21:00 — 8 commitsWed 22:00 — 7 commitsWed 23:00 — 22 commitsThu 0:00 — 20 commitsThu 1:00 — 11 commitsThu 2:00 — 10 commitsThu 3:00 — 26 commitsThu 4:00 — 11 commitsThu 5:00 — 17 commitsThu 6:00 — 3 commitsThu 7:00 — 1 commitsThu 8:00 — 1 commitsThu 9:00 — 0 commitsThu 10:00 — 5 commitsThu 11:00 — 3 commitsThu 12:00 — 5 commitsThu 13:00 — 2 commitsThu 14:00 — 3 commitsThu 15:00 — 7 commitsThu 16:00 — 4 commitsThu 17:00 — 6 commitsThu 18:00 — 4 commitsThu 19:00 — 15 commitsThu 20:00 — 18 commitsThu 21:00 — 15 commitsThu 22:00 — 11 commitsThu 23:00 — 10 commitsFri 0:00 — 13 commitsFri 1:00 — 21 commitsFri 2:00 — 17 commitsFri 3:00 — 16 commitsFri 4:00 — 8 commitsFri 5:00 — 6 commitsFri 6:00 — 11 commitsFri 7:00 — 18 commitsFri 8:00 — 1 commitsFri 9:00 — 9 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 4 commitsFri 14:00 — 2 commitsFri 15:00 — 7 commitsFri 16:00 — 12 commitsFri 17:00 — 32 commitsFri 18:00 — 21 commitsFri 19:00 — 20 commitsFri 20:00 — 10 commitsFri 21:00 — 12 commitsFri 22:00 — 9 commitsFri 23:00 — 5 commitsSat 0:00 — 13 commitsSat 1:00 — 14 commitsSat 2:00 — 11 commitsSat 3:00 — 13 commitsSat 4:00 — 12 commitsSat 5:00 — 8 commitsSat 6:00 — 5 commitsSat 7:00 — 2 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 1 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 2 commitsSat 14:00 — 2 commitsSat 15:00 — 3 commitsSat 16:00 — 14 commitsSat 17:00 — 6 commitsSat 18:00 — 2 commitsSat 19:00 — 20 commitsSat 20:00 — 16 commitsSat 21:00 — 24 commitsSat 22:00 — 11 commitsSat 23:00 — 12 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Feb 21, 2026daily#25+141
Feb 20, 2026daily#13+145
Feb 19, 2026daily#5+312
Feb 18, 2026daily#4+406
Feb 17, 2026daily#13+174
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • react/react

    The library for web and native user interfaces.

    250.9K stars · JavaScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript