Best for
- Use when building Next.
yonatangross/orchestkit/src/skills/react-server-components-framework/SKILL.md
Use when building Next.js 16+ apps with React Server Components. Covers App Router, Cache Components (replacing experimental_ppr), streaming SSR, Server Actions, and React 19 patterns for server-first architecture.
Decision brief
js 16+ apps with React Server Components. Covers App Router, Cache Components (replacing experimental_ppr), streaming SSR, Server Actions, and React 19 patterns for server-first architecture.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/yonatangross/orchestkit --skill "src/skills/react-server-components-framework"Inspect the Agent Skill "react-server-components-framework" from https://github.com/yonatangross/orchestkit/blob/1ff988bd66daf223028ed44767b591fecc8510c2/src/skills/react-server-components-framework/SKILL.md at commit 1ff988bd66daf223028ed44767b591fecc8510c2. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Key Rule: Server Components can render Client Components, but Client Components cannot directly import Server Components (use children prop instead).
Key Rule: Server Components can render Client Components, but Client Components cannot directly import Server Components (use children prop instead).
Next.js 16 Cache Components (Recommended):
Review the “Server Actions Quick Reference” section in the pinned source before continuing.
Route parameters and search parameters are now Promises that must be awaited:
Permission review
The documentation includes network, browsing, or remote request actions.
await fetch(url, { cache: 'force-cache' })The documentation includes network, browsing, or remote request actions.
await fetch(url, { next: { revalidate: 60 } })Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 96/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 224 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
React Server Components (RSC) enable server-first rendering with client-side interactivity. This skill covers Next.js 16.2 LTS App Router patterns, Server Components, Server Actions, and streaming.
Next.js 16.2.6 / React 19.2.6 (security release, May 2026) — Turbopack is the default bundler (no
--turboflag needed), Server Fast Refresh is on by default, and the newcacheComponentsconfig flag replaces the legacyexperimental_pprescape hatch. For AI-agent debugging Next.js ships Next DevTools MCP — wirenpx -y next-devtools-mcp@latestinto.mcp.json(it connects via the dev server's/_next/mcpendpoint) to inspect render trees and cache boundaries mid-session.
When to use this skill:
| Feature | Server Component | Client Component |
|---|---|---|
| Directive | None (default) | 'use client' |
| Async/await | Yes | No |
| Hooks | No | Yes |
| Browser APIs | No | Yes |
| Database access | Yes | No |
| Client JS bundle | Zero | Ships to client |
Key Rule: Server Components can render Client Components, but Client Components cannot directly import Server Components (use children prop instead).
Next.js 16 Cache Components (Recommended):
import { cacheLife, cacheTag } from 'next/cache'
// Default — shared across all users (public CDN-cached)
async function CachedProducts() {
'use cache'
cacheLife('hours')
cacheTag('products')
return await db.product.findMany()
}
// Remote variant (16.2+) — always served from the edge/CDN, never rendered
// inline on the origin. Best for static product listings, marketing content.
async function MarketingHero() {
'use cache: remote'
cacheLife('days')
return <Hero />
}
// Private variant (16.2+) — cached per-user session. Never shared across
// users. Use for personalized dashboards with expensive computation.
async function UserDashboard({ userId }: { userId: string }) {
'use cache: private'
cacheLife('minutes')
cacheTag(`user:${userId}`)
return await loadDashboard(userId)
}
// Invalidate cache — v16 requires a cacheLife profile as the 2nd arg
import { revalidateTag } from 'next/cache'
revalidateTag('products', 'max') // or updateTag('products') for read-your-writes
Enable via next.config.ts:
import type { NextConfig } from 'next'
const config: NextConfig = {
cacheComponents: true, // 16.2+ — replaces experimental_ppr flag
}
export default config
Legacy Fetch Options (Next.js 15):
// Static (cached indefinitely)
await fetch(url, { cache: 'force-cache' })
// Revalidate every 60 seconds
await fetch(url, { next: { revalidate: 60 } })
// Always fresh
await fetch(url, { cache: 'no-store' })
// Tag-based revalidation
await fetch(url, { next: { tags: ['posts'] } })
'use server'
export async function createPost(formData: FormData) {
const title = formData.get('title') as string
const post = await db.post.create({ data: { title } })
revalidatePath('/posts')
redirect("/posts/" + post.id)
}
Route parameters and search parameters are now Promises that must be awaited:
// app/posts/[slug]/page.tsx
export default async function PostPage({
params,
searchParams,
}: {
params: Promise<{ slug: string }>
searchParams: Promise<{ page?: string }>
}) {
const { slug } = await params
const { page } = await searchParams
return <Post slug={slug} page={page} />
}
Note: Also applies to layout.tsx, generateMetadata(), and route handlers. Complete migration guide: first-party next-upgrade / vercel:next-upgrade skill. House scars: Read("${CLAUDE_PLUGIN_ROOT}/skills/react-server-components-framework/references/ork-delta.md").
next dev and next build run Turbopack without any flag. Pass --webpack only when forced (legacy plugin).npx -y next-devtools-mcp@latest in .mcp.json; it attaches to the running dev server over the /_next/mcp endpoint and exposes RSC payloads and cache boundaries to an MCP client. Designed for AI agents that need to inspect render trees mid-session without screenshotting. (There is no next-browser binary.)Load on demand with Read("${CLAUDE_PLUGIN_ROOT}/skills/react-server-components-framework/references/<file>"):
| File | Content |
|---|---|
ork-delta.md | House rules and scars: fabricated-API corrections from PR #2143, React 19 house conventions (2026-07-31 distillation) |
tanstack-router-patterns.md | React 19 features without Next.js, route-based data fetching, client-rendered app patterns |
capability-details.md | Keyword and problem-mapping metadata for all 12 RSC capabilities |
Vendor tutorials for these topics live in first-party skills and docs. This skill keeps only floors, scars, and house decisions (references/ork-delta.md).
| Topic | First-party source |
|---|---|
| Server Components fundamentals (async components, data fetching, route segment config, generateStaticParams, error handling) | next-best-practices / vercel:nextjs skill; nextjs.org/docs |
Client Components, 'use client', hydration, client-only rendering | next-best-practices / vercel:nextjs skill |
| Server/Client boundary and composition patterns, serializable props | next-best-practices / vercel:nextjs skill; vercel-composition-patterns |
| Data fetching and caching (fetch cache options, revalidate, tags) | next-best-practices / vercel:nextjs skill |
| Streaming SSR, Suspense boundaries, loading.tsx, skeleton states | vercel:nextjs skill (streaming) |
| Server Actions, progressive enhancement, useActionState forms, Zod validation | vercel:nextjs skill (Server Actions) |
| Advanced routing (parallel, intercepting, route groups, dynamic and catch-all) | vercel:nextjs skill (routing) |
| Pages Router to App Router migration | next-upgrade / vercel:next-upgrade skill |
| Next.js 16 upgrade, breaking changes, codemods | next-upgrade / vercel:next-upgrade skill |
Cache Components: use cache, cacheLife, cacheTag, updateTag, PPR | next-cache-components / vercel:next-cache-components skill |
| React 19 core APIs (useActionState, useFormStatus, useOptimistic, use(), ref as prop) | context7: /vercel/next.js + react.dev (query-docs) |
| RSC implementation and deployment checklist | next-best-practices skill |
children to Client ComponentsPromise.all) for independent datagenerateStaticParams for static routesscripts/server-component-template.tsx - Basic async Server Component with data fetchingscripts/client-component-template.tsx - Interactive Client Component with hooksscripts/server-action-template.ts - Server Action with validation and revalidationscripts/create-server-component.md - Command-style scaffold; kept as the script-invocation contract exercised by tests/skills/scripts/| Error | Fix |
|---|---|
| "You're importing a component that needs useState" | Add 'use client' directive |
| "async/await is not valid in non-async Server Components" | Add async to function declaration |
| "Cannot use Server Component inside Client Component" | Pass Server Component as children prop |
| "Hydration mismatch" | Use 'use client' for Date.now(), Math.random(), browser APIs |
| "params is not defined" or params returning Promise | Add await before params (Next.js 16 breaking change) |
| "experimental_ppr is not a valid export" | Use Cache Components with "use cache" directive instead |
| "cookies/headers is not a function" | Add await before cookies() or headers() (Next.js 16) |
After mastering React Server Components:
Keyword and problem-mapping metadata for each RSC capability (react-19-patterns, use-hook-suspense, optimistic-updates-async, rsc-patterns, server-actions, data-fetching, streaming-ssr, caching, cache-components, tanstack-router-patterns, async-params, nextjs-16-upgrade).
Load full capability details: Read("${CLAUDE_PLUGIN_ROOT}/skills/react-server-components-framework/references/capability-details.md")
Frequently asked questions
js 16+ apps with React Server Components. Covers App Router, Cache Components (replacing experimental_ppr), streaming SSR, Server Actions, and React 19 patterns for server-first architecture.
The source record exposes this install command: npx skills add https://github.com/yonatangross/orchestkit --skill "src/skills/react-server-components-framework". Inspect the command and pinned source before running it.
The pinned source record declares support for: claude code.
Static rules flagged network in the source; the page lists the matching lines and excerpts.
Alternatives
yonatangross/orchestkit
json-render component catalog patterns for AI-safe generative UI. Define Zod-typed catalogs that constrain what AI can generate, use @json-render/shadcn for 36 pre-built components, optimize specs with YAML mode, and apply the three edit modes (patch/merge/diff) for progressive updates. Use when building AI-generated UIs, defining component catalogs, or integrating json-render into React/Vue/Svelte/React Native/Ink/Next.js projects.
vasilyu1983/AI-Agents-public
Implements production-grade i18n/l10n for React, Vue, Angular, and Next.js with ICU format and RTL support. Use when setting up or debugging localisation.
fcakyon/claude-codex-settings
Guide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view
theBGuy/GitDesktop
Guide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions view