684 lines
31 KiB
JSON
684 lines
31 KiB
JSON
{
|
|
"$schema": "Curated documentation allow-list for the vercel-optimize skill. Entries are version-aware via applicableFrameworks (semver). The recommender prompt receives only the subset valid for the user's stack. Citations outside this allow-list are stripped by the unknown-citation sanitizer.",
|
|
"version": "1.1.1",
|
|
"lastVerified": "2026-05-26",
|
|
"schemaVersion": "1.0",
|
|
"applicableFrameworksSyntax": "Semver-style. '*' = any framework. 'next@*' = any Next.js. 'next@14' = Next 14.x. 'next@>=15.0.0' = Next 15+. Multiple via '||': 'next@14 || next@>=15.0.0'.",
|
|
"urls": [
|
|
{
|
|
"url": "https://vercel.com/docs/caching/cdn-cache",
|
|
"topic": "Vercel CDN Cache — cacheable response criteria, static file caching, dynamic response caching, and cache limits",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/headers/request-headers",
|
|
"topic": "Vercel request headers — documented geolocation header names including country, country-region, city, latitude, longitude, timezone, and postal code",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/caching/cache-control-headers",
|
|
"topic": "Cache-Control headers on Vercel — s-maxage, CDN-Cache-Control, Vercel-CDN-Cache-Control, stale-while-revalidate",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/caching/runtime-cache",
|
|
"topic": "Runtime Cache — reuse repeated API, database, and expensive computation results from Vercel Functions",
|
|
"appliesTo": ["slow_route", "external_api_slow"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/fluid-compute",
|
|
"topic": "Fluid Compute — reduced cold starts, active CPU pricing, function instance reuse, memory right-sizing",
|
|
"appliesTo": ["cold_start", "platform_fluid_compute", "slow_route", "oversized_memory"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/configuring-functions/memory",
|
|
"topic": "Function memory configuration — Standard 2GB / Performance 4GB tiers, when to upgrade Performance, account-level setting",
|
|
"appliesTo": ["platform_fluid_compute"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/speed-insights",
|
|
"topic": "Vercel Speed Insights — LCP, INP, CLS, TTFB, FCP, FID on real-user traffic",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://web.dev/articles/vitals",
|
|
"topic": "Core Web Vitals — LCP < 2500ms, INP < 200ms, CLS < 0.1 thresholds",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://web.dev/articles/optimize-lcp",
|
|
"topic": "Optimize LCP — preload critical images, defer non-critical CSS, reduce server response",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://web.dev/articles/optimize-inp",
|
|
"topic": "Optimize INP — break up long tasks, defer non-essential JavaScript",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://web.dev/articles/optimize-cls",
|
|
"topic": "Optimize CLS — reserve space for images, fonts, ads; avoid layout-affecting injections",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/vercel-firewall/vercel-waf/managed-rulesets",
|
|
"topic": "Vercel WAF managed rulesets — managed bot and AI-bot actions by ruleset",
|
|
"appliesTo": ["platform_bot_protection", "uncached_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/vercel-firewall/vercel-waf/custom-rules",
|
|
"topic": "Vercel WAF custom rules — log, deny, challenge, bypass, redirect, and persistent actions",
|
|
"appliesTo": ["platform_bot_protection", "uncached_route", "middleware_heavy"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions",
|
|
"topic": "Vercel Functions lifecycle — regions, memory, max duration, runtimes",
|
|
"appliesTo": ["slow_route", "cold_start", "route_errors"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/debug-slow-functions",
|
|
"topic": "Debugging slow functions — isolate external latency, cold starts, bundle size, initialization, memory, and connection pooling",
|
|
"appliesTo": ["slow_route", "cold_start", "external_api_slow"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/functions-api-reference/vercel-functions-package",
|
|
"topic": "@vercel/functions helpers — waitUntil for post-response work and attachDatabasePool for pool lifecycle",
|
|
"appliesTo": ["slow_route", "cold_start", "external_api_slow", "route_errors"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/limitations",
|
|
"topic": "Vercel Functions limits — duration, payload, runtime, and invocation constraints",
|
|
"appliesTo": ["cold_start", "route_errors", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/runtimes",
|
|
"topic": "Runtime selection — node, python, ruby, go (edge runtime deprecated per 2026 platform notes)",
|
|
"appliesTo": ["cold_start", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/incremental-static-regeneration",
|
|
"topic": "Incremental Static Regeneration — reads vs writes, revalidate timing, on-demand revalidation",
|
|
"appliesTo": ["isr_overrevalidation", "uncached_route"],
|
|
"applicableFrameworks": ["next@*", "sveltekit@*", "astro@*", "nuxt@*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/image-optimization",
|
|
"topic": "Image Optimization on Vercel — supported formats, transformations, billing",
|
|
"appliesTo": ["image_optimization"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/image-optimization/managing-image-optimization-costs",
|
|
"topic": "Managing Image Optimization usage and costs — reduce unnecessary transformations and cache misses",
|
|
"appliesTo": ["image_optimization"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/image-optimization/limits-and-pricing",
|
|
"topic": "Image Optimization limits and pricing — source format, dimensions, transformed image size, and billing dimensions",
|
|
"appliesTo": ["image_optimization"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/observability/observability-plus",
|
|
"topic": "Observability Plus — path-level metrics, p75 sort, and retention",
|
|
"appliesTo": ["platform_fluid_compute", "observability_events_attribution"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/monorepos",
|
|
"topic": "Monorepos — skip unaffected projects and ignored build step tradeoffs",
|
|
"appliesTo": ["build_minutes_fanout"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/builds",
|
|
"topic": "Builds — build infrastructure, monorepo build controls, concurrency, and queues",
|
|
"appliesTo": ["build_minutes_fanout"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://turborepo.dev/docs/crafting-your-repository/caching",
|
|
"topic": "Turborepo caching — task-level cache config, force flags, remote cache",
|
|
"appliesTo": ["build_minutes_fanout"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/regions",
|
|
"topic": "Vercel Functions regions — single vs multi-region, defaults, latency tradeoffs",
|
|
"appliesTo": ["region_misconfig"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/configuring-functions/region",
|
|
"topic": "Configuring function region — vercel.json regions, segment-level preferredRegion",
|
|
"appliesTo": ["region_misconfig"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/alerts",
|
|
"topic": "Alerts — per-metric alerting on routes/status/usage with supported destinations",
|
|
"appliesTo": ["observability_events_attribution", "usage_spike_triage"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/spend-management",
|
|
"topic": "Spend Management — usage thresholds, notifications, and project pause behavior",
|
|
"appliesTo": ["usage_spike_triage"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/cli/metrics",
|
|
"topic": "vercel metrics CLI — schema, query construction, OData filters",
|
|
"appliesTo": [],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/cli/usage",
|
|
"topic": "vercel usage CLI — billing line items, breakdown, effectiveCost vs billedCost",
|
|
"appliesTo": [],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/cli/inspect",
|
|
"topic": "vercel inspect — view a deployment's build logs, region, runtime, commit, creator",
|
|
"appliesTo": ["route_errors"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/manage-cdn-usage",
|
|
"topic": "Vercel Edge Network bandwidth — Fast Data Transfer, included quotas, overage pricing",
|
|
"appliesTo": ["large_static_asset", "uncached_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/runtimes/edge-runtime",
|
|
"topic": "Vercel Edge Runtime — supported APIs, constraints, incompatible modules (node:* builtins, native deps)",
|
|
"appliesTo": ["edge_heavy_import", "cold_start"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/bot-management",
|
|
"topic": "Vercel Bot Protection — enabling, false-positive handling, billing implications",
|
|
"appliesTo": ["platform_bot_protection"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/botid",
|
|
"topic": "BotID — invisible challenge, Basic and Deep Analysis modes, checkBotId, observability, and billing",
|
|
"appliesTo": ["platform_bot_protection"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/functions/limitations",
|
|
"topic": "Platform limits — function payload size, max duration, regional caps",
|
|
"appliesTo": ["route_errors", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/project-configuration",
|
|
"topic": "vercel.json configuration — functions, crons, rewrites, redirects, headers, regions",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/routing/",
|
|
"topic": "Vercel routing — firewall, bulk redirects, project routes, deployment routes, middleware, and filesystem order",
|
|
"appliesTo": ["uncached_route", "middleware_heavy", "cache_header_gap"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/redirects/bulk-redirects/",
|
|
"topic": "Bulk Redirects — framework-agnostic large redirect tables processed before project routes",
|
|
"appliesTo": ["uncached_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/routing-middleware",
|
|
"topic": "Vercel Routing Middleware — intercept requests before rendering and keep matcher scope intentional",
|
|
"appliesTo": ["middleware_heavy"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/workflow",
|
|
"topic": "Vercel Workflow — beta durable workflows, observability, Workflow Steps/Storage pricing, and compute billing caveats",
|
|
"appliesTo": ["route_errors", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://workflow-sdk.dev/docs/foundations/starting-workflows",
|
|
"topic": "Workflow SDK starting workflows — start() returns after enqueueing, returnValue waits for completion, streams/status can be read later",
|
|
"appliesTo": ["route_errors", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://workflow-sdk.dev/docs/foundations/workflows-and-steps",
|
|
"topic": "Workflow SDK workflows and steps — workflow orchestration, step execution, persisted results, retries, sleep, and suspension",
|
|
"appliesTo": ["route_errors", "slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://workflow-sdk.dev/docs/foundations/streaming",
|
|
"topic": "Workflow SDK streaming — durable streams, getReadable startIndex, getWritable, lock release, stream close, and retry caveats",
|
|
"appliesTo": ["slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://workflow-sdk.dev/docs/ai/resumable-streams",
|
|
"topic": "Workflow SDK resumable streams — reconnecting AI chat streams with run IDs, stream startIndex, and tail-index headers",
|
|
"appliesTo": ["slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/queues",
|
|
"topic": "Vercel Queues — asynchronous task queues for background work decoupled from the request path",
|
|
"appliesTo": ["route_errors"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/concepts/edge-network/regions",
|
|
"topic": "Vercel function regions — single-region default, multi-region, db proximity",
|
|
"appliesTo": ["slow_route"],
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config",
|
|
"topic": "App Router route segment config — dynamic, revalidate, runtime, fetchCache, dynamicParams",
|
|
"appliesTo": ["uncached_route", "rendering_candidate", "force-dynamic"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/file-conventions/route",
|
|
"topic": "Route Handlers — GET handler caching defaults, route segment config, and request handling",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["next@>=13.2.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/image-response",
|
|
"topic": "ImageResponse — dynamic OG image response options including status and headers",
|
|
"appliesTo": ["uncached_route", "cache_header_gap"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/generate-static-params",
|
|
"topic": "generateStaticParams — pre-render dynamic routes at build time",
|
|
"appliesTo": ["uncached_route", "rendering_candidate"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/fetch",
|
|
"topic": "Next.js fetch — server-side cache and next.revalidate semantics for App Router data requests",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "cache_header_gap"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/unstable_cache",
|
|
"topic": "unstable_cache — Next.js 14/15 cache primitive (replaced in 16 by 'use cache')",
|
|
"appliesTo": ["uncached_route", "function-duration"],
|
|
"applicableFrameworks": ["next@14 || next@15"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/directives/use-cache",
|
|
"topic": "'use cache' directive — opt-in persistent cache (15+)",
|
|
"appliesTo": ["uncached_route", "function-duration"],
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/directives/use-cache-remote",
|
|
"topic": "'use cache: remote' directive — remote cache storage for shared cached data with Cache Components",
|
|
"appliesTo": ["external_api_slow"],
|
|
"applicableFrameworks": ["next@>=16.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/cacheLife",
|
|
"topic": "cacheLife() — TTL annotation for 'use cache' segments",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation"],
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/cacheTag",
|
|
"topic": "cacheTag() — tag-based invalidation for 'use cache'",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation"],
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/revalidateTag",
|
|
"topic": "revalidateTag — on-demand invalidation by tag",
|
|
"appliesTo": ["isr_overrevalidation"],
|
|
"applicableFrameworks": ["next@>=13.4.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/revalidatePath",
|
|
"topic": "revalidatePath — on-demand invalidation by route",
|
|
"appliesTo": ["isr_overrevalidation"],
|
|
"applicableFrameworks": ["next@>=13.4.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/functions/after",
|
|
"topic": "after() — non-blocking work post-response (15+)",
|
|
"appliesTo": ["function-duration", "slow_route"],
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"url": "https://react.dev/reference/react/cache",
|
|
"topic": "React cache() — per-request memoization in Server Components",
|
|
"appliesTo": ["function-duration", "slow_route"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/components/image",
|
|
"topic": "next/image component — formats, sizes, priority, lazy loading",
|
|
"appliesTo": ["image_optimization", "cwv_poor"],
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/components/font",
|
|
"topic": "next/font — self-hosted fonts, no CLS, build-time optimization",
|
|
"appliesTo": ["bundle_candidate", "cwv_poor"],
|
|
"applicableFrameworks": ["next@>=13.2.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/components/script",
|
|
"topic": "next/script component — loading strategies for third-party scripts and App Router worker caveats",
|
|
"appliesTo": ["cwv_poor"],
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/guides/lazy-loading",
|
|
"topic": "next/dynamic — lazy-load heavy client components, SSR opt-out",
|
|
"appliesTo": ["bundle_candidate", "slow_route", "cwv_poor"],
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/building-your-application/caching",
|
|
"topic": "Next.js App Router caching model — full-route cache, data cache, request memoization",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "function-duration"],
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/api-reference/config/next-config-js/cacheComponents",
|
|
"topic": "cacheComponents flag — explicit caching model for App Router prerendering and data access",
|
|
"appliesTo": ["rendering_candidate", "uncached_route"],
|
|
"applicableFrameworks": ["next@>=16.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/getting-started/caching",
|
|
"topic": "Cache Components caching guide — static shell, cached dynamic content, runtime dynamic content",
|
|
"appliesTo": ["rendering_candidate", "uncached_route"],
|
|
"applicableFrameworks": ["next@>=16.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/guides/migrating-to-cache-components",
|
|
"topic": "Migrating to Cache Components — route segment config replacements and static shell migration",
|
|
"appliesTo": ["rendering_candidate", "uncached_route"],
|
|
"applicableFrameworks": ["next@>=16.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/building-your-application/routing/middleware",
|
|
"topic": "Next.js middleware — matcher config, runtime, request modification",
|
|
"appliesTo": ["middleware-broad-matcher", "platform_bot_protection", "middleware_heavy"],
|
|
"applicableFrameworks": ["next@>=12.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/building-your-application/rendering/partial-prerendering",
|
|
"topic": "Partial Prerendering (PPR) — combine static shell + dynamic streaming (15+ experimental, stable later)",
|
|
"appliesTo": ["rendering_candidate", "slow_route"],
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nextjs.org/docs/app/building-your-application/optimizing/bundle-analyzer",
|
|
"topic": "@next/bundle-analyzer — diagnose oversized client bundles",
|
|
"appliesTo": ["bundle_candidate"],
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/frameworks/full-stack/sveltekit",
|
|
"topic": "SvelteKit on Vercel — adapter config, ISR, split function bundling, regions, and runtime settings",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "cold_start", "slow_route"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://svelte.dev/docs/kit/adapter-vercel",
|
|
"topic": "SvelteKit adapter-vercel — ISR, split, regions, max duration, and image config",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "cold_start", "slow_route"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://svelte.dev/docs/kit/page-options",
|
|
"topic": "SvelteKit page options — prerender, SSR, CSR, and server route prerendering",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/adapter-vercel",
|
|
"topic": "SvelteKit Vercel adapter — runtime, isr, split, regions, maxDuration config",
|
|
"appliesTo": ["slow_route", "cold_start", "uncached_route"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/page-options",
|
|
"topic": "SvelteKit page options — prerender, ssr, csr",
|
|
"appliesTo": ["rendering_candidate", "uncached_route"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/load",
|
|
"topic": "SvelteKit load functions — server-side data loading patterns, parallel loads",
|
|
"appliesTo": ["slow_route", "function-duration"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/routing",
|
|
"topic": "SvelteKit routing — +page.svelte, +page.server.ts, +server.ts route handlers, +layout.svelte",
|
|
"appliesTo": ["slow_route", "uncached_route", "rendering_candidate"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/hooks",
|
|
"topic": "SvelteKit hooks — handle (request middleware), handleFetch (per-fetch interception), handleError",
|
|
"appliesTo": ["middleware_heavy", "uncached_route", "route_errors"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/form-actions",
|
|
"topic": "SvelteKit form actions — server-side form handling without separate API endpoints",
|
|
"appliesTo": ["slow_route", "uncached_route"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/state-management",
|
|
"topic": "SvelteKit state management — request-scoped state, locals, avoiding cross-request leakage",
|
|
"appliesTo": ["slow_route", "route_errors"],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/cli",
|
|
"topic": "SvelteKit CLI — build, preview, sync. Use `vite build` for production output that adapter-vercel consumes.",
|
|
"appliesTo": [],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://kit.svelte.dev/docs/migrating",
|
|
"topic": "SvelteKit migration guides — for users on older majors who may not have ISR / per-route prerender",
|
|
"appliesTo": [],
|
|
"applicableFrameworks": ["sveltekit@*"]
|
|
},
|
|
{
|
|
"url": "https://docs.astro.build/en/guides/integrations-guide/vercel/",
|
|
"topic": "Astro Vercel adapter — ISR, image services, edge middleware, runtime config",
|
|
"appliesTo": ["slow_route", "cold_start", "uncached_route", "isr_overrevalidation", "rendering_candidate", "middleware_heavy"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/frameworks/frontend/astro",
|
|
"topic": "Astro on Vercel — output modes, ISR, edge middleware, and image optimization",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate", "middleware_heavy", "image_optimization"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://docs.astro.build/en/guides/on-demand-rendering/",
|
|
"topic": "Astro on-demand rendering — output server mode and per-route prerender controls",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://docs.astro.build/en/reference/configuration-reference/",
|
|
"topic": "Astro configuration — output mode (static/server/hybrid), prerender, integrations",
|
|
"appliesTo": ["rendering_candidate", "uncached_route"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://docs.astro.build/en/guides/server-side-rendering/",
|
|
"topic": "Astro SSR — hybrid mode, prerender export, dynamic routes",
|
|
"appliesTo": ["slow_route", "uncached_route", "rendering_candidate"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/getting-started/deployment#vercel",
|
|
"topic": "Nuxt on Vercel — deployment, runtime configuration, ISR support",
|
|
"appliesTo": ["slow_route", "cold_start", "uncached_route"],
|
|
"applicableFrameworks": ["nuxt@*"]
|
|
},
|
|
{
|
|
"url": "https://vercel.com/docs/frameworks/full-stack/nuxt",
|
|
"topic": "Nuxt on Vercel — routeRules ISR, Vercel cache integration, deployment, and runtime configuration",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "slow_route", "cold_start"],
|
|
"applicableFrameworks": ["nuxt@>=3.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/api/composables/use-fetch",
|
|
"topic": "Nuxt useFetch / useAsyncData — automatic deduplication, parallel data loads, cache options",
|
|
"appliesTo": ["slow_route", "function-duration"],
|
|
"applicableFrameworks": ["nuxt@*"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/4.x/api/utils/define-route-rules",
|
|
"topic": "Nuxt defineRouteRules — per-route prerender, ISR, SWR, headers, and rendering controls",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate"],
|
|
"applicableFrameworks": ["nuxt@>=3.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/4.x/guide/concepts/rendering",
|
|
"topic": "Nuxt rendering modes — universal rendering, routeRules, prerendering, and hybrid rendering",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate"],
|
|
"applicableFrameworks": ["nuxt@>=3.0.0"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/api/utils/define-route-rules",
|
|
"topic": "Nuxt route rules — per-route SSR/SSG/ISR/swr/cache config in nuxt.config.ts",
|
|
"appliesTo": ["uncached_route", "isr_overrevalidation", "rendering_candidate"],
|
|
"applicableFrameworks": ["nuxt@*"]
|
|
},
|
|
{
|
|
"url": "https://docs.astro.build/en/guides/integrations-guide/vercel/",
|
|
"topic": "Astro Vercel adapter — SSR, ISR, image optimization on Vercel",
|
|
"appliesTo": ["slow_route", "image_optimization"],
|
|
"applicableFrameworks": ["astro@*"]
|
|
},
|
|
{
|
|
"url": "https://nuxt.com/docs/getting-started/deployment#vercel",
|
|
"topic": "Nuxt on Vercel — Nitro preset, ISR, caching headers",
|
|
"appliesTo": ["uncached_route", "rendering_candidate"],
|
|
"applicableFrameworks": ["nuxt@*"]
|
|
}
|
|
],
|
|
"ruleSkillRefs": [
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "async-parallel",
|
|
"topic": "Promise.all for independent awaits",
|
|
"applicableFrameworks": ["next@*", "react@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "async-suspense-boundaries",
|
|
"topic": "Suspense for streaming content",
|
|
"applicableFrameworks": ["next@>=13.0.0", "react@>=18.0.0"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "bundle-barrel-imports",
|
|
"topic": "Avoid barrel files, prefer direct imports",
|
|
"applicableFrameworks": ["next@*", "react@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "bundle-dynamic-imports",
|
|
"topic": "next/dynamic for heavy components",
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "bundle-defer-third-party",
|
|
"topic": "Defer analytics/logging scripts post-hydration",
|
|
"applicableFrameworks": ["next@*", "react@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "server-cache-react",
|
|
"topic": "React.cache() for request deduplication",
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "server-cache-lru",
|
|
"topic": "LRU for cross-request caching",
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "server-after-nonblocking",
|
|
"topic": "after() for non-blocking work post-response",
|
|
"applicableFrameworks": ["next@>=15.0.0"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "server-parallel-fetching",
|
|
"topic": "Restructure server components for parallel fetches",
|
|
"applicableFrameworks": ["next@>=13.0.0"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "server-hoist-static-io",
|
|
"topic": "Hoist static I/O (fonts, logos) to module level",
|
|
"applicableFrameworks": ["next@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "client-swr-dedup",
|
|
"topic": "SWR for client-side request deduplication",
|
|
"applicableFrameworks": ["next@*", "react@*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "rendering-content-visibility",
|
|
"topic": "content-visibility for long lists",
|
|
"applicableFrameworks": ["*"]
|
|
},
|
|
{
|
|
"skill": "vercel-react-best-practices",
|
|
"rule": "rendering-resource-hints",
|
|
"topic": "React DOM resource hints for preloading",
|
|
"applicableFrameworks": ["next@*", "react@*"]
|
|
}
|
|
]
|
|
}
|