Experimental cached navigations

실험적 캐시 내비게이션

An experimental Next.js 16.2 feature reuses Server Components data from earlier visits.

···
html
<section class="stage"><div class="heading">CACHED NAVIGATION <span class="hint">first visit / revisit</span></div><div class="nav"><div class="tile page-a">PAGE A</div><div class="track"><i></i></div><div class="tile page-b">PAGE B</div></div><div class="status" id="nav-status">A → B: network</div><div class="caption">On return, stored RSC data replaces a fetch</div></section>
css
.stage{width:min(94vw,780px);height:min(88vh,322px);padding:clamp(12px,3vmin,20px);border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 12px 36px #0001;display:flex;flex-direction:column;gap:clamp(7px,2vmin,14px);font:500 clamp(12px,3.5vmin,17px)/1.3 var(--font-sans,system-ui,sans-serif);overflow:hidden}.heading{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:750;color:var(--accent)}.hint{color:var(--muted);font-size:clamp(12px,3.2vmin,14px);font-weight:500}.caption{margin-top:auto;color:var(--muted);font-size:clamp(12px,3.2vmin,14px)}.row{display:flex;gap:clamp(5px,1.5vmin,12px);align-items:center}.tile{padding:clamp(6px,1.8vmin,13px);border:1px solid var(--line);border-radius:9px;background:var(--bg);text-align:center;min-width:0}.arrow{color:var(--accent);font-weight:800}.stage [data-on]{transition:background .3s,border-color .3s,opacity .3s,transform .3s}.stage .on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.nav{flex:1;display:flex;align-items:center;justify-content:center;gap:clamp(6px,2vmin,20px)}.page-a,.page-b{width:30%;max-width:150px;padding:15px 5px;font-weight:750}.track{width:25%;height:8px;background:var(--line);border-radius:99px;position:relative}.track i{position:absolute;left:0;top:-7px;width:23px;height:23px;border-radius:50%;background:var(--accent-3);transition:left .4s,background .3s}.stage[data-step="1"] .track i{left:calc(100% - 23px)}.stage[data-step="2"] .track i{left:0;background:var(--accent)}.stage[data-step="1"] .page-b,.stage[data-step="2"] .page-a{border-color:var(--accent)}.status{text-align:center;color:var(--accent-2);font-weight:700}.stage small,.stage button,.stage .cards b,.stage .phase b,.stage .pair b,.stage .tree-mini b{font-size:clamp(12px,3.2vmin,14px)!important}
js
const stage=document.querySelector(".stage"),label=document.getElementById("nav-status"),messages=["A → B: network","B received and stored","B → A: cache hit"];let step=0;function tick(){stage.dataset.step=String(step);label.textContent=messages[step];step=(step+1)%3}tick();let timer=setInterval(tick,980);stage.addEventListener("pointerdown",()=>{clearInterval(timer);tick()})

Next.js 16.2 experimental.cachedNavigations caches static and dynamic Server Components data from the initial HTML and later navigations. A repeat visit can reuse that stored data.

The feature is experimental and requires Cache Components. Review reuse boundaries for personal or rapidly changing data.

When to use

Try it in Next.js 16.2 when studying repeat-navigation speed, while verifying cache correctness.

Open as page ↗