Skip to content

skill: add Partial Prefetching optimizer - #96471

Merged
aurorascharff merged 33 commits into
canaryfrom
codex/partial-prefetching-optimizer
Sep 10, 2026
Merged

aurorascharff merged 33 commits into
canaryfrom
codex/partial-prefetching-optimizer

Conversation

@aurorascharff

@aurorascharff aurorascharff commented Aug 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • add a Partial Prefetching optimizer Skill for selected source Links and destinations
  • keep prefetch stages and Link policy in the public Optimizing prefetching guide, and rely on the same static-shell documentation as the Cache Components optimizer for cache placement, Suspense, loading UI, and authorization
  • keep the Skill focused on the product decision, production instant() loop, differential verification, and mutation freshness when an optimization adds a cache around mutable data
  • reference the canonical unstable_prefetch() and unstable_navigation() docs instead of explaining the APIs again in the Skill
  • link cache-writing optimizations to the canonical Revalidating documentation and verify a populated-cache mutation in the Skill and eval
  • bundle a self-contained production rig aligned with the related adoption and optimizer Skills, tuned to record each source-link and prefetch-stage contract
  • add an eval that compares baseline, the bundled guide, and the local Skill against the same prefetched-UI and cache-freshness goal
  • document the optimizer in the AI agents guide

This follows the same guide/Skill split as #97737. Partial Prefetching adoption preserves existing behavior; this optimizer is the later decision about what is worth preparing before a click and what should wait for navigation.

Related: #97712, #97737, #97759, #98122, #98175

Eval

One run per treatment with Claude Opus 4.8 and Claude Sonnet 4.5, using a fixed Claude Haiku 4.5 judge. The bundled-guide and Skill treatments use a local Next.js tarball containing the new guide and API references.

Model Treatment Criteria Score change Overall Duration Tokens processed Total run cost Cost change
Opus 4.8 Baseline 10/10 (100%) — Pass 18m 42s 3.39M $3.46 —
Opus 4.8 Bundled guide 9/10 (90%) -10 pp Fail 13m 37s 3.02M $2.84 -18.0%
Opus 4.8 Local Skill 10/10 (100%) +10 pp Pass 17m 22s 2.80M $2.54 -10.6%
Sonnet 4.5 Baseline 2/10 (20%) — Fail 15m 55s 1.97M $1.06 —
Sonnet 4.5 Bundled guide 5/10 (50%) +30 pp Fail 15m 49s 2.17M $1.11 +4.5%
Sonnet 4.5 Local Skill 8/10 (80%) +30 pp Fail 15m 31s 1.41M $0.77 -30.4%

Token totals count each unique model message once and include uncached input, cache creation, cache reads, and output. Cache reads account for most of the total in every treatment. Total run cost applies the current AI Gateway base rates to each token category: Opus 4.8 costs $5/M input, $6.25/M cache writes, $0.50/M cache reads, and $25/M output; Sonnet 4.5 costs $3/M input, $3.75/M cache writes, $0.30/M cache reads, and $15/M output. The six agent runs cost $11.78 in total.

Compared with baseline, the Opus Skill run maintained a 100% criteria pass rate while reducing cost by 26.7%. The Sonnet Skill run improved the criteria pass rate from 20% to 80%, a 60 percentage-point increase, while reducing cost by 27.3%.

The stronger model could solve the fixture without the Skill, although it independently searched the bundled Next.js documentation and took slightly longer than the Skill treatment. The Opus guide-only run implemented the correct behavior but missed the required RED-before-GREEN proof.

The Sonnet treatments show a clearer progression. Baseline did not implement the required caching, navigation stage, instant() contract, or cache invalidation. The bundled guide added the cached summary and production test, but missed the navigation stage, deferred-state assertions, tag invalidation, and RED-before-GREEN proof. The Skill treatment completed the instant() RED-to-GREEN loop and final production behavior, but left connection() in the related-sessions read and used path revalidation instead of tagging the cached read. It therefore passed 8 of 10 criteria but failed the overall eval.

All six measured runs completed through grading. Chromium and its system dependencies are provisioned before the agent starts, so missing browser libraries did not determine these results.

Verification

  • pnpm --filter=next build
  • pnpm prettier --check for the changed guide, prompt, Skill, and eval fixture
  • pnpm exec tsc -p evals/evals/agent-051-optimize-partial-prefetching/tsconfig.json --noEmit
  • node --check run-evals.js
  • git diff --check
  • packed a local Next.js tarball and confirmed it contains the optimizer guide plus the navigation() and prefetch() references
  • verified the navigation() contract in the minimal reproduction and NextBeats on Next.js 16.4.0-canary.22
  • merged the latest canary, preserving both generic fixture setup and Playwright provisioning

@github-actions

github-actions Bot commented Aug 1, 2026 •

Copy link
Copy Markdown
Contributor

Stats from current PR

🟢 1 improvement

Metric Canary PR Change Trend
node_modules Size 553 MB 553 MB 🟢 566 kB (0%) █████
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 812ms 813ms ✓ ██▁██
Cold (Ready in log) 800ms 802ms ✓ ▃▃▁▅█
Cold (First Request) 1.279s 1.288s ✓ ▁▁▁▂█
Warm (Listen) 814ms 813ms ✓ ██▁██
Warm (Ready in log) 800ms 803ms ✓ ▃▃▁▆█
Warm (First Request) 1.273s 1.284s ✓ ▁▂▁▂█
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 809ms 810ms ✓ ▂▂▇▂▂
Cold (Ready in log) 772ms 775ms ✓ ▁▁█▁▂
Cold (First Request) 3.201s 3.182s ✓ ▁▂█▁▂
Warm (Listen) 811ms 810ms ✓ ▂▂█▂▂
Warm (Ready in log) 776ms 773ms ✓ ▁▂█▁▁
Warm (First Request) 3.213s 3.205s ✓ ▁▂█▁▁

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 6.106s 5.922s ✓ ▂▁▁▁▆
Cached Build 2.959s 2.988s ✓ ▁▁▁▁▁
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.189s 23.201s ✓ ▁▁█▁▁
Cached Build 23.488s 23.396s ✓ ▁▁█▁▁
node_modules Size 553 MB 553 MB 🟢 566 kB (0%) █████
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
017_4moyv5m34.js gzip 117 B 117 B ✓
05jocc85-b73_.js gzip 341 B N/A -
096twxhe86hwd.js gzip 7.53 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB ✓
0e5lgz-xcf6ln.js gzip 273 B 273 B ✓
0enhddgqs2dl-.js gzip 265 B 265 B ✓
0h34mejwa_7pd.js gzip 354 B 354 B ✓
0mg5-nyl2xcjy.js gzip 65.5 kB N/A -
0w853zxni3ro0.js gzip 1.36 kB N/A -
13lq2aw3_0bgw.js gzip 3.52 kB N/A -
17wjm_wc16a_w.js gzip 71.5 kB N/A -
1drifx6-oqf3q.js gzip 5.7 kB N/A -
1elt1qium-r2m.css gzip 115 B 115 B ✓
1m5vdnlf0deiv.js gzip 411 B 411 B ✓
1nigpy_mr0xvj.js gzip 339 B N/A -
1p0l8mn2wz5f2.js gzip 1.97 kB N/A -
1sqoyy39jpgkq.js gzip 121 B 121 B ✓
1tf1phijqlx9j.js gzip 220 B 220 B ✓
2-54v5vj7orwp.js gzip 46.8 kB N/A -
26upjmii0ixt5.js gzip 153 B N/A -
2b05_424u1zq-.js gzip 120 B N/A -
2ca40xittx95r.js gzip 8.75 kB N/A -
2kci0vnt-49o-.js gzip 113 B 113 B ✓
2rtriq9lc6zj-.js gzip 116 B N/A -
2sxgl_rcrrn_p.js gzip 399 B N/A -
2vt62i17bhbdu.js gzip 2.35 kB N/A -
342di-crrg9kq.js gzip 119 B N/A -
36hfc2_979aw2.js gzip 119 B N/A -
38wfp6jjrrdfm.js gzip 131 B 131 B ✓
3dl1ilk37-30g.js gzip 117 B N/A -
3h0us7yy7bd_o.js gzip 13.1 kB N/A -
3kvxagoobts7h.js gzip 117 B N/A -
3p99hd9vwe6ae.js gzip 13 kB N/A -
3r0475panhk6m.js gzip 123 B N/A -
3s0i-weykgzrt.js gzip 125 B N/A -
3vjosdbddykpw.js gzip 5.88 kB N/A -
3wijk2ywqgsv9.js gzip 2.52 kB N/A -
41u5s3oe2-erp.js gzip 2.29 kB N/A -
turbopack-0d..9ejy.js gzip 3.74 kB 3.74 kB ✓
02zc7sqlpqxn3.js gzip N/A 119 B -
0e28eh3gbwmp0.js gzip N/A 3.51 kB -
0jwho9fkrb_t3.js gzip N/A 2.29 kB -
0longconn5mlm.js gzip N/A 123 B -
0o880719hu99a.js gzip N/A 71.5 kB -
0p4l3ozbez2cz.js gzip N/A 2.35 kB -
0sbh_15ejop4o.js gzip N/A 13 kB -
0skdm-9rpid8g.js gzip N/A 117 B -
0wv-h56sz83wn.js gzip N/A 120 B -
137xup2t69ovc.js gzip N/A 1.97 kB -
1fk10s3m1oecx.js gzip N/A 400 B -
1mt9ypr5hvbh4.js gzip N/A 155 B -
20qhkyyj2_tla.js gzip N/A 116 B -
25lb_468wpv8t.js gzip N/A 117 B -
2imyufe18bsb7.js gzip N/A 1.36 kB -
2mr-6hunyw7uo.js gzip N/A 7.53 kB -
2p4n3-8-xixh_.js gzip N/A 341 B -
2vqdfieehz5do.js gzip N/A 8.75 kB -
2xn85ykzw2v1e.js gzip N/A 13.1 kB -
33gdcu1dj0nl9.js gzip N/A 46.7 kB -
34knadd6wu9qg.js gzip N/A 119 B -
37-g1kp39exux.js gzip N/A 5.85 kB -
39jq2b6t6z6up.js gzip N/A 339 B -
3a9a9tvkag_-j.js gzip N/A 2.52 kB -
3hk-fj9wj-l1s.js gzip N/A 5.66 kB -
3qrdk9610h8w6.js gzip N/A 65.5 kB -
3t121tj-h0kbm.js gzip N/A 125 B -
Total 299 kB 299 kB ✅ -138 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 1.02 kB 1.02 kB ✓
Total 1.02 kB 1.02 kB ✓
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 846 B 849 B ✓
Total 846 B 849 B ⚠️ +3 B
Build Cache
Canary PR Change
00000001.sst gzip 13 MB 13.1 MB 🔴 +50.3 kB (+0%)
00000002.sst gzip 13.8 MB 12.9 MB 🟢 943 kB (-7%)
00000003.sst gzip 13 MB 14.8 MB 🔴 +1.83 MB (+14%)
00000004.sst gzip 15 MB 13.9 MB 🟢 1.05 MB (-7%)
00000005.sst gzip 10.1 MB 2.75 MB 🟢 7.31 MB (-73%)
00000006.sst gzip 2.75 MB 10.1 MB 🔴 +7.32 MB (+266%)
00000007.sst gzip 59 B 59 B ✓
00000008.meta gzip 89 B 89 B ✓
00000009.meta gzip 297 kB 297 kB ✓
00000010.meta gzip 297 kB 297 kB ✓
00000011.meta gzip 297 kB 297 kB ✓
00000012.sst gzip 53.9 kB 53.3 kB 🟢 667 B (-1%)
00000013.sst gzip 1.75 MB 1.8 MB 🔴 +51.2 kB (+3%)
00000014.sst gzip 59 B 59 B ✓
00000015.meta gzip 116 B 116 B ✓
00000016.meta gzip 327 kB 327 kB ✓
00000017.meta gzip 403 kB 406 kB 🔴 +3.16 kB (+1%)
00000018.sst gzip 54.7 kB 54 kB 🟢 662 B (-1%)
00000019.sst gzip 1.39 MB 1.38 MB 🟢 10.5 kB (-1%)
00000020.sst gzip 59 B 59 B ✓
00000021.meta gzip 116 B 116 B ✓
00000022.meta gzip 327 kB 327 kB ✓
00000023.meta gzip 371 kB 372 kB ✓
00000024.sst gzip 54.7 kB 54.2 kB ✓
00000025.sst gzip 1.39 MB 1.38 MB 🟢 10.5 kB (-1%)
00000026.sst gzip 59 B 59 B ✓
00000027.meta gzip 116 B 116 B ✓
00000028.meta gzip 327 kB 327 kB ✓
00000029.meta gzip 371 kB 372 kB ✓
00000030.sst gzip 54.1 kB 53.4 kB 🟢 656 B (-1%)
00000031.sst gzip 1.39 MB 1.38 MB 🟢 10.4 kB (-1%)
00000032.sst gzip 59 B 59 B ✓
00000033.meta gzip 116 B 116 B ✓
00000034.meta gzip 327 kB 327 kB ✓
00000035.meta gzip 371 kB 372 kB ✓
00000036.sst gzip 54.6 kB 54.1 kB 🟢 558 B (-1%)
00000037.sst gzip 1.39 MB 1.38 MB 🟢 10.4 kB (-1%)
00000038.sst gzip 59 B 59 B ✓
00000039.meta gzip 116 B 116 B ✓
00000040.meta gzip 327 kB 327 kB ✓
00000041.meta gzip 371 kB 372 kB ✓
CURRENT gzip 94 B 94 B ✓
LOG gzip 663 B 665 B ✓
Total 79.6 MB 79.5 MB ✅ -94.3 kB

📦 Webpack

Client

Main Bundles
Canary PR Change
3322-HASH.js gzip 65.7 kB N/A -
4191.HASH.js gzip 169 B N/A -
9784-HASH.js gzip 5.6 kB N/A -
b1ad9f4c-HASH.js gzip 63.5 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB ✓
main-app-HASH.js gzip 253 B 255 B ✓
main-HASH.js gzip 39.8 kB 39.7 kB ✓
webpack-HASH.js gzip 1.68 kB 1.68 kB ✓
3577.HASH.js gzip N/A 168 B -
578-HASH.js gzip N/A 65.8 kB -
8590-HASH.js gzip N/A 5.53 kB -
a8984546-HASH.js gzip N/A 63.5 kB -
Total 236 kB 236 kB ⚠️ +6 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB ✓
Total 39.4 kB 39.4 kB ✓
Pages
Canary PR Change
_app-HASH.js gzip 194 B 193 B ✓
_error-HASH.js gzip 181 B 182 B ✓
css-HASH.js gzip 334 B 331 B ✓
dynamic-HASH.js gzip 1.81 kB 1.81 kB ✓
edge-ssr-HASH.js gzip 255 B 253 B ✓
head-HASH.js gzip 349 B 351 B ✓
hooks-HASH.js gzip 382 B 384 B ✓
image-HASH.js gzip 5.05 kB 5.01 kB ✓
index-HASH.js gzip 260 B 259 B ✓
link-HASH.js gzip 2.48 kB 2.48 kB ✓
routerDirect..HASH.js gzip 317 B 318 B ✓
script-HASH.js gzip 384 B 386 B ✓
withRouter-HASH.js gzip 316 B 315 B ✓
1afbb74e6ecf..834.css gzip 106 B 106 B ✓
Total 12.4 kB 12.4 kB ✅ -38 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 128 kB 128 kB ✓
page.js gzip 293 kB 292 kB ✓
Total 421 kB 420 kB ✅ -1.23 kB
Middleware
Canary PR Change
middleware-b..fest.js gzip 600 B 600 B ✓
middleware-r..fest.js gzip 156 B 156 B ✓
middleware.js gzip 45.6 kB 45.2 kB ✓
edge-runtime..pack.js gzip 842 B 842 B ✓
Total 47.2 kB 46.8 kB ✅ -444 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 699 B 698 B ✓
Total 699 B 698 B ✅ -1 B
Build Cache
Canary PR Change
0.pack gzip 4.8 MB 4.78 MB 🟢 14.7 kB (0%)
index.pack gzip 123 kB 123 kB ✓
index.pack.old gzip 123 kB 123 kB ✓
Total 5.04 MB 5.03 MB ✅ -14.8 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 375 kB 373 kB ✓
app-page-exp..prod.js gzip 206 kB 206 kB ✓
app-page-tur...dev.js gzip 374 kB 373 kB ✓
app-page-tur..prod.js gzip 206 kB 206 kB ✓
app-page-tur...dev.js gzip 370 kB 369 kB ✓
app-page-tur..prod.js gzip 204 kB 203 kB ✓
app-page.run...dev.js gzip 371 kB 370 kB ✓
app-page.run..prod.js gzip 204 kB 203 kB ✓
app-route-ex...dev.js gzip 82.6 kB 82.5 kB ✓
app-route-ex..prod.js gzip 55.7 kB 55.6 kB ✓
app-route-tu...dev.js gzip 82.6 kB 82.5 kB ✓
app-route-tu..prod.js gzip 55.7 kB 55.6 kB ✓
app-route-tu...dev.js gzip 82.2 kB 82.1 kB ✓
app-route-tu..prod.js gzip 55.4 kB 55.4 kB ✓
app-route.ru...dev.js gzip 82.2 kB 82.1 kB ✓
app-route.ru..prod.js gzip 55.4 kB 55.4 kB ✓
dev-validati...dev.js gzip 134 kB 134 kB ✓
dev-validati...dev.js gzip 134 kB 134 kB ✓
dev-validati...dev.js gzip 132 kB 132 kB ✓
dev-validati...dev.js gzip 132 kB 132 kB ✓
dist_client_...dev.js gzip 324 B 324 B ✓
dist_client_...dev.js gzip 326 B 326 B ✓
dist_client_...dev.js gzip 318 B 318 B ✓
dist_client_...dev.js gzip 317 B 317 B ✓
pages-api-tu...dev.js gzip 46.3 kB 46.2 kB ✓
pages-api-tu..prod.js gzip 34.3 kB 34.3 kB ✓
pages-api.ru...dev.js gzip 46.2 kB 46.2 kB ✓
pages-api.ru..prod.js gzip 34.3 kB 34.2 kB ✓
pages-turbo....dev.js gzip 54.7 kB 54.6 kB ✓
pages-turbo...prod.js gzip 39.7 kB 39.6 kB ✓
pages.runtim...dev.js gzip 54.7 kB 54.6 kB ✓
pages.runtim..prod.js gzip 39.6 kB 39.6 kB ✓
server.runti..prod.js gzip 65.9 kB 65.8 kB ✓
use-cache-pr...dev.js gzip 73.3 kB 72.5 kB 🟢 764 B (-1%)
use-cache-pr...dev.js gzip 73.3 kB 72.5 kB 🟢 767 B (-1%)
use-cache-pr...dev.js gzip 71.5 kB 70.7 kB 🟢 762 B (-1%)
use-cache-pr...dev.js gzip 71.5 kB 70.7 kB 🟢 756 B (-1%)
Total 4.1 MB 4.09 MB ✅ -11.8 kB
📝 Changed Files (33 files)

