cloudflare/vinext

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

Open

#1,523 opened on 2026年5月22日

GitHub で見る
 (0 comments) (0 reactions) (0 assignees)TypeScript (329 forks)github user discovery
adapter-api-e2ehelp wanted

Repository metrics

Stars
 (8,120 stars)
PR merge metrics
 (平均マージ 1d 1h) (30d で 462 merged PRs)

説明

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.

コントリビューターガイド