Code Ownership

Ownership is measured by how many commits each author made to each file in the current tree. It highlights bus-factor risk (files only one person has ever touched) and where knowledge is concentrated. The bus factor is the smallest number of people who are, between them, primary owner of more than half of the files.

Files Tracked
7,300
in the current tree
Bus Factor
3
3 authors are primary owner of 4,250 of 7,300 files
Single-Owner Files
2,634
36.1% of tracked files
Contributors
810
authors who changed files

Bus factor risk — single-owner files

Files only one author has ever changed. The more a file has changed, the more knowledge is at risk if that person leaves.

FileSole ownerCommits
compiler/scripts/release/publish.jslauren15
packages/react-devtools-facade/src/__tests__/DevToolsFacade-test.jsRuslan Lesiutin11
packages/react-server/src/ReactFlightAsyncSequence.jsSebastian Markbåge9
packages/react-devtools-facade/src/DevToolsFacadeTreeTools.jsRuslan Lesiutin8
packages/react-devtools-cdt-mcp/package.jsonRuslan Lesiutin8
fixtures/dom/src/components/fixtures/fragment-refs/index.jsJack Pope8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.expect.mdJoseph Savona8
fixtures/view-transition/src/components/SwipeRecognizer.jsSebastian Markbåge8
packages/react-devtools-cdt-mcp/src/__tests__/DevToolsCdtMcp-test.jsRuslan Lesiutin7
packages/react-devtools-facade/src/DevToolsFacadeTools.jsRuslan Lesiutin7
Table: the 100 most-changed of 2,634 single-owner files
FileSole ownerCommits
compiler/scripts/release/publish.jslauren15
packages/react-devtools-facade/src/__tests__/DevToolsFacade-test.jsRuslan Lesiutin11
packages/react-server/src/ReactFlightAsyncSequence.jsSebastian Markbåge9
packages/react-devtools-facade/src/DevToolsFacadeTreeTools.jsRuslan Lesiutin8
packages/react-devtools-cdt-mcp/package.jsonRuslan Lesiutin8
fixtures/dom/src/components/fixtures/fragment-refs/index.jsJack Pope8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.expect.mdJoseph Savona8
fixtures/view-transition/src/components/SwipeRecognizer.jsSebastian Markbåge8
packages/react-devtools-cdt-mcp/src/__tests__/DevToolsCdtMcp-test.jsRuslan Lesiutin7
packages/react-devtools-facade/src/DevToolsFacadeTools.jsRuslan Lesiutin7
.github/workflows/shared_check_maintainer.ymllauren7
compiler/packages/snap/src/sprout/shared-runtime-type-provider.tsJoseph Savona7
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useCallback-aliased-var.expect.mdJoseph Savona7
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useMemo-aliased-var.expect.mdJoseph Savona7
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-capture-in-invoked-function-inferred-as-mutation.expect.mdJoseph Savona7
compiler/apps/playground/components/AccordionWindow.tsxEugene Choi7
packages/react-dom/src/__tests__/ReactDOMFizzSuspenseList-test.jsSebastian Markbåge7
packages/react-devtools-extensions/firefox/build.jsBrian Vaughn7
packages/react-devtools-extensions/chrome/build.jsBrian Vaughn7
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-ReactUseMemo-async-callback.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-useMemo-async-callback.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.invalid-reassign-local-variable-in-jsx-callback.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.invalid-referencing-frozen-hoisted-storecontext-const.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-uncalled-function-capturing-mutable-values-memoizes-with-captures-values.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.invalid-useCallback-captures-reassigned-context.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-optional-member-expression-as-memo-dep-non-optional-in-body.expect.mdJoseph Savona6
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-hoisting-setstate.expect.mdJoseph Savona6
.github/ISSUE_TEMPLATE/devtools_bug_report.ymlBrian Vaughn6
packages/react-devtools-shared/src/devtools/views/Profiler/SidebarCommitInfo.cssBrian Vaughn6
packages/react-devtools-cdt-mcp/README.mdRuslan Lesiutin5
packages/react-devtools-cdt-mcp/src/DevToolsCdtMcp.jsRuslan Lesiutin5
packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseBreadcrumbs.cssSebastian "Sebbie" Silbermann5
.github/workflows/shared_close_direct_sync_branch_prs.ymllauren5
.github/workflows/shared_stale.ymllauren5
.github/workflows/runtime_fuzz_tests.ymllauren5
compiler/packages/snap/src/minimize.tsJoseph Savona5
compiler/packages/eslint-plugin-react-compiler/__tests__/PluginTest-test.tsJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-control-flow-sensitive-mutation.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-add-captured-array-to-itself.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom-lambda.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-phi-assign-or-capture.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-depslist-assignment.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useMemo-reordering-depslist-assignment.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutate-context-in-callback.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-hook-function-argument-mutates-local-variable.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-pass-mutable-function-as-prop.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-return-mutable-function-from-hook.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.mutate-hook-argument.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.mutate-frozen-value.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.mutate-hook-argument.expect.mdJoseph Savona5
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.not-useEffect-external-mutate.expect.mdJoseph Savona5
packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseScrubber.cssSebastian Markbåge5
fixtures/ssr/src/components/LargeContent.jsSebastian Markbåge5
packages/react/src/ReactTransitionType.jsSebastian Markbåge5
packages/react-devtools-shared/src/devtools/views/TabBar.cssBrian Vaughn5
packages/react-devtools-shared/src/devtools/views/Profiler/SnapshotCommitListItem.cssBrian Vaughn5
packages/react-devtools-extensions/chrome/deploy.jsBrian Vaughn5
packages/react-devtools-extensions/firefox/deploy.jsBrian Vaughn5
packages/react-devtools-cdt-mcp/e2e/run.flow.jsRuslan Lesiutin4
packages/react-devtools-facade/src/DevToolsFacade.jsRuslan Lesiutin4
packages/react-devtools-cdt-mcp/src/index.jsRuslan Lesiutin4
packages/react-devtools-extensions/src/background/tabsManager.jsRuslan Lesiutin4
packages/react-dom/src/__tests__/utils/IntersectionMocks.jsJack Pope4
fixtures/dom/src/components/fixtures/fragment-refs/FocusCase.jsJack Pope4
compiler/packages/react-forgive/server/src/compiler/index.tslauren4
compiler/scripts/release/shared/packages.jslauren4
compiler/scripts/release/shared/build-packages.jslauren4
fixtures/ssr2/package-lock.jsondan4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/error.invalid-exhaustive-deps.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/exhaustive-deps/error.invalid-missing-nonreactive-dep-unmemoized.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/docs/passes/README.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/rules-of-hooks/error.invalid-hook-for.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.jsJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity-function-expression.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-control-flow-sensitive-mutation.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-add-captured-array-to-itself.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom-lambda.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-phi-assign-or-capture.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-deplist-controlflow.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-depslist-assignment.tsxJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useMemo-reordering-depslist-assignment.tsJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-transitivity-createfrom-capture-lambda.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-array-push-frozen.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-computed-store-to-frozen-value.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-delete-computed-property-of-frozen-value.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-delete-property-of-frozen-value.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-jsx-captures-context-variable.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutate-after-aliased-freeze.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutate-after-freeze.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutate-context.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutate-props-via-for-of-iterator.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-mutation-of-possible-props-phi-indirect.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-prop-mutation-indirect.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-property-store-to-frozen-value.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-props-mutation-in-effect-indirect.expect.mdJoseph Savona4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.mutate-property-from-global.expect.mdJoseph Savona4

Ownership by author

Primary owner = the author with the most commits to a file. Solely owned = files only that author has touched.

AuthorFiles ownedSolely ownedFiles touched
Joseph Savona2,9611,1283,572
Sebastian Markbåge6691401,455
Brian Vaughn6201851,037
mofeiZ393206759
dan32358705
lauren300118639
Andrew Clark254431,386
Sebastian "Sebbie" Silbermann19485893
Nathan1587385
Mofei Zhang15291279
Josh Story13646529
Jan Kassens134192,759
Michael Vitousek11747289
Ruslan Lesiutin11161384
Rick Hanlon6913569
Dominic Gannaway4830240
Jorge Cabiedes4330104
Hendrik Liebau4134142
Jack Pope3629251
Devon Govett333078
michael faith331362
Nathan Hunzaker32974
magic-akari301851
Pieter De Baets231088
Sathya Gunasekaran211460

Showing top 25 of 810 contributors.

Most shared files

Files touched by the most people — shared code where changes are most likely to need coordination.

FileContributorsPrimary ownerOwner share
package.json108Brian Vaughn16.6%
yarn.lock68Brian Vaughn23.7%
README.md64Paul O’Shannessy30.4%
CHANGELOG.md46dan39.7%
packages/shared/ReactFeatureFlags.js45Andrew Clark15.9%
packages/shared/forks/ReactFeatureFlags.www.js44Andrew Clark15.5%
scripts/rollup/bundles.js44Sebastian Markbåge23.9%
packages/shared/forks/ReactFeatureFlags.native-fb.js43Rick Hanlon14.3%
packages/shared/forks/ReactFeatureFlags.test-renderer.js42Andrew Clark15.8%
packages/shared/forks/ReactFeatureFlags.native-oss.js42Andrew Clark15.3%
packages/shared/forks/ReactFeatureFlags.test-renderer.www.js41Andrew Clark15.3%
scripts/rollup/build.js41dan24.2%
packages/eslint-plugin-react-hooks/__tests__/ESLintRuleExhaustiveDeps-test.js39dan34.6%
packages/react-reconciler/src/ReactFiberBeginWork.js38Sebastian Markbåge26.7%
.eslintrc.js38Sebastian Markbåge22.0%
packages/react-reconciler/src/ReactFiberHooks.js37Andrew Clark30.8%
packages/react-reconciler/src/ReactFiberCommitWork.js32Sebastian Markbåge28.9%
packages/react-dom/src/__tests__/ReactDOMComponent-test.js31dan22.0%
packages/react-dom/src/__tests__/ReactDOMInput-test.js31dan18.1%
packages/react-dom/src/test-utils/ReactTestUtils.js30dan20.8%