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
| PR | Title and the rule it breached | What 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.
- Hotspot: packages/vite/src/node/server/bundledDev.ts
6 of 16 earlier PRs that changed this needed a fix.
10 clean, 6 fixed (38%) - Hotspot: packages/vite/src/node/plugins/asset.ts
5 of 14 earlier PRs that changed this needed a fix.
9 clean, 5 fixed (36%) - Hotspot: packages/vite/rolldown.config.ts
6 of 19 earlier PRs that changed this needed a fix.
13 clean, 6 fixed (32%) - Hotspot: packages/vite/src/node/build.ts
10 of 36 earlier PRs that changed this needed a fix.
26 clean, 10 fixed (28%) - Hotspot: packages/vite/src/node/plugins/importAnalysisBuild.ts
5 of 18 earlier PRs that changed this needed a fix.
13 clean, 5 fixed (28%) - Hotspot: packages/vite/src/node/plugins/html.ts
4 of 17 earlier PRs that changed this needed a fix.
13 clean, 4 fixed (24%) - Hotspot: packages/vite/src/node/optimizer/index.ts
5 of 22 earlier PRs that changed this needed a fix.
17 clean, 5 fixed (23%) - Hotspot: packages/vite/src/node/utils.ts
6 of 30 earlier PRs that changed this needed a fix.
24 clean, 6 fixed (20%) - Hotspot: packages/vite/src/node/plugins/css.ts
6 of 34 earlier PRs that changed this needed a fix.
28 clean, 6 fixed (18%) - Hotspot: packages/vite/src/node/server/index.ts
4 of 26 earlier PRs that changed this needed a fix.
22 clean, 4 fixed (15%) - Hotspot: packages/create-vite/src/index.ts
6 of 47 earlier PRs that changed this needed a fix.
41 clean, 6 fixed (13%) - 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.
| PR | Title | Size | Rule it breached | What 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.