Skip to content

Unfreeze vite: rolldown 1.1.5 chunk-codegen bug broke custom chunk splits (2026-07-23 outage) #9671

Description

@MarkusNeusinger

Context — 2026-07-23 white-screen outage

The npm-minor Dependabot group (#9657) bumped vite 8.0.16 → 8.1.5 (rolldown 1.0.3 → 1.1.5). The new bundler emits a broken mui/@emotion chunk under our custom chunk split: the deployed app died at chunk init (TypeError: t is not a function at mui-*.js:1:54) into a blank page, while every HTTP probe stayed 200 and all CI stayed green — the jsdom test suite never executes the built bundle. Fixed by pinning vite back in #9670.

Bisect evidence (clean install + build + real-browser check per step):

Build vite Custom chunks Result
#8330-era main 8.0.16 manualChunks ✅ boots
#9657 / main 8.1.5 manualChunks ❌ TypeError, blank
main 8.1.5 rolldown-native advancedChunks ❌ same TypeError
main 8.1.5 none (default chunking) ✅ boots
main + pin 8.0.16 manualChunks ✅ boots, mui chunk byte-identical to known-good

Conclusion: upstream rolldown 1.1.5 codegen bug affecting any custom chunk split over our @mui/@emotion/react graph — not specific to the legacy manualChunks compat path.

Current state (after #9670)

  • app/package.json: vite exact-pinned to 8.0.16
  • .github/dependabot.yml: vite ignored for patch/minor/major — fully frozen

Tasks

  • CI bundle smoke gate: after yarn build, load the dist output in a headless browser (playwright) and assert the app mounts with zero console errors. This is the structural fix — any future bundler regression turns CI red instead of shipping a blank page. Add to CI: Tests (or a dedicated job) on app/ changes.
  • Upstream: file a minimal repro against rolldown (or rolldown-vite) — chunk-init TypeError: t is not a function when @mui/* + @emotion/* are grouped into one chunk via manualChunks/advancedChunks, rolldown 1.1.5. Link the issue here; watch releases.
  • Unfreeze: once a fixed vite/rolldown is released AND the smoke gate is in place — restore "vite": "^8.x", remove the dependabot ignore block, and prefer the rolldown-native advancedChunks config over the legacy manualChunks function when re-testing (migration draft exists in fix(app): pin vite to 8.0.16 — rolldown 8.1.5 bundle broke anyplot.ai (white-screen outage) #9670's history).

Acceptance

vite unpinned and following Dependabot again, custom chunk split restored, CI smoke gate proven to catch a broken bundle (test it once against 8.1.5 before unfreezing).

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency file

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions