Setting the file. One moment.
Docs Library · Vercel Optimize · vercel-labs/agent-skills · Skills Docs
ContentsBack to the top of the page (opens in a new tab)
references/ docs-library.json
JSON · 683 lines · 31 KB
"url"
:
"https://vercel.com/docs/caching/cdn-cache"
,
10 "topic" : "Vercel CDN Cache — cacheable response criteria, static file caching, dynamic response caching, and cache limits" ,
11 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
12 "applicableFrameworks" : [ "*" ]
13 },
14 {
15 "url" : "https://vercel.com/docs/headers/request-headers" ,
16 "topic" : "Vercel request headers — documented geolocation header names including country, country-region, city, latitude, longitude, timezone, and postal code" ,
17 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
18 "applicableFrameworks" : [ "*" ]
19 },
20 {
21 "url" : "https://vercel.com/docs/caching/cache-control-headers" ,
22 "topic" : "Cache-Control headers on Vercel — s-maxage, CDN-Cache-Control, Vercel-CDN-Cache-Control, stale-while-revalidate" ,
23 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
24 "applicableFrameworks" : [ "*" ]
25 },
26 {
27 "url" : "https://vercel.com/docs/caching/runtime-cache" ,
28 "topic" : "Runtime Cache — reuse repeated API, database, and expensive computation results from Vercel Functions" ,
29 "appliesTo" : [ "slow_route" , "external_api_slow" ],
30 "applicableFrameworks" : [ "*" ]
31 },
32 {
33 "url" : "https://vercel.com/docs/fluid-compute" ,
34 "topic" : "Fluid Compute — reduced cold starts, active CPU pricing, function instance reuse, memory right-sizing" ,
35 "appliesTo" : [ "cold_start" , "platform_fluid_compute" , "slow_route" , "oversized_memory" ],
36 "applicableFrameworks" : [ "*" ]
37 },
38 {
39 "url" : "https://vercel.com/docs/functions/configuring-functions/memory" ,
40 "topic" : "Function memory configuration — Standard 2GB / Performance 4GB tiers, when to upgrade Performance, account-level setting" ,
41 "appliesTo" : [ "platform_fluid_compute" ],
42 "applicableFrameworks" : [ "*" ]
43 },
44 {
45 "url" : "https://vercel.com/docs/speed-insights" ,
46 "topic" : "Vercel Speed Insights — LCP, INP, CLS, TTFB, FCP, FID on real-user traffic" ,
47 "appliesTo" : [ "cwv_poor" ],
48 "applicableFrameworks" : [ "*" ]
49 },
50 {
51 "url" : "https://web.dev/articles/vitals" ,
52 "topic" : "Core Web Vitals — LCP < 2500ms, INP < 200ms, CLS < 0.1 thresholds" ,
53 "appliesTo" : [ "cwv_poor" ],
54 "applicableFrameworks" : [ "*" ]
55 },
56 {
57 "url" : "https://web.dev/articles/optimize-lcp" ,
58 "topic" : "Optimize LCP — preload critical images, defer non-critical CSS, reduce server response" ,
59 "appliesTo" : [ "cwv_poor" ],
60 "applicableFrameworks" : [ "*" ]
61 },
62 {
63 "url" : "https://web.dev/articles/optimize-inp" ,
64 "topic" : "Optimize INP — break up long tasks, defer non-essential JavaScript" ,
65 "appliesTo" : [ "cwv_poor" ],
66 "applicableFrameworks" : [ "*" ]
67 },
68 {
69 "url" : "https://web.dev/articles/optimize-cls" ,
70 "topic" : "Optimize CLS — reserve space for images, fonts, ads; avoid layout-affecting injections" ,
71 "appliesTo" : [ "cwv_poor" ],
72 "applicableFrameworks" : [ "*" ]
73 },
74 {
75 "url" : "https://vercel.com/docs/vercel-firewall/vercel-waf/managed-rulesets" ,
76 "topic" : "Vercel WAF managed rulesets — managed bot and AI-bot actions by ruleset" ,
77 "appliesTo" : [ "platform_bot_protection" , "uncached_route" ],
78 "applicableFrameworks" : [ "*" ]
79 },
80 {
81 "url" : "https://vercel.com/docs/vercel-firewall/vercel-waf/custom-rules" ,
82 "topic" : "Vercel WAF custom rules — log, deny, challenge, bypass, redirect, and persistent actions" ,
83 "appliesTo" : [ "platform_bot_protection" , "uncached_route" , "middleware_heavy" ],
84 "applicableFrameworks" : [ "*" ]
85 },
86 {
87 "url" : "https://vercel.com/docs/functions" ,
88 "topic" : "Vercel Functions lifecycle — regions, memory, max duration, runtimes" ,
89 "appliesTo" : [ "slow_route" , "cold_start" , "route_errors" ],
90 "applicableFrameworks" : [ "*" ]
91 },
92 {
93 "url" : "https://vercel.com/docs/functions/debug-slow-functions" ,
94 "topic" : "Debugging slow functions — isolate external latency, cold starts, bundle size, initialization, memory, and connection pooling" ,
95 "appliesTo" : [ "slow_route" , "cold_start" , "external_api_slow" ],
96 "applicableFrameworks" : [ "*" ]
97 },
98 {
99 "url" : "https://vercel.com/docs/functions/functions-api-reference/vercel-functions-package" ,
100 "topic" : "@vercel/functions helpers — waitUntil for post-response work and attachDatabasePool for pool lifecycle" ,
101 "appliesTo" : [ "slow_route" , "cold_start" , "external_api_slow" , "route_errors" ],
102 "applicableFrameworks" : [ "*" ]
103 },
104 {
105 "url" : "https://vercel.com/docs/functions/limitations" ,
106 "topic" : "Vercel Functions limits — duration, payload, runtime, and invocation constraints" ,
107 "appliesTo" : [ "cold_start" , "route_errors" , "slow_route" ],
108 "applicableFrameworks" : [ "*" ]
109 },
110 {
111 "url" : "https://vercel.com/docs/functions/runtimes" ,
112 "topic" : "Runtime selection — node, python, ruby, go (edge runtime deprecated per 2026 platform notes)" ,
113 "appliesTo" : [ "cold_start" , "slow_route" ],
114 "applicableFrameworks" : [ "*" ]
115 },
116 {
117 "url" : "https://vercel.com/docs/incremental-static-regeneration" ,
118 "topic" : "Incremental Static Regeneration — reads vs writes, revalidate timing, on-demand revalidation" ,
119 "appliesTo" : [ "isr_overrevalidation" , "uncached_route" ],
120 "applicableFrameworks" : [ "next@*" , "sveltekit@*" , "astro@*" , "nuxt@*" ]
121 },
122 {
123 "url" : "https://vercel.com/docs/image-optimization" ,
124 "topic" : "Image Optimization on Vercel — supported formats, transformations, billing" ,
125 "appliesTo" : [ "image_optimization" ],
126 "applicableFrameworks" : [ "*" ]
127 },
128 {
129 "url" : "https://vercel.com/docs/image-optimization/managing-image-optimization-costs" ,
130 "topic" : "Managing Image Optimization usage and costs — reduce unnecessary transformations and cache misses" ,
131 "appliesTo" : [ "image_optimization" ],
132 "applicableFrameworks" : [ "*" ]
133 },
134 {
135 "url" : "https://vercel.com/docs/image-optimization/limits-and-pricing" ,
136 "topic" : "Image Optimization limits and pricing — source format, dimensions, transformed image size, and billing dimensions" ,
137 "appliesTo" : [ "image_optimization" ],
138 "applicableFrameworks" : [ "*" ]
139 },
140 {
141 "url" : "https://vercel.com/docs/observability/observability-plus" ,
142 "topic" : "Observability Plus — path-level metrics, p75 sort, and retention" ,
143 "appliesTo" : [ "platform_fluid_compute" , "observability_events_attribution" ],
144 "applicableFrameworks" : [ "*" ]
145 },
146 {
147 "url" : "https://vercel.com/docs/monorepos" ,
148 "topic" : "Monorepos — skip unaffected projects and ignored build step tradeoffs" ,
149 "appliesTo" : [ "build_minutes_fanout" ],
150 "applicableFrameworks" : [ "*" ]
151 },
152 {
153 "url" : "https://vercel.com/docs/builds" ,
154 "topic" : "Builds — build infrastructure, monorepo build controls, concurrency, and queues" ,
155 "appliesTo" : [ "build_minutes_fanout" ],
156 "applicableFrameworks" : [ "*" ]
157 },
158 {
159 "url" : "https://turborepo.dev/docs/crafting-your-repository/caching" ,
160 "topic" : "Turborepo caching — task-level cache config, force flags, remote cache" ,
161 "appliesTo" : [ "build_minutes_fanout" ],
162 "applicableFrameworks" : [ "*" ]
163 },
164 {
165 "url" : "https://vercel.com/docs/regions" ,
166 "topic" : "Vercel Functions regions — single vs multi-region, defaults, latency tradeoffs" ,
167 "appliesTo" : [ "region_misconfig" ],
168 "applicableFrameworks" : [ "*" ]
169 },
170 {
171 "url" : "https://vercel.com/docs/functions/configuring-functions/region" ,
172 "topic" : "Configuring function region — vercel.json regions, segment-level preferredRegion" ,
173 "appliesTo" : [ "region_misconfig" ],
174 "applicableFrameworks" : [ "*" ]
175 },
176 {
177 "url" : "https://vercel.com/docs/alerts" ,
178 "topic" : "Alerts — per-metric alerting on routes/status/usage with supported destinations" ,
179 "appliesTo" : [ "observability_events_attribution" , "usage_spike_triage" ],
180 "applicableFrameworks" : [ "*" ]
181 },
182 {
183 "url" : "https://vercel.com/docs/spend-management" ,
184 "topic" : "Spend Management — usage thresholds, notifications, and project pause behavior" ,
185 "appliesTo" : [ "usage_spike_triage" ],
186 "applicableFrameworks" : [ "*" ]
187 },
188 {
189 "url" : "https://vercel.com/docs/cli/metrics" ,
190 "topic" : "vercel metrics CLI — schema, query construction, OData filters" ,
191 "appliesTo" : [],
192 "applicableFrameworks" : [ "*" ]
193 },
194 {
195 "url" : "https://vercel.com/docs/cli/usage" ,
196 "topic" : "vercel usage CLI — billing line items, breakdown, effectiveCost vs billedCost" ,
197 "appliesTo" : [],
198 "applicableFrameworks" : [ "*" ]
199 },
200 {
201 "url" : "https://vercel.com/docs/cli/inspect" ,
202 "topic" : "vercel inspect — view a deployment's build logs, region, runtime, commit, creator" ,
203 "appliesTo" : [ "route_errors" ],
204 "applicableFrameworks" : [ "*" ]
205 },
206 {
207 "url" : "https://vercel.com/docs/manage-cdn-usage" ,
208 "topic" : "Vercel Edge Network bandwidth — Fast Data Transfer, included quotas, overage pricing" ,
209 "appliesTo" : [ "large_static_asset" , "uncached_route" ],
210 "applicableFrameworks" : [ "*" ]
211 },
212 {
213 "url" : "https://vercel.com/docs/functions/runtimes/edge-runtime" ,
214 "topic" : "Vercel Edge Runtime — supported APIs, constraints, incompatible modules (node:* builtins, native deps)" ,
215 "appliesTo" : [ "edge_heavy_import" , "cold_start" ],
216 "applicableFrameworks" : [ "*" ]
217 },
218 {
219 "url" : "https://vercel.com/docs/bot-management" ,
220 "topic" : "Vercel Bot Protection — enabling, false-positive handling, billing implications" ,
221 "appliesTo" : [ "platform_bot_protection" ],
222 "applicableFrameworks" : [ "*" ]
223 },
224 {
225 "url" : "https://vercel.com/docs/botid" ,
226 "topic" : "BotID — invisible challenge, Basic and Deep Analysis modes, checkBotId, observability, and billing" ,
227 "appliesTo" : [ "platform_bot_protection" ],
228 "applicableFrameworks" : [ "*" ]
229 },
230 {
231 "url" : "https://vercel.com/docs/functions/limitations" ,
232 "topic" : "Platform limits — function payload size, max duration, regional caps" ,
233 "appliesTo" : [ "route_errors" , "slow_route" ],
234 "applicableFrameworks" : [ "*" ]
235 },
236 {
237 "url" : "https://vercel.com/docs/project-configuration" ,
238 "topic" : "vercel.json configuration — functions, crons, rewrites, redirects, headers, regions" ,
239 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
240 "applicableFrameworks" : [ "*" ]
241 },
242 {
243 "url" : "https://vercel.com/docs/routing/" ,
244 "topic" : "Vercel routing — firewall, bulk redirects, project routes, deployment routes, middleware, and filesystem order" ,
245 "appliesTo" : [ "uncached_route" , "middleware_heavy" , "cache_header_gap" ],
246 "applicableFrameworks" : [ "*" ]
247 },
248 {
249 "url" : "https://vercel.com/docs/redirects/bulk-redirects/" ,
250 "topic" : "Bulk Redirects — framework-agnostic large redirect tables processed before project routes" ,
251 "appliesTo" : [ "uncached_route" ],
252 "applicableFrameworks" : [ "*" ]
253 },
254 {
255 "url" : "https://vercel.com/docs/routing-middleware" ,
256 "topic" : "Vercel Routing Middleware — intercept requests before rendering and keep matcher scope intentional" ,
257 "appliesTo" : [ "middleware_heavy" ],
258 "applicableFrameworks" : [ "*" ]
259 },
260 {
261 "url" : "https://vercel.com/docs/workflow" ,
262 "topic" : "Vercel Workflow — beta durable workflows, observability, Workflow Steps/Storage pricing, and compute billing caveats" ,
263 "appliesTo" : [ "route_errors" , "slow_route" ],
264 "applicableFrameworks" : [ "*" ]
265 },
266 {
267 "url" : "https://workflow-sdk.dev/docs/foundations/starting-workflows" ,
268 "topic" : "Workflow SDK starting workflows — start() returns after enqueueing, returnValue waits for completion, streams/status can be read later" ,
269 "appliesTo" : [ "route_errors" , "slow_route" ],
270 "applicableFrameworks" : [ "*" ]
271 },
272 {
273 "url" : "https://workflow-sdk.dev/docs/foundations/workflows-and-steps" ,
274 "topic" : "Workflow SDK workflows and steps — workflow orchestration, step execution, persisted results, retries, sleep, and suspension" ,
275 "appliesTo" : [ "route_errors" , "slow_route" ],
276 "applicableFrameworks" : [ "*" ]
277 },
278 {
279 "url" : "https://workflow-sdk.dev/docs/foundations/streaming" ,
280 "topic" : "Workflow SDK streaming — durable streams, getReadable startIndex, getWritable, lock release, stream close, and retry caveats" ,
281 "appliesTo" : [ "slow_route" ],
282 "applicableFrameworks" : [ "*" ]
283 },
284 {
285 "url" : "https://workflow-sdk.dev/docs/ai/resumable-streams" ,
286 "topic" : "Workflow SDK resumable streams — reconnecting AI chat streams with run IDs, stream startIndex, and tail-index headers" ,
287 "appliesTo" : [ "slow_route" ],
288 "applicableFrameworks" : [ "*" ]
289 },
290 {
291 "url" : "https://vercel.com/docs/queues" ,
292 "topic" : "Vercel Queues — asynchronous task queues for background work decoupled from the request path" ,
293 "appliesTo" : [ "route_errors" ],
294 "applicableFrameworks" : [ "*" ]
295 },
296 {
297 "url" : "https://vercel.com/docs/concepts/edge-network/regions" ,
298 "topic" : "Vercel function regions — single-region default, multi-region, db proximity" ,
299 "appliesTo" : [ "slow_route" ],
300 "applicableFrameworks" : [ "*" ]
301 },
302 {
303 "url" : "https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config" ,
304 "topic" : "App Router route segment config — dynamic, revalidate, runtime, fetchCache, dynamicParams" ,
305 "appliesTo" : [ "uncached_route" , "rendering_candidate" , "force-dynamic" ],
306 "applicableFrameworks" : [ "next@>=13.0.0" ]
307 },
308 {
309 "url" : "https://nextjs.org/docs/app/api-reference/file-conventions/route" ,
310 "topic" : "Route Handlers — GET handler caching defaults, route segment config, and request handling" ,
311 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
312 "applicableFrameworks" : [ "next@>=13.2.0" ]
313 },
314 {
315 "url" : "https://nextjs.org/docs/app/api-reference/functions/image-response" ,
316 "topic" : "ImageResponse — dynamic OG image response options including status and headers" ,
317 "appliesTo" : [ "uncached_route" , "cache_header_gap" ],
318 "applicableFrameworks" : [ "next@>=13.0.0" ]
319 },
320 {
321 "url" : "https://nextjs.org/docs/app/api-reference/functions/generate-static-params" ,
322 "topic" : "generateStaticParams — pre-render dynamic routes at build time" ,
323 "appliesTo" : [ "uncached_route" , "rendering_candidate" ],
324 "applicableFrameworks" : [ "next@>=13.0.0" ]
325 },
326 {
327 "url" : "https://nextjs.org/docs/app/api-reference/functions/fetch" ,
328 "topic" : "Next.js fetch — server-side cache and next.revalidate semantics for App Router data requests" ,
329 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "cache_header_gap" ],
330 "applicableFrameworks" : [ "next@>=13.0.0" ]
331 },
332 {
333 "url" : "https://nextjs.org/docs/app/api-reference/functions/unstable_cache" ,
334 "topic" : "unstable_cache — Next.js 14/15 cache primitive (replaced in 16 by 'use cache')" ,
335 "appliesTo" : [ "uncached_route" , "function-duration" ],
336 "applicableFrameworks" : [ "next@14 || next@15" ]
337 },
338 {
339 "url" : "https://nextjs.org/docs/app/api-reference/directives/use-cache" ,
340 "topic" : "'use cache' directive — opt-in persistent cache (15+)" ,
341 "appliesTo" : [ "uncached_route" , "function-duration" ],
342 "applicableFrameworks" : [ "next@>=15.0.0" ]
343 },
344 {
345 "url" : "https://nextjs.org/docs/app/api-reference/directives/use-cache-remote" ,
346 "topic" : "'use cache: remote' directive — remote cache storage for shared cached data with Cache Components" ,
347 "appliesTo" : [ "external_api_slow" ],
348 "applicableFrameworks" : [ "next@>=16.0.0" ]
349 },
350 {
351 "url" : "https://nextjs.org/docs/app/api-reference/functions/cacheLife" ,
352 "topic" : "cacheLife() — TTL annotation for 'use cache' segments" ,
353 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" ],
354 "applicableFrameworks" : [ "next@>=15.0.0" ]
355 },
356 {
357 "url" : "https://nextjs.org/docs/app/api-reference/functions/cacheTag" ,
358 "topic" : "cacheTag() — tag-based invalidation for 'use cache'" ,
359 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" ],
360 "applicableFrameworks" : [ "next@>=15.0.0" ]
361 },
362 {
363 "url" : "https://nextjs.org/docs/app/api-reference/functions/revalidateTag" ,
364 "topic" : "revalidateTag — on-demand invalidation by tag" ,
365 "appliesTo" : [ "isr_overrevalidation" ],
366 "applicableFrameworks" : [ "next@>=13.4.0" ]
367 },
368 {
369 "url" : "https://nextjs.org/docs/app/api-reference/functions/revalidatePath" ,
370 "topic" : "revalidatePath — on-demand invalidation by route" ,
371 "appliesTo" : [ "isr_overrevalidation" ],
372 "applicableFrameworks" : [ "next@>=13.4.0" ]
373 },
374 {
375 "url" : "https://nextjs.org/docs/app/api-reference/functions/after" ,
376 "topic" : "after() — non-blocking work post-response (15+)" ,
377 "appliesTo" : [ "function-duration" , "slow_route" ],
378 "applicableFrameworks" : [ "next@>=15.0.0" ]
379 },
380 {
381 "url" : "https://react.dev/reference/react/cache" ,
382 "topic" : "React cache() — per-request memoization in Server Components" ,
383 "appliesTo" : [ "function-duration" , "slow_route" ],
384 "applicableFrameworks" : [ "next@>=13.0.0" ]
385 },
386 {
387 "url" : "https://nextjs.org/docs/app/api-reference/components/image" ,
388 "topic" : "next/image component — formats, sizes, priority, lazy loading" ,
389 "appliesTo" : [ "image_optimization" , "cwv_poor" ],
390 "applicableFrameworks" : [ "next@*" ]
391 },
392 {
393 "url" : "https://nextjs.org/docs/app/api-reference/components/font" ,
394 "topic" : "next/font — self-hosted fonts, no CLS, build-time optimization" ,
395 "appliesTo" : [ "bundle_candidate" , "cwv_poor" ],
396 "applicableFrameworks" : [ "next@>=13.2.0" ]
397 },
398 {
399 "url" : "https://nextjs.org/docs/app/api-reference/components/script" ,
400 "topic" : "next/script component — loading strategies for third-party scripts and App Router worker caveats" ,
401 "appliesTo" : [ "cwv_poor" ],
402 "applicableFrameworks" : [ "next@*" ]
403 },
404 {
405 "url" : "https://nextjs.org/docs/app/guides/lazy-loading" ,
406 "topic" : "next/dynamic — lazy-load heavy client components, SSR opt-out" ,
407 "appliesTo" : [ "bundle_candidate" , "slow_route" , "cwv_poor" ],
408 "applicableFrameworks" : [ "next@*" ]
409 },
410 {
411 "url" : "https://nextjs.org/docs/app/building-your-application/caching" ,
412 "topic" : "Next.js App Router caching model — full-route cache, data cache, request memoization" ,
413 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "function-duration" ],
414 "applicableFrameworks" : [ "next@>=13.0.0" ]
415 },
416 {
417 "url" : "https://nextjs.org/docs/app/api-reference/config/next-config-js/cacheComponents" ,
418 "topic" : "cacheComponents flag — explicit caching model for App Router prerendering and data access" ,
419 "appliesTo" : [ "rendering_candidate" , "uncached_route" ],
420 "applicableFrameworks" : [ "next@>=16.0.0" ]
421 },
422 {
423 "url" : "https://nextjs.org/docs/app/getting-started/caching" ,
424 "topic" : "Cache Components caching guide — static shell, cached dynamic content, runtime dynamic content" ,
425 "appliesTo" : [ "rendering_candidate" , "uncached_route" ],
426 "applicableFrameworks" : [ "next@>=16.0.0" ]
427 },
428 {
429 "url" : "https://nextjs.org/docs/app/guides/migrating-to-cache-components" ,
430 "topic" : "Migrating to Cache Components — route segment config replacements and static shell migration" ,
431 "appliesTo" : [ "rendering_candidate" , "uncached_route" ],
432 "applicableFrameworks" : [ "next@>=16.0.0" ]
433 },
434 {
435 "url" : "https://nextjs.org/docs/app/building-your-application/routing/middleware" ,
436 "topic" : "Next.js middleware — matcher config, runtime, request modification" ,
437 "appliesTo" : [ "middleware-broad-matcher" , "platform_bot_protection" , "middleware_heavy" ],
438 "applicableFrameworks" : [ "next@>=12.0.0" ]
439 },
440 {
441 "url" : "https://nextjs.org/docs/app/building-your-application/rendering/partial-prerendering" ,
442 "topic" : "Partial Prerendering (PPR) — combine static shell + dynamic streaming (15+ experimental, stable later)" ,
443 "appliesTo" : [ "rendering_candidate" , "slow_route" ],
444 "applicableFrameworks" : [ "next@>=15.0.0" ]
445 },
446 {
447 "url" : "https://nextjs.org/docs/app/building-your-application/optimizing/bundle-analyzer" ,
448 "topic" : "@next/bundle-analyzer — diagnose oversized client bundles" ,
449 "appliesTo" : [ "bundle_candidate" ],
450 "applicableFrameworks" : [ "next@*" ]
451 },
452 {
453 "url" : "https://vercel.com/docs/frameworks/full-stack/sveltekit" ,
454 "topic" : "SvelteKit on Vercel — adapter config, ISR, split function bundling, regions, and runtime settings" ,
455 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "cold_start" , "slow_route" ],
456 "applicableFrameworks" : [ "sveltekit@*" ]
457 },
458 {
459 "url" : "https://svelte.dev/docs/kit/adapter-vercel" ,
460 "topic" : "SvelteKit adapter-vercel — ISR, split, regions, max duration, and image config" ,
461 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "cold_start" , "slow_route" ],
462 "applicableFrameworks" : [ "sveltekit@*" ]
463 },
464 {
465 "url" : "https://svelte.dev/docs/kit/page-options" ,
466 "topic" : "SvelteKit page options — prerender, SSR, CSR, and server route prerendering" ,
467 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" ],
468 "applicableFrameworks" : [ "sveltekit@*" ]
469 },
470 {
471 "url" : "https://kit.svelte.dev/docs/adapter-vercel" ,
472 "topic" : "SvelteKit Vercel adapter — runtime, isr, split, regions, maxDuration config" ,
473 "appliesTo" : [ "slow_route" , "cold_start" , "uncached_route" ],
474 "applicableFrameworks" : [ "sveltekit@*" ]
475 },
476 {
477 "url" : "https://kit.svelte.dev/docs/page-options" ,
478 "topic" : "SvelteKit page options — prerender, ssr, csr" ,
479 "appliesTo" : [ "rendering_candidate" , "uncached_route" ],
480 "applicableFrameworks" : [ "sveltekit@*" ]
481 },
482 {
483 "url" : "https://kit.svelte.dev/docs/load" ,
484 "topic" : "SvelteKit load functions — server-side data loading patterns, parallel loads" ,
485 "appliesTo" : [ "slow_route" , "function-duration" ],
486 "applicableFrameworks" : [ "sveltekit@*" ]
487 },
488 {
489 "url" : "https://kit.svelte.dev/docs/routing" ,
490 "topic" : "SvelteKit routing — +page.svelte, +page.server.ts, +server.ts route handlers, +layout.svelte" ,
491 "appliesTo" : [ "slow_route" , "uncached_route" , "rendering_candidate" ],
492 "applicableFrameworks" : [ "sveltekit@*" ]
493 },
494 {
495 "url" : "https://kit.svelte.dev/docs/hooks" ,
496 "topic" : "SvelteKit hooks — handle (request middleware), handleFetch (per-fetch interception), handleError" ,
497 "appliesTo" : [ "middleware_heavy" , "uncached_route" , "route_errors" ],
498 "applicableFrameworks" : [ "sveltekit@*" ]
499 },
500 {
501 "url" : "https://kit.svelte.dev/docs/form-actions" ,
502 "topic" : "SvelteKit form actions — server-side form handling without separate API endpoints" ,
503 "appliesTo" : [ "slow_route" , "uncached_route" ],
504 "applicableFrameworks" : [ "sveltekit@*" ]
505 },
506 {
507 "url" : "https://kit.svelte.dev/docs/state-management" ,
508 "topic" : "SvelteKit state management — request-scoped state, locals, avoiding cross-request leakage" ,
509 "appliesTo" : [ "slow_route" , "route_errors" ],
510 "applicableFrameworks" : [ "sveltekit@*" ]
511 },
512 {
513 "url" : "https://kit.svelte.dev/docs/cli" ,
514 "topic" : "SvelteKit CLI — build, preview, sync. Use `vite build` for production output that adapter-vercel consumes." ,
515 "appliesTo" : [],
516 "applicableFrameworks" : [ "sveltekit@*" ]
517 },
518 {
519 "url" : "https://kit.svelte.dev/docs/migrating" ,
520 "topic" : "SvelteKit migration guides — for users on older majors who may not have ISR / per-route prerender" ,
521 "appliesTo" : [],
522 "applicableFrameworks" : [ "sveltekit@*" ]
523 },
524 {
525 "url" : "https://docs.astro.build/en/guides/integrations-guide/vercel/" ,
526 "topic" : "Astro Vercel adapter — ISR, image services, edge middleware, runtime config" ,
527 "appliesTo" : [ "slow_route" , "cold_start" , "uncached_route" , "isr_overrevalidation" , "rendering_candidate" , "middleware_heavy" ],
528 "applicableFrameworks" : [ "astro@*" ]
529 },
530 {
531 "url" : "https://vercel.com/docs/frameworks/frontend/astro" ,
532 "topic" : "Astro on Vercel — output modes, ISR, edge middleware, and image optimization" ,
533 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" , "middleware_heavy" , "image_optimization" ],
534 "applicableFrameworks" : [ "astro@*" ]
535 },
536 {
537 "url" : "https://docs.astro.build/en/guides/on-demand-rendering/" ,
538 "topic" : "Astro on-demand rendering — output server mode and per-route prerender controls" ,
539 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" ],
540 "applicableFrameworks" : [ "astro@*" ]
541 },
542 {
543 "url" : "https://docs.astro.build/en/reference/configuration-reference/" ,
544 "topic" : "Astro configuration — output mode (static/server/hybrid), prerender, integrations" ,
545 "appliesTo" : [ "rendering_candidate" , "uncached_route" ],
546 "applicableFrameworks" : [ "astro@*" ]
547 },
548 {
549 "url" : "https://docs.astro.build/en/guides/server-side-rendering/" ,
550 "topic" : "Astro SSR — hybrid mode, prerender export, dynamic routes" ,
551 "appliesTo" : [ "slow_route" , "uncached_route" , "rendering_candidate" ],
552 "applicableFrameworks" : [ "astro@*" ]
553 },
554 {
555 "url" : "https://nuxt.com/docs/getting-started/deployment#vercel" ,
556 "topic" : "Nuxt on Vercel — deployment, runtime configuration, ISR support" ,
557 "appliesTo" : [ "slow_route" , "cold_start" , "uncached_route" ],
558 "applicableFrameworks" : [ "nuxt@*" ]
559 },
560 {
561 "url" : "https://vercel.com/docs/frameworks/full-stack/nuxt" ,
562 "topic" : "Nuxt on Vercel — routeRules ISR, Vercel cache integration, deployment, and runtime configuration" ,
563 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "slow_route" , "cold_start" ],
564 "applicableFrameworks" : [ "nuxt@>=3.0.0" ]
565 },
566 {
567 "url" : "https://nuxt.com/docs/api/composables/use-fetch" ,
568 "topic" : "Nuxt useFetch / useAsyncData — automatic deduplication, parallel data loads, cache options" ,
569 "appliesTo" : [ "slow_route" , "function-duration" ],
570 "applicableFrameworks" : [ "nuxt@*" ]
571 },
572 {
573 "url" : "https://nuxt.com/docs/4.x/api/utils/define-route-rules" ,
574 "topic" : "Nuxt defineRouteRules — per-route prerender, ISR, SWR, headers, and rendering controls" ,
575 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" ],
576 "applicableFrameworks" : [ "nuxt@>=3.0.0" ]
577 },
578 {
579 "url" : "https://nuxt.com/docs/4.x/guide/concepts/rendering" ,
580 "topic" : "Nuxt rendering modes — universal rendering, routeRules, prerendering, and hybrid rendering" ,
581 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" ],
582 "applicableFrameworks" : [ "nuxt@>=3.0.0" ]
583 },
584 {
585 "url" : "https://nuxt.com/docs/api/utils/define-route-rules" ,
586 "topic" : "Nuxt route rules — per-route SSR/SSG/ISR/swr/cache config in nuxt.config.ts" ,
587 "appliesTo" : [ "uncached_route" , "isr_overrevalidation" , "rendering_candidate" ],
588 "applicableFrameworks" : [ "nuxt@*" ]
589 },
590 {
591 "url" : "https://docs.astro.build/en/guides/integrations-guide/vercel/" ,
592 "topic" : "Astro Vercel adapter — SSR, ISR, image optimization on Vercel" ,
593 "appliesTo" : [ "slow_route" , "image_optimization" ],
594 "applicableFrameworks" : [ "astro@*" ]
595 },
596 {
597 "url" : "https://nuxt.com/docs/getting-started/deployment#vercel" ,
598 "topic" : "Nuxt on Vercel — Nitro preset, ISR, caching headers" ,
599 "appliesTo" : [ "uncached_route" , "rendering_candidate" ],
600 "applicableFrameworks" : [ "nuxt@*" ]
601 }
602 ],
603 "ruleSkillRefs" : [
604 {
605 "skill" : "vercel-react-best-practices" ,
606 "rule" : "async-parallel" ,
607 "topic" : "Promise.all for independent awaits" ,
608 "applicableFrameworks" : [ "next@*" , "react@*" ]
609 },
610 {
611 "skill" : "vercel-react-best-practices" ,
612 "rule" : "async-suspense-boundaries" ,
613 "topic" : "Suspense for streaming content" ,
614 "applicableFrameworks" : [ "next@>=13.0.0" , "react@>=18.0.0" ]
615 },
616 {
617 "skill" : "vercel-react-best-practices" ,
618 "rule" : "bundle-barrel-imports" ,
619 "topic" : "Avoid barrel files, prefer direct imports" ,
620 "applicableFrameworks" : [ "next@*" , "react@*" ]
621 },
622 {
623 "skill" : "vercel-react-best-practices" ,
624 "rule" : "bundle-dynamic-imports" ,
625 "topic" : "next/dynamic for heavy components" ,
626 "applicableFrameworks" : [ "next@*" ]
627 },
628 {
629 "skill" : "vercel-react-best-practices" ,
630 "rule" : "bundle-defer-third-party" ,
631 "topic" : "Defer analytics/logging scripts post-hydration" ,
632 "applicableFrameworks" : [ "next@*" , "react@*" ]
633 },
634 {
635 "skill" : "vercel-react-best-practices" ,
636 "rule" : "server-cache-react" ,
637 "topic" : "React.cache() for request deduplication" ,
638 "applicableFrameworks" : [ "next@>=13.0.0" ]
639 },
640 {
641 "skill" : "vercel-react-best-practices" ,
642 "rule" : "server-cache-lru" ,
643 "topic" : "LRU for cross-request caching" ,
644 "applicableFrameworks" : [ "next@*" ]
645 },
646 {
647 "skill" : "vercel-react-best-practices" ,
648 "rule" : "server-after-nonblocking" ,
649 "topic" : "after() for non-blocking work post-response" ,
650 "applicableFrameworks" : [ "next@>=15.0.0" ]
651 },
652 {
653 "skill" : "vercel-react-best-practices" ,
654 "rule" : "server-parallel-fetching" ,
655 "topic" : "Restructure server components for parallel fetches" ,
656 "applicableFrameworks" : [ "next@>=13.0.0" ]
657 },
658 {
659 "skill" : "vercel-react-best-practices" ,
660 "rule" : "server-hoist-static-io" ,
661 "topic" : "Hoist static I/O (fonts, logos) to module level" ,
662 "applicableFrameworks" : [ "next@*" ]
663 },
664 {
665 "skill" : "vercel-react-best-practices" ,
666 "rule" : "client-swr-dedup" ,
667 "topic" : "SWR for client-side request deduplication" ,
668 "applicableFrameworks" : [ "next@*" , "react@*" ]
669 },
670 {
671 "skill" : "vercel-react-best-practices" ,
672 "rule" : "rendering-content-visibility" ,
673 "topic" : "content-visibility for long lists" ,
674 "applicableFrameworks" : [ "*" ]
675 },
676 {
677 "skill" : "vercel-react-best-practices" ,
678 "rule" : "rendering-resource-hints" ,
679 "topic" : "React DOM resource hints for preloading" ,
680 "applicableFrameworks" : [ "next@*" , "react@*" ]
681 }
682 ]
683 }