Official agent skill

Next Cache Components Optimizer

by vercel in vercel/next.js

Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation).

OfficialMITAuto-check passedTesting & QA

Install Next Cache Components Optimizer

skills CLI
$ npx skills add vercel/next.js --skill next-cache-components-optimizer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vercel/next.js next-cache-components-optimizer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vercel/next.js.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/next-cache-components-optimizer .claude/skills/next-cache-components-optimizer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
next-cache-components-optimizer
GitHub stars
143k
Token cost
~5.8k tokens
SKILL.md length
2,771 words
Files
4
Skills in repo
27
Repo updated
First seen
Licence
MIT

At a glance

Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation).

  • Works in 2 steps: Never measure on next dev. It does not… → The measured build must expose the…
  • Asked to grow a static shell
  • SKILL.md covers What is invariant, and what is…, Two entry points, two instant…, Goal and Reporting to the user, plus 13 more sections
  • Calls rg, npm and npx

What it does

Next Cache Components Optimizer is an agent skill from vercel/next.js, published by the product's own GitHub organization. Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route and entry point at a time; the shipped test then guards against regression. Use when asked to grow a static shell, fix a slow first paint or non-instant navigation, diagnose which Suspense boundary blocks useful UI, or add instant() regression coverage…

Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files (for example `reference/red-test-robustness.md`, `rig-template.md` and `test-template.md`).

It sits in Testing & QA, covering Browser testing and End-to-end testing. It works with Next.js and Playwright. The licence is MIT.

When your agent uses it

  • Asked to grow a static shell
  • Fix a slow first paint
  • Non-instant navigation
  • Diagnose which Suspense boundary blocks useful UI

Example prompts

  • “/next-cache-components-optimizer”

Requirements

  • Node.js

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Never measure on next dev. It does not prefetch, and its lock is
  2. The measured build must expose the testing API. Otherwise instant()

What it can do on your machine

Read from SKILL.md and the folder at commit a32ddfd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • rg
    • npm
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • nextjs.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Next Cache Components Optimizer loads about 5.8k tokens when it runs. Until then it costs about 152 tokens; SKILL.md has 2,771 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~152
When it runs · the whole SKILL.md, loaded when a task matches
~5.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vercel/next.js at commit a32ddfd, republished under its MIT licence (© vercel). 2,771 words, ~5,768 tokens.

Download SKILL.mdSave it as .claude/skills/next-cache-components-optimizer/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
next-cache-components-optimizer
description
Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation). Encode the goal as a failing @next/playwright instant() e2e and work it to green, one verified route and entry point at a time; the shipped test then guards against regression. Use when asked to grow a static shell, fix a slow first paint or non-instant navigation, diagnose which Suspense boundary blocks useful UI, or add instant() regression coverage. Requires Next.js 16.3+ with Cache Components already adopted.

next-cache-components-optimizer

Set up an agentic optimization loop that drives a Next.js route from "not instant" to "instant" and keeps it there. The loop is test-driven: encode the goal as a failing @next/playwright instant() test, work it to green, and ship the test as the regression guard. Run it once per target route and entry point. Work the phases P → G in order; each ends in a gate.

Before changing the route, read the bundled Optimizing the static shell guide at node_modules/next/dist/docs/01-app/02-guides/optimizing-the-static-shell.md. If it is unavailable, use the online guide. The guide owns the framework behavior and implementation patterns. This skill owns the navigation contract, production rig, trustworthy RED-to-GREEN loop, parity check, differential, and report.

What is invariant, and what is yours

One thing here is fixed. The rest is yours. Read this before treating any command, platform, or env var below as a requirement.

  • Invariant: the verification loop. Maximizing the shell is worthless unless you can prove it. The proof is an automated check: under a lock that gates dynamic data, the static shell still commits. RED shows the gap, GREEN shows it closed, the test ships as the regression guard. It must run on a production-like build and must not be able to pass vacuously. Stand the loop up once; every later optimization is then verifiable by construction. The loop is the deliverable, not any one route.
  • The mechanism: @next/playwright instant(). This skill uses instant() as a ruler, not a stopwatch (phase A). It comes from @next/playwright (installed alongside @playwright/test, on the same release line as next), so it isn't tied to any host. Keep it. Timing a navigation by hand is too flaky to trust, and is the failure mode this skill exists to prevent.
  • Yours: the rig. How you build, deploy, authenticate, configure Playwright, and loop belongs to your stack, not to this skill. A local next build && next start, a CI/staging container, and a per-push preview deploy are equally valid rigs; the verdict comes from the build, never the platform. Phase 0 maps the invariant onto your repo. Read every platform name, env-var spelling, and command below as an example to translate, not a requirement.

