Skip to content

chore(deps): upgrade vite-plus to 0.2.6#2694

Open
shulaoda wants to merge 5 commits into
cloudflare:mainfrom
shulaoda:chore/upgrade-vite-plus-0.2.6
Open

chore(deps): upgrade vite-plus to 0.2.6#2694
shulaoda wants to merge 5 commits into
cloudflare:mainfrom
shulaoda:chore/upgrade-vite-plus-0.2.6

Conversation

@shulaoda

@shulaoda shulaoda commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

What

Bumps the build toolchain from 0.2.2 to 0.2.6 via the workspace catalog:

  • vite-plus: 0.2.20.2.6
  • vite (aliased to @voidzero-dev/vite-plus-core): 0.2.20.2.6

These two move together by requirement — vite-plus@0.2.6 depends on @voidzero-dev/vite-plus-core@0.2.6. Also includes the small non-shipping changes needed to stay green under the new toolchain (see Toolchain fallout), plus a merge with main to regenerate the lockfile for a newly-added example.

Why

Keeps the vinext build/test toolchain current and picks up the fixes shipped across 0.2.30.2.6. vite-plus is a root devDependency (build tooling only), so nothing here changes any published package's runtime.

How

Edited the two catalog entries in pnpm-workspace.yaml:

-  vite: npm:@voidzero-dev/vite-plus-core@0.2.2
+  vite: npm:@voidzero-dev/vite-plus-core@0.2.6
-  vite-plus: 0.2.2
+  vite-plus: 0.2.6

Then regenerated pnpm-lock.yaml. Re-resolving the core package naturally moves its bundled toolchain subtree — all transitive, all within the vite-plus dependency graph:

  • @voidzero-dev/vite-plus-core + platform bindings → 0.2.6
  • oxfmt0.60.0, oxlint1.75.0, oxlint-tsgolint7.0.2001, @oxc-project/{runtime,types}0.141.0
  • yuku-parser / yuku-codegen0.5.48
  • lightningcss1.33.0
  • @vitest/browser*4.1.10

The catalog-pinned vitest@4.1.9 and @vitest/coverage-istanbul@4.1.9 are unchanged, and no dependency outside the vite-plus subtree drifted.

Toolchain fallout