Files with changes:

  • app-page-exp..ntime.dev.js
  • app-page-exp..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page.runtime.dev.js
  • app-page.runtime.prod.js
  • app-route-ex..ntime.dev.js
  • app-route-ex..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route.runtime.dev.js
  • app-route.ru..time.prod.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • ... and 13 more
View diffs
app-page-exp..ntime.dev.js
failed to diff
app-page-exp..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js

Diff too large to display

app-page.runtime.dev.js
failed to diff
app-page.runtime.prod.js

Diff too large to display

app-route-ex..ntime.dev.js

Diff too large to display

app-route-ex..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route-tu..ntime.dev.js

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route.runtime.dev.js

Diff too large to display

app-route.ru..time.prod.js

Diff too large to display

dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
pages-api-tu..ntime.dev.js

Diff too large to display

pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-api.ru..time.prod.js

Diff too large to display

pages-turbo...ntime.dev.js

Diff too large to display

pages-turbo...time.prod.js

Diff too large to display

pages.runtime.dev.js

Diff too large to display

pages.runtime.prod.js

Diff too large to display

server.runtime.prod.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/598df91b36ca4da05fcaf459ebca31e88b4f6e1e/next

Commit: 598df91

@github-actions

github-actions Bot commented Aug 1, 2026 •

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: c8ab0c1