Two entry points, two instant UI contracts

A route reaches the user two ways:

  • Initial load (hard navigation) commits the route's prerendered static shell; deferred parts stream in behind their loading skeletons (Suspense fallbacks, loading.tsx).
  • Client-side navigation (soft navigation) reuses shared layouts and commits the available App Shell for the destination segments that change.

The same implementation patterns can make either entry point instant. The test differs only in how the navigation is driven ("Driving the navigation in tests" below), and the available UI can differ because a soft navigation reuses layouts above the source and destination's divergence point. Guard the entry point the user named, and both when both matter. See What "instant" means.

This skill is therefore not limited to increasing the direct-load static shell. It can also fix a non-instant client navigation when caching reusable work or moving request-time work behind a focused boundary makes the destination's available App Shell commit immediately. When that App Shell is already instant and the goal is to fetch additional URL-specific content before the click, hand off to next-partial-prefetching-optimizer.

Goal

Make the most meaningful available App Shell UI commit immediately, and let only genuinely request-time work stream afterward. The shipped test deterministically encodes present ∧ instant. Non-blank is the additional bar the workflow enforces by judgment because an instant() pass alone is satisfied by an empty shell.

instant() is a ruler, not a stopwatch: assert that the shell appears under the lock; do not time it. A trustworthy verdict requires a production build (phase A).

The GREEN under the lock is the deterministic verdict; each gate keeps it trustworthy.

Reporting to the user

This loop is meant to run unattended, so it doesn't stop to ask between steps. Work the navigation the user named, finish it, and stop. What matters is how you word and present the results, not how often you interrupt. The mechanics below — the rig, RED, GREEN, the gates — are your scaffolding; the user never needs to hear those words.

  • Speak their language. Describe the gap and the result in terms of what the user sees: "navigating to the dashboard waited on the charts query before anything painted; now the layout and skeletons paint instantly and the charts stream in" — not RED/GREEN, the lock, or the phase letters.
  • Show, don't tell. When you report a route, drive the browser (or attach before/after screenshots) so the user watches the shell commit immediately and the data stream in, rather than reading a claim. Identical before and after means the fix did nothing — roll it back.
  • Present a run as a list of results the user can click through — one line per navigation: the route, what commits instantly, and what streams in — not a transcript of the loop.
  • Only surface a question for a genuine fork: a fix that would change behavior, a security-sensitive read, or a route that's dynamic by design (a per-link-prefetch candidate, not a shell to grow). A clean instant fix is not a fork — keep going. With no one to ask (an unattended run), don't block: take the safe default and note the assumption — for a cache-freshness choice, defer the read behind <Suspense> (always fresh, still instant) rather than guess a cacheLife.

The workflow

- [ ] P  PREREQS      Next.js 16.3+ with cacheComponents: true; upgrade first → below
- [ ] 0  SETUP        once per repo: discover + write instant-nav.rig.md     → rig-template.md
- [ ] A  RIG          production build with the testing API exposed          → below
- [ ] B  BASELINE     unlocked: the marker renders for the test user         → test-template.md
- [ ] C  RED          locked instant(): the shell does not commit            → test-template.md
- [ ] C-gate          VERIFY-RED: stop until the RED is trustworthy          → reference/red-test-robustness.md
- [ ] D  FIX          apply the matching documented pattern                 → guide links below
- [ ]      D1 reuse existing loading UI; keep the shell meaningful
- [ ]      D2 preserve layout and responsive behavior
- [ ] E  PARITY       the refactor changed only whether the route is instant
- [ ] F  DIFFERENTIAL revert only the fix → RED; re-apply → GREEN            → reference/red-test-robustness.md
- [ ] G  REVIEW       PR checklist (below)

Phases B and C build the test; only the locked test from C ships.


P. PREREQUISITES: current Next.js with Cache Components

The workflow depends on framework capabilities that ship with current Next.js:

  • Next.js 16.3+ with cacheComponents: true in next.config.ts. Without Cache Components there is no static shell to optimize.
  • @next/playwright on the same release line as the project's next; it provides instant(). Verify with npm ls next @next/playwright (or the project's package manager) and align them if they differ. The matching testing API is in the next runtime, gated by the experimental.exposeTestingApiInProductionBuild config flag (phase A).

If the project does not meet these, upgrade first (npx @next/codemod upgrade automates most of it), then enable Cache Components in next.config.ts:

ts
export default { cacheComponents: true }

Enabling the flag surfaces the blocking routes to resolve first; the next-cache-components-adoption skill drives that adoption. Reach for this optimizer once the app builds under Cache Components.

This gate is deliberate: the skill targets current Next.js, and none of the verdicts below are meaningful on older versions.

0. SETUP: discover this project's rig, once per repo

The principles in this skill are fixed; the infrastructure they run on is yours. On first use in a repository, discover how the project builds, deploys, authenticates, and tests (inspect the repository first, and ask the user only what it cannot answer), then write the answers to a committed instant-nav.rig.md. Every later run reads that file instead of rediscovering. The required build, test context, navigation contracts, iteration loop, and file template are in rig-template.md.

If the repo has no Playwright e2e harness yet, standing up a minimal one (@next/playwright, a config with baseURL, one authenticated path) is part of this step; the loop does not assume a pre-existing suite.

A. RIG: a production build with the testing API exposed

Stand up the rig described by instant-nav.rig.md. Two invariants hold on every platform:

  1. Never measure on next dev. It does not prefetch, and its lock is unreliable for blocking routes, so a dev instant() result is not a valid RED or GREEN.

  2. The measured build must expose the testing API. Otherwise instant() silently no-ops and the test passes vacuously (see reference/red-test-robustness.md). The lock-engagement proof is the phase-C RED itself: the unfixed target route is the known-blocking route, and its RED under the lock shows the lock engages on this build (C-gate); the self-validating variant in test-template.md is the in-band guarantee. Wire experimental.exposeTestingApiInProductionBuild to a condition that is true for every build you measure and never true in production:

    ts
    experimental: {
      // Use the condition your platform provides, and record it in the rig file:
      //   local:       an explicit opt-in, as below
      //   generic CI:  process.env.DEPLOY_ENV === 'staging'
      //   Vercel:      process.env.VERCEL_ENV === 'preview'
      exposeTestingApiInProductionBuild:
        process.env.EXPOSE_TESTING_API === '1',
    }

The rig is any production-like build that exposes the testing API: a local next build && next start, a CI/staging container, and a preview deploy are all equally valid; the verdict comes from the build, not the platform. See rig-template.md for the setup requirements.

For any deployed or remote build, poll the rig's LIVENESS probe to confirm the artifact contains HEAD before trusting a verdict (a stale deploy reads as a false RED or GREEN); a local next build && next start needs none. The probe mechanism is in rig-template.md.

B. BASELINE (unlocked): development scaffold, do not ship

Drive the real navigation with no instant() lock and assert that the destination's SHELL_MARKER renders as the test user: the account the e2e suite authenticates as (in CI, the CI account; locally, your e2e login fixture), with its flags, plan, role, and data. This establishes that the marker is real and reachable: not flag-gated, not redirected away, not a guessed selector. The suite runs as the test account, not the author's session; that environment drift (the rig DRIFT list) is a common source of untrustworthy REDs. Scaffold and run command: test-template.md. Delete this baseline before the PR.

C. RED (locked) + the VERIFY-RED gate

Wrap the same navigation in instant(); assert the shell commits under the lock. A RED here is the gap. This is the test that ships (test-template.md).

Assert the complete intended contract: meaningful shell markers and existing loading states are visible, request-time UI is absent under the lock, and the completed UI renders after release. Do not change an existing data source, production selector, or required route variant to make the test easier. A required contract may not be skipped or weakened.

Prefer the self-validating variant when the route has deferred content. If the route cannot build while blocked, or a cookie/session read stays GREEN, use the RED recipes in reference/red-test-robustness.md.

C-gate: do not start optimizing until the RED is verified trustworthy. A RED that is red for the wrong reason sends you optimizing a route that was never broken.

The question that settles it: does SHELL_MARKER render without the lock, as the test user? Answer it by re-running phase B as the test user, not by adding assertions to the shipped test. The two-branch resolution (No → marker or environment bug; Yes → genuine gap, proceed to D), the full taxonomy of untrustworthy REDs, the checklist, and worked cases are in reference/red-test-robustness.md. Read it now.


Show full SKILL.md (1,061 more words)Show less

D. FIX: apply the documented pattern

Use the Optimizing the static shell guide you read at the start. Follow the section that matches the blocker instead of duplicating its framework guidance here:

BlockerGuide pattern
Stable UI is hidden by a broader loading stateKeep static UI in the shell
A layout or page awaits request-time data too high in the treePush data access down
New or moved boundaries need useful, stable fallbacksDesign loading states
A result can be safely reused across requestsCache reusable work

The guide's example covers the common implementation shapes:

Preserve the route's existing data source, freshness, authorization, and completed behavior. Do not replace a mutable read with a build-time import to make it appear static. Cache the existing read when it can be reused. Stream it when it must be computed for each request.

If development or a build surfaces another instant-navigation Insight during the refactor, follow validation as you refactor and then the canonical Insight it provides. This is especially important for API-specific blockers such as metadata, viewport, and nondeterministic values.

Reuse existing loading UI and keep the resulting shell meaningful at every supported breakpoint. An empty fallback is valid only when the resolved component also has no visual footprint.

If the optimization adds or expands a cache boundary, follow Revalidating. When a writer can change the cached data, populate the cache, perform the mutation, and verify that the next read returns the updated value. instant() proves readiness, not mutation freshness.

Do not use export const instant = false, weaken the contract, or ship an empty document shell as the optimization.

D-gate: phase D is complete when the locked test from phase C passes GREEN under the lock on the production-build rig, not when the code compiles. That GREEN is the deterministic stop for the fix loop; proceed to E.

If URL-specific content is the only missing instant UI, stop at Include URL-specific content in the instant UI and hand off to next-partial-prefetching-optimizer.

E. PARITY: the refactor changed only whether the route is instant

The push-down is a mechanical transform, not a redesign. Afterward the route must render the same tree, data, ordering, empty and error states, redirects, and interactions as before; the only observable difference is that the shell now commits instantly. Verify:

  • Same render output. The moved awaits compute and return the same values; after the stream, the route shows the same content as the base branch for the test user.
  • Request inputs still work. Exercise the authentication, cookie, parameter, search-parameter, and data variants named by the route or rig.
  • Side effects still fire. A deferred redirect() or notFound() still happens at request time. Confirm unauthorized and missing-record behavior. If the route must preserve an HTTP status, account for streaming status-code behavior.
  • Supported viewports reach the real UI after the stream.
  • Client state survives. Because the layout UI is hoisted into the stable shell rather than swapped on resolve, open menus, scroll position, focus, and input state persist across the stream. See Preserving UI state.
  • Pre-existing failures stay separate. If the route errors after the change, reproduce it on the base branch. The same failure there is an environment or data problem, not an optimizer regression.

If anything other than whether the route is instant changed, reduce the refactor.

F. DIFFERENTIAL

Revert only the fix → RED; re-apply → GREEN; link both runs (reference/red-test-robustness.md). Every contract intended to distinguish the optimization must be RED after the revert and GREEN after the re-apply. On a deployed rig, confirm each run is live (LIVENESS, phase A) before trusting its color.

After the final re-apply, run the complete in-scope command from the rig. A filtered subset, a written command, or a suite with a required test skipped is not final GREEN.

G. REVIEW (PR checklist)

A green final state means nothing if the RED was never trustworthy. The test-trustworthiness items are the robustness checklist (reference/red-test-robustness.md); confirm them, then require these PR-specific items:

  • Differential shown: RED without the fix, GREEN with it, runs linked.
  • Parity confirmed (E): same content, redirects, and state.
  • Mutations verified when applicable: after populating any cache whose data can be updated, a mutation test confirms the next read returns the expected data.
  • Freshness preserved: new cache scopes follow the data's existing or explicitly chosen lifetime.
  • Existing loading UI reused (D1): no new page-mirroring skeleton.
  • Shell matches the real render at supported viewports (D2).
  • Baseline removed: only the locked test from C remains.

