cloudflare/vinext

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

Open

#1 523 ouverte le 22 mai 2026

Voir sur GitHub
 (0 commentaires) (0 réactions) (0 assignés)TypeScript (329 forks)github user discovery
adapter-api-e2ehelp wanted

Métriques du dépôt

Stars
 (8 120 stars)
Métriques de merge PR
 (Merge moyen 1j 1h) (462 PRs mergées en 30 j)

Description

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.

Guide contributeur