App Router: client `<Link>` soft navigation triggers full server re-render
#1,523 创建于 2026年5月22日
仓库指标
- Star
- (8,120 star)
- PR 合并指标
- (平均合并 1天 1小时) (30 天内合并 462 个 PR)
描述
This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext
mainvs Next.jsv16.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
-
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). -
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. -
Cover back/forward. Same expectation applies to history traversal.
Part of #1328.