cloudflare/vinext

App Router: client `<Link>` soft navigation triggers full server re-render

Open

#1.523 geöffnet am 22. Mai 2026

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (329 Forks)github user discovery
adapter-api-e2ehelp wanted

Repository-Metriken

Stars
 (8.120 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 1T 1h) (462 gemergte PRs in 30 T)

Beschreibung

This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-22).

Problem

Soft client-side navigations via <Link> (push, back/forward) trigger a fresh server render instead of reusing the cached client tree. The deployment build ID changes between the initial render and after navigation, indicating the client re-fetches rather than soft-navigates. Layout is re-rendered when it should be reused.

Soft <Link> navigation rerenders layout (build IDs differ)

Estimated Impact

~4 test failures across the deploy suite.

Affected Test Suites

  • test/e2e/app-dir/app/index.test.ts (4 failures)

Recommendation

  1. Reproduce first in vinext's own test suite. Add a test that captures the deployment ID once, navigates via <Link> to a sibling route, and asserts the build ID is the same (i.e. no full server re-render).

  2. Make <Link> navigations use the cached client tree. On click, perform an RSC payload fetch and reuse the existing layout/cache subtree instead of dispatching a full server render.

  3. Cover back/forward. Same expectation applies to history traversal.


Part of #1328.

Contributor Guide