@aurorascharff
aurorascharff changed the base branch from canary to codex/ai-agent-skills-guide August 2, 2026 10:28
aurorascharff added a commit that referenced this pull request Aug 3, 2026
## Summary

- clarify how runtime foundations, interactive workflows, and unattended
loops fit into the AI agents and Instant Navigation guides
- harden the Cache Components and Partial Prefetching Skills around
capability checks, trustworthy `instant()` tests, route scope, and
real-app verification failures
- add migration-guide comments to temporary Partial Prefetching route
config and update `remove-partial-prefetch` to remove only generated
comments while preserving runtime-prefetch TODOs and user comments

This keeps the experimental Partial Prefetching optimizer in #96471
separate.

## Testing

- `pnpm --filter @next/codemod build`
- `pnpm --filter @next/codemod test --
transforms/__tests__/remove-partial-prefetch.test.js --runInBand`
Base automatically changed from codex/ai-agent-skills-guide to canary August 3, 2026 19:23
m-kawafuji pushed a commit to m-kawafuji/next.js that referenced this pull request Aug 8, 2026
## Summary

- clarify how runtime foundations, interactive workflows, and unattended
loops fit into the AI agents and Instant Navigation guides
- harden the Cache Components and Partial Prefetching Skills around
capability checks, trustworthy `instant()` tests, route scope, and
real-app verification failures
- add migration-guide comments to temporary Partial Prefetching route
config and update `remove-partial-prefetch` to remove only generated
comments while preserving runtime-prefetch TODOs and user comments