Stop condition for the whole workflow: the locked test from C is GREEN on the rig, the differential (F) holds, and every item above is checked. Until all three hold, you are not done.

Driving the navigation in tests

  • Soft navigation → drive a real <Link> click. Initial load → use page.goto() inside instant() with the baseURL option. Do not substitute goto for a soft-nav verdict; the two contracts can differ (test-template.md).
  • With parallel routes, only the slots that change re-render on a soft navigation; client-rendered navigation UI does not re-render at all. Do not chase a slot the navigation never touches. See Loading and Error UI with Parallel Routes.

Files

  • rig-template.md: phase 0 production build, test context, navigation contract, and unattended loop discovery.
  • test-template.md: the shipped instant() specs for both navigation types (phase C), and the delete-before-PR baseline scaffold (phase B).
  • reference/red-test-robustness.md: the C-gate and phase F. The taxonomy of untrustworthy REDs, the checklist, the differential recipe, the vacuous-pass failure mode, and worked cases.

After optimization

Once the target routes are instant, check whether the app has already adopted Partial Prefetching (partialPrefetching: true, or the relevant destination still uses prefetch = 'partial' during an incremental rollout).

Make that check mechanically:

bash
rg -n "partialPrefetching|prefetch\s*=\s*['\"]partial['\"]" --glob 'next.config.*' --glob 'app/**' --glob 'src/app/**'

If partialPrefetching: true is in config, the app is globally adopted. If only prefetch = 'partial' matches, treat those destination segments as adopted during an incremental rollout and keep checking any other target routes.

  • Already adopted: when the requested instant UI is URL-specific and the destination App Shell is already instant, continue with next-partial-prefetching-optimizer. It owns the per-link value and cost decision.
  • Not adopted yet: recommend next-partial-prefetching-adoption. That skill moves the app onto the better prefetching model: shared App Shell prefetches by default, fewer duplicated full-prefetch requests for visible links, a link audit for existing <Link prefetch={true}> usage, and optional per-link prefetching only where URL-specific content is worth the extra server work.

© vercel, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files in skills/next-cache-components-optimizer of vercel/next.js.

  • SKILL.md
  • reference/red-test-robustness.md
  • rig-template.md
  • test-template.md

Open the folder on GitHubat commit a32ddfd

Compare with similar skills

Next Cache Components Optimizer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Next Cache Components Optimizer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Next Cache Components Optimizer this skillvercel/next.js143k—~5.8kAutomated safety check: PassMIT
Next Cache Components Optimizersanity-io/ui1766 repos~6.3kAutomated safety check: PassMIT
Proxy Setupasmyshlyaev177/test-proxy-recorder112—~4.3kAutomated safety check: PassMIT
Tanstack Startasmyshlyaev177/test-proxy-recorder112—~2.9kAutomated safety check: NotesMIT
Senior QAalirezarezvani/claude-skills28k1 repos~2.1kAutomated safety check: PassMIT
Senior QAborghei/Claude-Skills881—~1.6kAutomated safety check: PassMIT

Similar skills

  • Official

    Drive a Next.js route to instant navigation by setting up an agentic loop, under Cache Components / PPR, on initial load (hard navigation) and client-side navigation (soft navigation).

    176 GitHub starsUsed in 6 repos~6.3k tokens
    Testing & QAAuto-check passed
  • Proxy Setup

    asmyshlyaev177/test-proxy-recorder

    Set up test-proxy-recorder for any Playwright project. An agent skill from asmyshlyaev177/test-proxy-recorder.

    112 GitHub stars~4.3k tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Tanstack Start

    asmyshlyaev177/test-proxy-recorder

    Record and replay TanStack Start SSR with test-proxy-recorder.

    112 GitHub stars~2.9k tokensUpdated 4 days ago
    Testing & QAAuto-check: notes
  • Senior QA

    alirezarezvani/claude-skills

    Generates unit tests, integration tests, and E2E tests for React/Next.js applications.

    28k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check passed
  • Senior QA

    borghei/Claude-Skills

    Testing for React/Next.js with Jest, React Testing Library, and Playwright.

    881 GitHub stars~1.6k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed

More from vercel/next.js

All 27 skills in this repo
  • Gh Stack

    vercel/next.js

    Official

    Manages stacked PRs and splits multi-part work into reviewable branches with gh-stack.

    143k GitHub starsUsed in 7 repos~2.3k tokens
    Auto-check passed
  • Sandbox Bench

    vercel/next.js

    Official

    Benchmark React or Next.js changes on Vercel Sandbox VMs with paired A/B statistics: react PR/commit vs base, or Next.js PR/commit vs base, measured end-to-end through the bench/render-pipeline app…

    143k GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Next Dev Loop

    vercel/next.js

    Official

    Verify Next.js runtime behavior after editing app code. An agent skill from vercel/next.js.

    143k GitHub starsUsed in 9 repos~2.3k tokens
    Auto-check passed
  • Docs Diagrams

    vercel/next.js

    Official

    Draw diagrams for the Next.js docs in the style of the ones already published there: the light/dark PNGs an mdx references with <Image srcLight="/docs/light/<name.png" srcDark="/docs/dark/<name.png".

    143k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Official

    Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces.

    143k GitHub starsUsed in 6 repos~8.3k tokens
    Auto-check passed
  • React Sync

    vercel/next.js

    Official

    Build local React changes in the bundle variants consumed by Next.js, sync them into a local Next.js checkout, and test the resulting integration.

    143k GitHub stars~486 tokensUpdated today
    Auto-check passed

Categories

Questions about Next Cache Components Optimizer

What does Next Cache Components Optimizer do?

Optimize the meaningful UI available immediately from a Next.js route on an initial load (hard navigation) or named client-side navigation (soft navigation). js, published by the product's own GitHub organization.js route on an initial load (hard navigation) or named client-side navigation (soft navigation).

When should I use Next Cache Components Optimizer?

Next Cache Components Optimizer fits situations like: asked to grow a static shell; fix a slow first paint; non-instant navigation; diagnose which Suspense boundary blocks useful UI.

How do I install Next Cache Components Optimizer in Claude Code?

Run `npx skills add vercel/next.js --skill next-cache-components-optimizer -a claude-code`. Or copy the skill folder (skills/next-cache-components-optimizer in vercel/next.js) into .claude/skills/next-cache-components-optimizer in your project. Claude Code loads it when a task matches its description.

How do I install Next Cache Components Optimizer in Codex?

Run `npx skills add vercel/next.js --skill next-cache-components-optimizer -a codex`. Or copy the skill folder (skills/next-cache-components-optimizer in vercel/next.js) into .agents/skills/next-cache-components-optimizer in your project. Codex loads it when a task matches its description.

Can I use Next Cache Components Optimizer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vercel/next.js --skill next-cache-components-optimizer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/next-cache-components-optimizer, .gemini/skills/next-cache-components-optimizer, .github/skills/next-cache-components-optimizer and .opencode/skills/next-cache-components-optimizer in your project.

What does Next Cache Components Optimizer need to run?

Going by SKILL.md and its folder, Next Cache Components Optimizer needs the command-line tools its instructions call (rg, npm and npx). Our summary lists: Node.js.

Does Next Cache Components Optimizer access the network?

SKILL.md names 1 domain. As links in the text: nextjs.org. This is read from the text; nothing was executed.

Is Next Cache Components Optimizer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Next Cache Components Optimizer use?

Next Cache Components Optimizer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Next Cache Components Optimizer use?

About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Next Cache Components Optimizer?

Skills that share tags, products or a category with Next Cache Components Optimizer: Next Cache Components Optimizer (sanity-io/ui, 176 stars), Proxy Setup (asmyshlyaev177/test-proxy-recorder, 112 stars), Tanstack Start (asmyshlyaev177/test-proxy-recorder, 112 stars) and Senior QA (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Next Cache Components Optimizer?

vercel (a GitHub organization, an official publisher) maintains it in vercel/next.js, which has 143,241 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 8, 2026.

Source: vercel/next.js on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.