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
34,189
in the current tree
Bus Factor
8
8 authors are primary owner of 18,250 of 34,189 files
Single-Owner Files
23,154
67.7% of tracked files
Contributors
1,950
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
packages/next/src/lib/upgrade/nudge.tsJiwon Choi19
test/unit/security-upgrade-nudge.test.tsJiwon Choi19
packages/next/src/lib/upgrade/prepare-upgrade.tsJiwon Choi16
packages/next/src/client/components/segment-cache/vary-path.tsAndrew Clark14
apps/bundle-analyzer/components/analyzer.tsxWill Binns-Smith13
apps/bundle-analyzer/components/route-typeahead.tsxWill Binns-Smith12
packages/next/src/client/components/segment-cache/decode-server-response.tsAndrew Clark11
test/unit/prepare-latest-upgrade.test.tsJiwon Choi11
packages/next/src/client/dev/debug-channel.tsHendrik Liebau9
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/export-named/output.mdDonny/강동윤9
Table: the 100 most-changed of 23,154 single-owner files
FileSole ownerCommits
packages/next/src/lib/upgrade/nudge.tsJiwon Choi19
test/unit/security-upgrade-nudge.test.tsJiwon Choi19
packages/next/src/lib/upgrade/prepare-upgrade.tsJiwon Choi16
packages/next/src/client/components/segment-cache/vary-path.tsAndrew Clark14
apps/bundle-analyzer/components/analyzer.tsxWill Binns-Smith13
apps/bundle-analyzer/components/route-typeahead.tsxWill Binns-Smith12
packages/next/src/client/components/segment-cache/decode-server-response.tsAndrew Clark11
test/unit/prepare-latest-upgrade.test.tsJiwon Choi11
packages/next/src/client/dev/debug-channel.tsHendrik Liebau9
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/export-named/output.mdDonny/강동윤9
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/3/output.mdDonny/강동윤9
test/e2e/app-dir/bfcache-regression/bfcache-regression.test.tsHendrik Liebau8
apps/bundle-analyzer/components/compare-layout.tsxWill Binns-Smith8
apps/bundle-analyzer/components/top-bar.tsxWill Binns-Smith8
apps/bundle-analyzer/components/sidebar.tsxWill Binns-Smith8
scripts/upload-preview-tarballs.jsSebastian "Sebbie" Silbermann7
packages/next/src/server/app-render/segment-explorer-path.tsJiachi Liu7
apps/bundle-analyzer/components/diff-table.tsxWill Binns-Smith7
evals/eval.config.jsonAurora Scharff7
packages/next/src/client/components/app-router-state.tsAndrew Clark7
test/production/adapter-config/my-adapter.mjsJJ Kasper7
test/e2e/app-dir/app-static/app/api/revalidate-tag-node/route.tsJJ Kasper7
test/e2e/app-dir/app-static/app/api/revalidate-path-node/route.tsJJ Kasper7
turbopack/crates/turbopack-trace-size/src/lib.rsTobias Koppers6
turbopack/crates/turbo-tasks-backend/tests/gc_resurrection.rsLuke Sandberg6
turbopack/crates/turbo-tasks-backend/src/backend/cell_data.rsLuke Sandberg6
turbopack/crates/turbo-tasks-backend/src/backend/counter_map.rsLuke Sandberg6
packages/next/src/next-devtools/shared/stack-frame.tsSebastian "Sebbie" Silbermann6
test/e2e/app-dir/server-source-maps/fixtures/default/app/rsc-error-log/page.jsSebastian "Sebbie" Silbermann6
test/production/app-dir/adapter-dynamic-routes/dynamic-routes-cache-components.test.tsHendrik Liebau6
packages/next/src/build/analyze/graph-dump.tsWill Binns-Smith6
test/e2e/app-dir/segment-cache/vary-params/next.config.jsAndrew Clark6
test/e2e/app-dir/app-static/app/api/revalidate-path-edge/route.tsJJ Kasper6
test/e2e/app-dir/app-static/app/api/revalidate-tag-edge/route.tsJJ Kasper6
docs/02-pages/04-api-reference/03-functions/get-static-paths.mdxDelba de Oliveira6
packages/next/src/shared/lib/router/utils/get-segment-param.tsxWyatt Johnson6
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/assign-before-decl-fn/output.mdDonny/강동윤6
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/assign-before-decl-var/output.mdDonny/강동윤6
examples/cms-sanity/sanity.types.tsCody Olsen6
test/e2e/next-font/app/pages/variables.jsHannes Bornö6
test/e2e/next-font/app/pages/with-fallback.jsHannes Bornö6
test/e2e/next-font/app/pages/with-google-fonts.jsHannes Bornö6
turbopack/crates/turbopack-trace-server/src/query_tests.rsTobias Koppers5
turbopack/crates/turbopack-core/src/module_graph/style_groups_graph/algorithm.rsTobias Koppers5
turbopack/crates/turbopack-core/src/module_graph/style_groups_graph/tests.rsTobias Koppers5
turbopack/crates/turbo-tasks-backend/tests/gc_fixture.rsLuke Sandberg5
turbopack/crates/turbo-tasks-backend/tests/gc_stress.rsLuke Sandberg5
turbopack/crates/turbo-tasks-backend/tests/util.rsLuke Sandberg5
turbopack/crates/turbo-tasks-fs/src/path_map.rsBenjamin Woodruff ‮5
test/e2e/app-dir/server-source-maps/fixtures/default/app/rsc-error-log-cause/page.jsSebastian "Sebbie" Silbermann5
test/e2e/app-dir/server-source-maps/fixtures/default/app/rsc-error-log-custom-name/page.jsSebastian "Sebbie" Silbermann5
test/e2e/app-dir/server-source-maps/fixtures/default/app/rsc-error-log-ignore-listed/page.jsSebastian "Sebbie" Silbermann5
crates/next-custom-transforms/tests/errors/server-actions/server-graph/14/output.stderrHendrik Liebau5
crates/next-custom-transforms/tests/errors/server-actions/server-graph/23/output.jsHendrik Liebau5
test/e2e/app-dir/rsc-basic/app/shared/page.jsJiachi Liu5
packages/next/analyze/graph-v1.schema.jsonWill Binns-Smith5
apps/bundle-analyzer/lib/use-analyzer-route.tsWill Binns-Smith5
docs/01-app/02-guides/building.mdxAurora Scharff5
packages/next/src/agent-feedback/protocol.mdAurora Scharff5
packages/next/src/cli/internal/agent-feedback-instructions.test.tsAurora Scharff5
packages/next/src/shared/lib/segment-cache/vary-params-decoding.tsAndrew Clark5
test/e2e/app-dir/instant-validation/app/suspense-in-root/static/route-group-shared-boundary/(outer)/(inner)/page.tsxJosh Story5
packages/next/src/server/app-render/stream-ops.tsTim Neutkens5
examples/image-component/styles.module.cssSteven5
rspack/crates/binding/Cargo.tomlCong-Cong Pan5
rspack/crates/binding/package.jsonCong-Cong Pan5
packages/next-routing/src/__tests__/resolve-routes.test.tsJJ Kasper5
packages/next-routing/src/resolve-routes.tsJJ Kasper5
test/e2e/app-dir/app-static/app/variable-revalidate/revalidate-360/page.jsJJ Kasper5
docs/02-pages/04-api-reference/03-functions/get-static-props.mdxDelba de Oliveira5
turbopack/crates/turbopack-ecmascript/tests/tree-shaker/analyzer/route-kind/output.mdDonny/강동윤5
examples/cms-sanity/app/(blog)/posts/[slug]/page.tsxCody Olsen5
test/e2e/next-font/app/components/CompWithFonts.jsHannes Bornö5
test/e2e/app-dir/otel-middleware-trace/otel-middleware-trace.test.tsTobias Koppers4
turbopack/crates/turbo-tasks-backend/tests/gc_cross_session.rsLuke Sandberg4
turbopack/scripts/analyze_cache_effectiveness.pyLuke Sandberg4
test/e2e/app-dir/back-before-hydration/app/search/page.tsxdan4
test/e2e/app-dir/back-before-hydration/back-before-hydration.test.tsdan4
test/e2e/app-dir/turbopack-additional-roots/turbopack-additional-roots.test.tsBenjamin Woodruff ‮4
test/development/app-dir/react-performance-track/instrumentation-client.tsSebastian "Sebbie" Silbermann4
test/e2e/app-dir/server-source-maps/fixtures/default/app/ssr-error-log-ignore-listed/page.jsSebastian "Sebbie" Silbermann4
packages/next/src/server/node-environment-extensions/error-inspect.tsxSebastian "Sebbie" Silbermann4
test/e2e/app-dir/server-source-maps/fixtures/default/app/layout.jsSebastian "Sebbie" Silbermann4
turbopack/crates/turbopack-tracing/tests/node-file-trace/test/unit/asset-fs-extra/output.jsNiklas Mischkulnig4
.config/ast-grep/rules/no-map-async-cell.ymlNiklas Mischkulnig4
test/production/app-dir/adapter-dynamic-routes/dynamic-routes-legacy.test.tsHendrik Liebau4
test/production/app-dir/adapter-dynamic-routes/dynamic-routes-base-path.test.tsHendrik Liebau4
test/e2e/app-dir/bfcache-regression/app/layout.tsxHendrik Liebau4
test/production/app-dir/no-mangling/no-mangling.test.tsHendrik Liebau4
crates/next-custom-transforms/tests/errors/server-actions/server-graph/15/output.stderrHendrik Liebau4
test/e2e/app-dir/sitemap-group/sitemap-group.test.tsJiachi Liu4
test/e2e/app-dir/metadata-icons/metadata-icons.test.tsJiachi Liu4
test/development/app-dir/segment-explorer-globals/segment-explorer-globals.test.tsJiachi Liu4
test/e2e/app-dir/metadata-streaming/metadata-streaming-customized-rule.test.tsJiachi Liu4
test/e2e/app-dir/metadata-streaming-static-generation/app/layout.tsxJiachi Liu4
packages/next-codemod/transforms/__testfixtures__/next-async-request-api-dynamic-apis/async-api-15.output.jsJiachi Liu4
packages/next-codemod/transforms/__testfixtures__/next-async-request-api-dynamic-apis/async-api-16.output.jsJiachi Liu4
packages/next-codemod/transforms/__testfixtures__/next-async-request-api-dynamic-apis/async-api-type-cast-02.output.jsJiachi Liu4
packages/next-codemod/transforms/__tests__/next-async-request-api-dynamic-props.test.jsJiachi Liu4
test/e2e/rsc-layers-transform/next.config.jsJiachi Liu4

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
Tim Neutkens5,1163,6906,657
Niklas Mischkulnig2,7522,2973,908
Tobias Koppers2,6061,7513,572
Jiachi Liu1,9831,6233,389
Josh Story1,6111,1712,642
Steven1,5781202,552
Hendrik Liebau1,4051,1332,341
Jiwon Choi1,1999871,975
Zack Tanner1,1707342,023
Sebastian "Sebbie" Silbermann1,1265772,496
Wyatt Johnson1,0246541,595
Luke Sandberg8926582,088
Janka Uryga8676821,585
JJ Kasper7985672,295
hrmny6774711,112
Sam Poder621537858
Andrew Clark6105161,223
Will Binns-Smith4592481,214
Benjamin Woodruff ‮4492331,475
Delba de Oliveira407258658
Shu Ding388244796
dan380350464
Jude Gao367325649
Aurora Scharff362284654
Donny/강동윤246137856

Showing top 25 of 1950 contributors.

Most shared files

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

FileContributorsPrimary ownerOwner share
package.json178Tim Neutkens16.4%
packages/next/package.json143nextjs-bot39.2%
pnpm-lock.yaml110nextjs-bot56.1%
packages/next/README.md110Tim Neutkens11.3%
readme.md93Tim Neutkens23.7%
packages/next/src/server/config-shared.ts72JJ Kasper10.5%
packages/next/taskfile.js60JJ Kasper17.9%
packages/next/src/server/config.ts59Jiachi Liu9.8%
packages/next/src/build/index.ts57JJ Kasper15.8%
packages/next/src/server/config-schema.ts53JJ Kasper10.7%
packages/next/src/server/app-render/app-render.tsx49Josh Story14.3%
packages/next/src/server/base-server.ts47Wyatt Johnson20.2%
packages/next/src/build/webpack-config.ts47Jiachi Liu18.6%
packages/create-next-app/index.ts47JJ Kasper11.4%
packages/next/src/server/next-server.ts46JJ Kasper20.0%
packages/next/src/server/lib/start-server.ts44Tim Neutkens13.2%
packages/next/src/build/utils.ts42Wyatt Johnson17.6%
contributing.md41JJ Kasper14.7%
packages/create-next-app/create-app.ts39Balázs Orbán11.3%
examples/with-docker/Dockerfile39JJ Kasper6.2%