This keeps the experimental Partial Prefetching optimizer in vercel#96471
separate.

## Testing

- `pnpm --filter @next/codemod build`
- `pnpm --filter @next/codemod test --
transforms/__tests__/remove-partial-prefetch.test.js --runInBand`
@aurorascharff aurorascharff changed the title skill: add partial prefetching optimizer skill: add Partial Prefetching optimizer Aug 24, 2026
@aurorascharff
aurorascharff changed the base branch from canary to codex/adoption-skill-evals August 27, 2026 17:06
Base automatically changed from codex/adoption-skill-evals to canary August 31, 2026 18:52
@aurorascharff
aurorascharff force-pushed the codex/partial-prefetching-optimizer branch from 395cb1b to 623fb93 Compare September 7, 2026 13:27
@aurorascharff
aurorascharff force-pushed the codex/partial-prefetching-optimizer branch from 522ef2a to 0c3d0fe Compare September 8, 2026 18:06
@github-actions

github-actions Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

All broken links are now fixed, thank you!

@aurorascharff
aurorascharff marked this pull request as ready for review September 9, 2026 10:14
@aurorascharff
aurorascharff force-pushed the codex/partial-prefetching-optimizer branch from 66a8ab2 to 71c4358 Compare September 9, 2026 15:22
Comment thread docs/01-app/01-getting-started/08-caching.mdx Outdated
@aurorascharff
aurorascharff merged commit 393de1e into canary Sep 10, 2026
55 checks passed
@aurorascharff
aurorascharff deleted the codex/partial-prefetching-optimizer branch September 10, 2026 20:27
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 25, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants