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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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