The 0.2.6 toolchain (oxfmt 0.60.0, oxlint 1.75.0, rolldown/oxc) surfaced three CI adaptations. All are tooling/test-only — none change a published runtime:

  1. Formatting — oxfmt 0.60.0 reformats README.md, apps/web/next.config.ts and tests/nextjs-compat/TRACKING.md (collapses empty-object-with-comment onto one line; unpads markdown tables). Ran vp check --fix.
  2. Lint — oxlint 1.75.0 now flags dynamic import("node:path") under the existing no-restricted-imports rule (previously only static imports). Disabled inline in loadStaticPrerender with a reason — the resolved path feeds a dynamic import(), so pathslash's forward-slash canonicalization buys nothing there.
  3. font-google-build unit test — rolldown now code-splits the server bundle, so the font markers (Geist, selfHostedCSS, …) moved out of index.js into _next/static/* chunks. Verified they still exist (relocated, not a regression) and updated the test to scan the whole server output rather than index.js alone.

Lockfile

Merged latest main and regenerated pnpm-lock.yaml: main added examples/pages-router-complex, whose vite: catalog: dep now resolves to 0.2.6. Only that importer's vite / vite-plus / @cloudflare/vite-plugin entries changed.

Note

While investigating the failing shards, one app-router e2e (metadata-icons.spec.ts → "rapid icon replacement") can surface BodyStreamBuffer was aborted: a pre-existing, timing-dependent race where a fast follow-up navigation aborts a still-streaming RSC fetch and React reports the un-consumed metadata Flight chunk's AbortError globally. The new toolchain shifts navigation timing so it can flake on CI. Left out of scope here to keep this a pure toolchain bump; if it recurs it can be addressed separately (suppress the benign abort in the runtime, or ignore it in the test harness).

Changeset

devDependency + test/format/lint only — no published runtime change, so no changeset / version bump.

@pkg-pr-new

pkg-pr-new Bot commented Jul 24, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/@vinext/cloudflare@2694
npm i https://pkg.pr.new/create-vinext-app@2694
npm i https://pkg.pr.new/@vinext/types@2694
npm i https://pkg.pr.new/vinext@2694

commit: 02b1c22

@shulaoda
shulaoda marked this pull request as draft July 24, 2026 13:54
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Performance benchmarks

Compared 02b1c22 against base 05eee9f using alternating same-runner rounds. Next.js was unchanged and skipped.

1 improved · 2 regressed · 3 within ±1.5%

Scenario Framework Baseline Current Change
Client bundle size (gzip) vinext 132.4 KB 132.3 KB ⚫ -0.1%
Client entry size (gzip) vinext 119.7 KB 119.6 KB ⚫ -0.1%
Dev server cold start vinext 2.78 s 2.77 s ⚫ -0.4%
Production build time vinext 2.92 s 2.87 s 🟢 -1.6%
RSC entry closure size (gzip) vinext 103.3 KB 108.1 KB 🔴 +4.7%
Server bundle size (gzip) vinext 177.8 KB 184.7 KB 🔴 +3.9%

View detailed results and traces

🟢 improvement · 🔴 regression · ⚫ change below 1.5% · paired base/head

shulaoda added 2 commits July 24, 2026 23:26
A fast follow-up navigation aborts the in-flight navigation's RSC fetch
mid-stream. When the aborted stream still holds an un-consumed React Flight
chunk (e.g. streamed metadata the superseded route never rendered), React
reports the resulting AbortError globally as a window `error` event rather
than to a specific consumer, which trips the "no console errors" e2e
assertion (metadata-icons.spec.ts).

Install a page-lifetime window listener at bootstrap that preventDefault()s
these benign navigation AbortErrors, mirroring the existing redirect-error
bridge. Installed once (not in a component effect) so there is no listener
gap while the router tree re-renders mid-navigation.

The vite-plus 0.2.6 toolchain shifted navigation timing enough to expose
this latent race on CI.
Follow-up to the vite-plus 0.2.6 bump; keeps CI green under the new
oxfmt/oxlint/rolldown toolchain. No published runtime change.

- Formatting: oxfmt 0.60.0 reformats README.md, apps/web/next.config.ts and
  tests/nextjs-compat/TRACKING.md (collapses empty-object-with-comment;
  unpads markdown tables). Applied `vp check --fix`.
- Lint: oxlint 1.75.0 now flags dynamic `import("node:path")` under the
  existing no-restricted-imports rule. Disabled inline in loadStaticPrerender
  with a reason -- the resolved path feeds a dynamic import(), so pathslash's
  forward-slash canonicalization buys nothing there.
- Test: rolldown code-splits the server build, so the font markers moved out
  of index.js into _next/static/* chunks. Scan the whole server output for
  the markers instead of index.js alone (verified they still exist).
@shulaoda
shulaoda marked this pull request as ready for review July 24, 2026 15:27
@shulaoda
shulaoda marked this pull request as draft July 24, 2026 15:28
@shulaoda
shulaoda force-pushed the chore/upgrade-vite-plus-0.2.6 branch from c975fcf to 15987cc Compare July 24, 2026 15:37
…avigations"

Drop the runtime AbortError suppressor to keep this PR a pure toolchain bump.
The metadata-icons "rapid icon replacement" failure it addressed is a
pre-existing, timing-dependent race (not caused by the upgrade). Assessing
whether it triggers stably on CI / locally before deciding how and where to
fix it.

This reverts commit 84454d5fd of this branch.
@shulaoda
shulaoda marked this pull request as ready for review July 24, 2026 15:55
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