Files that are both large and changed often are where bugs tend to cluster and where refactoring pays off first. Each file in the current tree is placed by its size and by the number of commits that changed it; its hotspot score is changes × √lines. Files without counted lines, such as binary files, are left out.
Each dot is a file; a bigger dot is a higher score. The dashed lines mark the median file size and the median number of changes, so the large files that change often are in the top right. Both axes are logarithmic. Showing the 2,000 highest-scoring of 32,766 files.
The files ranked by hotspot score: the larger a file is and the more often it changes, the higher it ranks. Authors is how many people have changed the file, bots aside, as on the Code Ownership page: a hotspot only one person has changed is also a bus-factor risk.
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pnpm-lock.yaml | 37,462 | 3,655 | 110 | 707,429.0 | |
| packages/next/package.json | 380 | 4,818 | 143 | 93,920.1 | |
| Cargo.lock | 11,946 | 802 | 34 | 87,656.8 | |
| packages/next/src/server/app-render/app-render.tsx | 11,276 | 755 | 49 | 80,172.3 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js | 34,165 | 347 | 12 | 64,138.7 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js | 34,081 | 302 | 6 | 55,752.3 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js | 33,682 | 302 | 6 | 55,425.0 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js | 31,684 | 302 | 7 | 53,756.0 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js | 31,284 | 302 | 7 | 53,415.6 | |
| packages/next/src/build/index.ts | 4,954 | 692 | 57 | 48,706.2 |
| File | Lines | Changes | Authors | Score | |
|---|---|---|---|---|---|
| pnpm-lock.yaml | 37,462 | 3,655 | 110 | 707,429.0 | |
| packages/next/package.json | 380 | 4,818 | 143 | 93,920.1 | |
| Cargo.lock | 11,946 | 802 | 34 | 87,656.8 | |
| packages/next/src/server/app-render/app-render.tsx | 11,276 | 755 | 49 | 80,172.3 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js | 34,165 | 347 | 12 | 64,138.7 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js | 34,081 | 302 | 6 | 55,752.3 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js | 33,682 | 302 | 6 | 55,425.0 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js | 31,684 | 302 | 7 | 53,756.0 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js | 31,284 | 302 | 7 | 53,415.6 | |
| packages/next/src/build/index.ts | 4,954 | 692 | 57 | 48,706.2 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js | 21,086 | 316 | 10 | 45,886.4 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js | 22,885 | 302 | 6 | 45,685.9 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js | 20,792 | 302 | 7 | 43,546.7 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js | 20,619 | 302 | 6 | 43,365.1 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js | 18,679 | 302 | 7 | 41,274.7 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js | 11,459 | 363 | 13 | 38,858.0 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js | 11,291 | 364 | 14 | 38,678.3 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js | 11,272 | 363 | 13 | 38,539.6 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js | 11,761 | 350 | 13 | 37,956.9 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js | 11,915 | 347 | 12 | 37,877.1 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js | 11,736 | 347 | 12 | 37,591.5 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js | 10,488 | 363 | 13 | 37,175.2 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js | 10,488 | 363 | 13 | 37,175.2 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js | 10,890 | 347 | 12 | 36,211.2 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js | 10,890 | 347 | 12 | 36,211.2 | |
| package.json | 304 | 1,862 | 178 | 32,465.1 | |
| packages/next/src/server/base-server.ts | 3,588 | 516 | 47 | 30,908.4 | |
| packages/next/src/server/config-shared.ts | 2,738 | 583 | 72 | 30,506.0 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js | 8,553 | 316 | 10 | 29,224.4 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js | 8,388 | 319 | 11 | 29,215.9 | |
| test/rspack-dev-tests-manifest.json | 24,063 | 187 | 19 | 29,007.9 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js | 8,268 | 316 | 10 | 28,733.4 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js | 8,236 | 316 | 10 | 28,677.8 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js | 8,185 | 316 | 11 | 28,588.8 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js | 8,006 | 319 | 12 | 28,542.9 | |
| test/rspack-build-tests-manifest.json | 25,704 | 177 | 17 | 28,377.5 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js | 7,897 | 316 | 11 | 28,081.4 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js | 7,880 | 316 | 11 | 28,051.1 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js | 7,422 | 316 | 10 | 27,223.7 | |
| packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js | 7,317 | 316 | 10 | 27,030.5 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js | 7,123 | 316 | 11 | 26,669.7 | |
| packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js | 7,029 | 316 | 11 | 26,493.2 | |
| packages/create-next-app/package.json | 52 | 3,544 | 29 | 25,556.1 | |
| packages/next/taskfile.js | 3,169 | 442 | 60 | 24,881.9 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js | 5,466 | 328 | 14 | 24,249.8 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js | 5,541 | 313 | 13 | 23,299.1 | |
| packages/next/src/build/webpack-config.ts | 2,952 | 424 | 47 | 23,036.9 | |
| packages/eslint-config-next/package.json | 64 | 2,866 | 31 | 22,928.0 | |
| packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js | 5,529 | 305 | 10 | 22,679.0 | |
| packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js | 5,454 | 305 | 10 | 22,524.6 | |
| packages/next-codemod/package.json | 46 | 3,109 | 16 | 21,086.3 | |
| packages/next-mdx/package.json | 28 | 3,619 | 16 | 19,149.9 | |
| packages/next-env/package.json | 36 | 3,037 | 17 | 18,222.0 | |
| packages/react-refresh-utils/package.json | 31 | 3,221 | 13 | 17,933.8 | |
| packages/next-swc/package.json | 46 | 2,615 | 25 | 17,735.8 | |
| packages/eslint-plugin-next/package.json | 30 | 3,192 | 21 | 17,483.3 | |
| turbopack/crates/turbopack-ecmascript/src/references/mod.rs | 4,568 | 253 | 18 | 17,099.5 | |
| packages/next/src/server/config.ts | 2,734 | 326 | 59 | 17,045.8 | |
| turbopack/crates/turbo-tasks-backend/src/backend/mod.rs | 4,106 | 265 | 11 | 16,980.7 | |
| packages/next/src/server/next-server.ts | 2,213 | 345 | 46 | 16,229.7 | |
| packages/font/src/google/index.ts | 30,726 | 88 | 8 | 15,425.4 | |
| packages/next-polyfill-nomodule/package.json | 21 | 3,317 | 18 | 15,200.4 | |
| packages/next-bundle-analyzer/package.json | 17 | 3,624 | 18 | 14,942.1 | |
| crates/next-api/src/project.rs | 3,059 | 268 | 27 | 14,822.6 | |
| crates/next-core/src/next_config.rs | 2,924 | 249 | 37 | 13,464.4 | |
| packages/next/src/compiled/react/cjs/react.development.js | 1,330 | 361 | 13 | 13,165.4 | |
| packages/next/src/compiled/react-experimental/cjs/react.development.js | 1,399 | 346 | 12 | 12,941.5 | |
| packages/next-polyfill-module/package.json | 18 | 3,030 | 14 | 12,855.2 | |
| packages/next/src/server/config-schema.ts | 933 | 412 | 53 | 12,584.6 | |
| turbopack/crates/turbopack-ecmascript/src/lib.rs | 3,529 | 210 | 15 | 12,475.1 | |
| packages/font/package.json | 29 | 2,310 | 16 | 12,439.7 | |
| packages/next/src/server/use-cache/use-cache-wrapper.ts | 4,121 | 191 | 18 | 12,261.2 | |
| test/e2e/app-dir/app-static/app-static.test.ts | 5,348 | 166 | 28 | 12,139.6 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js | 7,297 | 142 | 13 | 12,130.0 | |
| packages/third-parties/package.json | 38 | 1,945 | 13 | 11,989.8 | |
| packages/font/src/google/font-data.json | 19,439 | 84 | 7 | 11,711.6 | |
| packages/next/src/build/utils.ts | 1,909 | 262 | 42 | 11,447.3 | |
| crates/next-api/src/app.rs | 2,590 | 221 | 23 | 11,247.1 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.node.development.js | 7,472 | 128 | 12 | 11,064.4 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js | 6,392 | 138 | 14 | 11,033.1 | |
| Cargo.toml | 382 | 561 | 26 | 10,964.6 | |
| packages/next/src/server/dev/hot-reloader-turbopack.ts | 2,514 | 217 | 29 | 10,880.3 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js | 6,268 | 134 | 13 | 10,608.9 | |
| packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.node.development.js | 7,487 | 118 | 11 | 10,210.2 | |
| .github/workflows/build_and_test.yml | 1,291 | 282 | 30 | 10,132.4 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js | 5,621 | 135 | 14 | 10,121.4 | |
| packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js | 1,065 | 307 | 8 | 10,018.7 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.edge.development.js | 6,569 | 123 | 13 | 9,969.1 | |
| packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js | 5,461 | 134 | 14 | 9,902.4 | |
| packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js | 7,312 | 115 | 10 | 9,833.7 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.node.development.js | 5,696 | 129 | 13 | 9,735.9 | |
| turbopack/crates/turbopack-core/src/resolve/mod.rs | 4,314 | 148 | 13 | 9,720.8 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.edge.development.js | 5,536 | 128 | 13 | 9,523.8 | |
| packages/next-plugin-storybook/package.json | 9 | 3,160 | 11 | 9,480.0 | |
| packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-server.browser.development.js | 6,445 | 118 | 12 | 9,473.1 | |
| packages/next/src/build/swc/index.ts | 1,928 | 213 | 35 | 9,352.6 | |
| packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.node.development.js | 5,693 | 122 | 10 | 9,205.1 | |
| packages/next/src/compiled/react/cjs/react.react-server.development.js | 878 | 307 | 9 | 9,096.7 | |
| packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-server.edge.development.js | 6,584 | 112 | 12 | 9,087.9 | |
| packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.edge.development.js | 5,533 | 121 | 10 | 9,000.5 |
How Next.js compares with other open source web frontend projects →
How Next.js ranks among open source web frontend projects by AI-assisted commits →
Generate this report for your own repository with gitstats-action · All Gallery reports
Publishes the report to GitHub Pages on every push to main: turn on Pages for the gh-pages branch.
# .github/workflows/gitstats.yml
name: GitStats Report
on:
push:
branches: [main]
permissions:
contents: write
jobs:
gitstats:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true