vitejs/vite

12 rules learned from 1,159 merged PRs: the files and habits in vitejs/vite that kept needing a fix after merge.

Merged PRs read
1,159
Needed a fix
48 (4.2%)
Reverted
5
Merged between
2025-11-06 and 2026-11-11

Tested on PRs the rules had never seen

13 of the 75 code PRs that breached a rule needed a fix (17%), against 1 of the 18 that breached none (6%).

Rules were learned from older PRs, then tested on later PRs they hadn't seen. How we tested

PRTitle and the rule it breachedWhat happened
feat(create-vite): use typescript v7 where possibleHotspot: packages/create-vite/src/index.ts (4 of 39 earlier PRs needed a fix) fixed in #23931, 3 days later
refactor(dev): share ModuleURL and BrowserURL conversionsHotspot: packages/vite/src/node/plugins/asset.ts (4 of 13 earlier PRs needed a fix) fixed in #23912, 6 days later
feat(create-vite): use typescript v7 where possibleHotspot: packages/create-vite/src/index.ts (4 of 39 earlier PRs needed a fix) fixed in #23841, 1 day later

Fix-prone files and folders

PRs that touched these paths needed a follow-up fix more often than the 5% repo average. Counts are PRs that touched the path.

  1. Hotspot: packages/vite/src/node/server/bundledDev.ts

    6 of 16 earlier PRs that changed this needed a fix.

    10 clean, 6 fixed (38%)
  2. Hotspot: packages/vite/src/node/plugins/asset.ts

    5 of 14 earlier PRs that changed this needed a fix.

    9 clean, 5 fixed (36%)
  3. Hotspot: packages/vite/rolldown.config.ts

    6 of 19 earlier PRs that changed this needed a fix.

    13 clean, 6 fixed (32%)
  4. Hotspot: packages/vite/src/node/build.ts

    10 of 36 earlier PRs that changed this needed a fix.

    26 clean, 10 fixed (28%)
  5. Hotspot: packages/vite/src/node/plugins/importAnalysisBuild.ts

    5 of 18 earlier PRs that changed this needed a fix.

    13 clean, 5 fixed (28%)
  6. Hotspot: packages/vite/src/node/plugins/html.ts

    4 of 17 earlier PRs that changed this needed a fix.

    13 clean, 4 fixed (24%)
  7. Hotspot: packages/vite/src/node/optimizer/index.ts

    5 of 22 earlier PRs that changed this needed a fix.

    17 clean, 5 fixed (23%)
  8. Hotspot: packages/vite/src/node/utils.ts

    6 of 30 earlier PRs that changed this needed a fix.

    24 clean, 6 fixed (20%)
  9. Hotspot: packages/vite/src/node/plugins/css.ts

    6 of 34 earlier PRs that changed this needed a fix.

    28 clean, 6 fixed (18%)
  10. Hotspot: packages/vite/src/node/server/index.ts

    4 of 26 earlier PRs that changed this needed a fix.

    22 clean, 4 fixed (15%)
  11. Hotspot: packages/create-vite/src/index.ts

    6 of 47 earlier PRs that changed this needed a fix.

    41 clean, 6 fixed (13%)
  12. Fragile area: packages/vite/

    40 of 457 earlier PRs that changed this needed a fix.

    417 clean, 40 fixed (9%)

Conventions

Habits most PRs here follow, where PRs that broke them needed a fix more often. Counts on each bar are the PRs that broke it.

No habit here made the list.

Recent PRs that needed a fix

Rules flagged 104 recent PRs, and 20 of those needed a fix (19%), against 7% of all recent PRs. These are the 15 with the strongest rule that needed a fix, with the PR that fixed each.

PRTitleSizeRule it breachedWhat happened
feat: update rolldown-related dependencies and use client-side HMR in bundled-dev +1,173 -652 touches packages/vite/src/node/server/bundledDev.ts10 clean, 6 fixed fixed in #23024, 2 days later
feat(bundled-dev): client-side HMR +723 -252 touches packages/vite/src/node/server/bundledDev.ts10 clean, 6 fixed fixed in #23005, 1 day later
fix(bundled-dev): serve the rolldown runtime from the installed rolldown +117 -20 touches packages/vite/src/node/server/bundledDev.ts10 clean, 6 fixed fixed in #23664, 12 days later
chore: introducing `@e18e/eslint-plugin` +81 -51 touches packages/vite/src/node/server/bundledDev.ts10 clean, 6 fixed fixed in #23447, same day
fix(bundled-dev): serve assets emitted during HMR/lazy compile +71 -13 touches packages/vite/src/node/server/bundledDev.ts10 clean, 6 fixed fixed in #22797, 4 days later
chore: use oxfmt `sortImports` +957 -964 touches packages/vite/src/node/plugins/asset.ts9 clean, 5 fixed fixed in #23364, 4 days later
fix(build): make client chunkImportMap work with `sharedPlugins: true` +231 -19 touches packages/vite/src/node/plugins/asset.ts9 clean, 5 fixed fixed in #23209, 5 days later
refactor(dev): share ModuleURL and BrowserURL conversions +137 -91 touches packages/vite/src/node/plugins/asset.ts9 clean, 5 fixed fixed in #23912, 6 days later
feat: use `import.meta.ROLLDOWN_FILE_URL_*` for assets in JS +149 -16 touches packages/vite/src/node/plugins/asset.ts9 clean, 5 fixed fixed in #23422, 14 days later
feat: add `input` option +549 -23 touches packages/vite/src/node/build.ts26 clean, 10 fixed fixed in #23101, 13 days later
fix(build): handle missing chunk import maps +80 -9 touches packages/vite/src/node/plugins/importAnalysisBuild.ts13 clean, 5 fixed fixed in #23793, 6 days later
fix(build): keep `magicString` and `ast` in transform hook meta +71 -3 touches packages/vite/src/node/build.ts26 clean, 10 fixed reverted
fix(build): preload CSS correctly when `renderBuiltUrl` returns URLs with queries +37 -14 touches packages/vite/src/node/plugins/importAnalysisBuild.ts13 clean, 5 fixed fixed in #23662, 8 days later
fix: merge `build.rolldownOptions.output.comments` correctly +13 -13 touches packages/vite/src/node/build.ts26 clean, 10 fixed fixed in #23536, 12 days later
fix(optimizer): fall back to yarn.lock for lockfile hash +63 -7 touches packages/vite/src/node/optimizer/index.ts17 clean, 5 fixed fixed in #23725, 12 days later

Get this for your own repo

Precall reads your repo's history the same way and comments on new PRs that touch the spots that kept breaking.