build(deps): vite 8, @vitejs/plugin-react 6, typescript 6#7
Merged
Conversation
Dependabot opened these as three PRs (#4, #5, #2). They cannot land that way: @vitejs/plugin-react@6 peer-requires vite@^8, so #5's npm ci fails against a tree that still has vite 7, and typescript@6 fails on our tsconfig regardless of the other two. Bumped together, they resolve cleanly. TypeScript 6 promotes two long-deprecated options to hard errors (TS5107): esModuleInterop: false -> true. allowSyntheticDefaultImports was already on and is implied by esModuleInterop, so it goes; noEmit means this only ever affected type-checking, never the shipped bundle (vite does the transform). moduleResolution: Node (node10) -> bundler, which is what a Vite project has actually been doing all along; node10 was describing a resolver we don't use. The ignoreDeprecations escape hatch would have bought silence until TS 7 and no more, so it is not worth taking. vite 8 swaps the bundler to Rolldown, which regenerates the production chunk with entirely different codegen — a green build does not prove that renders. Verified: tsc + vite build clean; all 7 devmock scenarios x 7 screens with zero page errors; the Rolldown production bundle mounts React with zero errors under a stubbed Wails runtime; wails build green with no frontend/wailsjs churn; full Go suite green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 14, 2026
xeri
added a commit
that referenced
this pull request
Jul 16, 2026
Dependabot opened these as three PRs (#4, #5, #2). They cannot land that way: @vitejs/plugin-react@6 peer-requires vite@^8, so #5's npm ci fails against a tree that still has vite 7, and typescript@6 fails on our tsconfig regardless of the other two. Bumped together, they resolve cleanly. TypeScript 6 promotes two long-deprecated options to hard errors (TS5107): esModuleInterop: false -> true. allowSyntheticDefaultImports was already on and is implied by esModuleInterop, so it goes; noEmit means this only ever affected type-checking, never the shipped bundle (vite does the transform). moduleResolution: Node (node10) -> bundler, which is what a Vite project has actually been doing all along; node10 was describing a resolver we don't use. The ignoreDeprecations escape hatch would have bought silence until TS 7 and no more, so it is not worth taking. vite 8 swaps the bundler to Rolldown, which regenerates the production chunk with entirely different codegen — a green build does not prove that renders. Verified: tsc + vite build clean; all 7 devmock scenarios x 7 screens with zero page errors; the Rolldown production bundle mounts React with zero errors under a stubbed Wails runtime; wails build green with no frontend/wailsjs churn; full Go suite green. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
xeri
added a commit
that referenced
this pull request
Jul 16, 2026
Dependabot opened these as three PRs (#4, #5, #2). They cannot land that way: @vitejs/plugin-react@6 peer-requires vite@^8, so #5's npm ci fails against a tree that still has vite 7, and typescript@6 fails on our tsconfig regardless of the other two. Bumped together, they resolve cleanly. TypeScript 6 promotes two long-deprecated options to hard errors (TS5107): esModuleInterop: false -> true. allowSyntheticDefaultImports was already on and is implied by esModuleInterop, so it goes; noEmit means this only ever affected type-checking, never the shipped bundle (vite does the transform). moduleResolution: Node (node10) -> bundler, which is what a Vite project has actually been doing all along; node10 was describing a resolver we don't use. The ignoreDeprecations escape hatch would have bought silence until TS 7 and no more, so it is not worth taking. vite 8 swaps the bundler to Rolldown, which regenerates the production chunk with entirely different codegen — a green build does not prove that renders. Verified: tsc + vite build clean; all 7 devmock scenarios x 7 screens with zero page errors; the Rolldown production bundle mounts React with zero errors under a stubbed Wails runtime; wails build green with no frontend/wailsjs churn; full Go suite green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Supersedes #4, #5 and #2 — Dependabot's three frontend majors, which cannot land separately:
@vitejs/plugin-react@6peer-requiresvite@^8, so build(deps-dev): Bump @vitejs/plugin-react from 5.2.0 to 6.0.3 in /frontend #5'snpm cifails on a tree that still has vite 7.typescript@6fails on ourtsconfig.jsonregardless of the other two.Bumped together they resolve cleanly.
The tsconfig change is not optional
TS 6 promotes two long-deprecated options to hard errors (TS5107):
esModuleInteropfalsetrueallowSyntheticDefaultImportswas already on and is implied by this, so it goes.noEmitmeans this only ever affected type-checking, never the shipped bundle — vite does the transform.moduleResolutionNode(node10)bundlerThe
ignoreDeprecations: "6.0"escape hatch would buy silence until TS 7 and no more, so it isn't worth taking.Verification
vite 8 swaps the bundler to Rolldown, so the production chunk is regenerated by entirely different codegen — a green build does not prove it renders. Beyond CI:
tsc+vite buildclean.link=down,fatal=1,fresh=1,fx=low) — React mounts, every screen navigates, zero page errors.wails buildgreen, with nofrontend/wailsjschurn.go test ./...green.The one 404 seen while walking the mock is Chrome's automatic
/favicon.icofetch against the dev server —index.htmldeclares no icon and there is nopublic/. Pre-existing and dev-only; the shipped app is served by Wails.🤖 Generated with Claude Code