chore(deps): upgrade vite-plus to 0.2.6#2694
Open
shulaoda wants to merge 5 commits into
Open
Conversation
commit: |
shulaoda
marked this pull request as draft
July 24, 2026 13:54
Contributor
Performance benchmarksCompared 1 improved · 2 regressed · 3 within ±1.5%
View detailed results and traces 🟢 improvement · 🔴 regression · ⚫ change below 1.5% · paired base/head |
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
marked this pull request as ready for review
July 24, 2026 15:27
shulaoda
marked this pull request as draft
July 24, 2026 15:28
shulaoda
force-pushed
the
chore/upgrade-vite-plus-0.2.6
branch
from
July 24, 2026 15:37
c975fcf to
15987cc
Compare
…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
marked this pull request as ready for review
July 24, 2026 15:55
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.
What
Bumps the build toolchain from
0.2.2to0.2.6via the workspace catalog:vite-plus:0.2.2→0.2.6vite(aliased to@voidzero-dev/vite-plus-core):0.2.2→0.2.6These two move together by requirement —
vite-plus@0.2.6depends 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 withmainto 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.3–0.2.6.vite-plusis a rootdevDependency(build tooling only), so nothing here changes any published package's runtime.How
Edited the two catalog entries in
pnpm-workspace.yaml: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.6oxfmt→0.60.0,oxlint→1.75.0,oxlint-tsgolint→7.0.2001,@oxc-project/{runtime,types}→0.141.0yuku-parser/yuku-codegen→0.5.48lightningcss→1.33.0@vitest/browser*→4.1.10The catalog-pinned
vitest@4.1.9and@vitest/coverage-istanbul@4.1.9are unchanged, and no dependency outside the vite-plus subtree drifted.Toolchain fallout
The
0.2.6toolchain (oxfmt0.60.0, oxlint1.75.0, rolldown/oxc) surfaced three CI adaptations. All are tooling/test-only — none change a published runtime:0.60.0reformatsREADME.md,apps/web/next.config.tsandtests/nextjs-compat/TRACKING.md(collapses empty-object-with-comment onto one line; unpads markdown tables). Ranvp check --fix.1.75.0now flags dynamicimport("node:path")under the existingno-restricted-importsrule (previously only static imports). Disabled inline inloadStaticPrerenderwith a reason — the resolved path feeds a dynamicimport(), so pathslash's forward-slash canonicalization buys nothing there.font-google-buildunit test — rolldown now code-splits the server bundle, so the font markers (Geist,selfHostedCSS, …) moved out ofindex.jsinto_next/static/*chunks. Verified they still exist (relocated, not a regression) and updated the test to scan the whole server output rather thanindex.jsalone.Lockfile
Merged latest
mainand regeneratedpnpm-lock.yaml:mainaddedexamples/pages-router-complex, whosevite: catalog:dep now resolves to0.2.6. Only that importer'svite/vite-plus/@cloudflare/vite-pluginentries changed.Note
While investigating the failing shards, one app-router e2e (
metadata-icons.spec.ts→ "rapid icon replacement") can surfaceBodyStreamBuffer 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.