Skip to content

build(deps): vite 8, @vitejs/plugin-react 6, typescript 6#7

Merged
xeri merged 1 commit into
masterfrom
deps/frontend-majors
Jul 14, 2026
Merged

build(deps): vite 8, @vitejs/plugin-react 6, typescript 6#7
xeri merged 1 commit into
masterfrom
deps/frontend-majors

Conversation

@xeri

@xeri xeri commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Supersedes #4, #5 and #2 — Dependabot's three frontend majors, which cannot land separately:

Bumped together they resolve cleanly.

The tsconfig change is not optional

TS 6 promotes two long-deprecated options to hard errors (TS5107):

was now why
esModuleInterop false true allowSyntheticDefaultImports was already on and is implied by this, so it goes. noEmit means this only ever affected type-checking, never the shipped bundle — vite does the transform.
moduleResolution Node (node10) bundler What a Vite project has been doing all along; node10 described a resolver we don't use.

The 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 build clean.
  • All 7 devmock scenarios × 7 screens (agent / gateway / wizard, plus link=down, fatal=1, fresh=1, fx=low) — React mounts, every screen navigates, zero page errors.
  • The Rolldown production bundle mounts React with zero errors under a stubbed Wails runtime (the devmock is tree-shaken out of prod, so it can't be driven directly).
  • wails build green, with no frontend/wailsjs churn.
  • Full go test ./... green.

The one 404 seen while walking the mock is Chrome's automatic /favicon.ico fetch against the dev server — index.html declares no icon and there is no public/. Pre-existing and dev-only; the shipped app is served by Wails.

🤖 Generated with Claude Code

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
xeri merged commit d9f0f49 into master Jul 14, 2026
21 checks passed
@xeri
xeri deleted the deps/frontend-majors branch July 14, 2026 05:28
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant