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/4e5c1327b7d7902022ee69328e12db1f6a88f390/src/skills/react-server-components-framework/SKILL.md at commit 4e5c1327b7d7902022ee69328e12db1f6a88f390. 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 | 223 | 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.
yonatangross/orchestkit
Multi-surface rendering with json-render — one JSON spec produces React web, Next.js, React Native, Ink terminal UIs, PDFs, emails, Remotion videos, OG images, and 3D scenes. Covers renderer target selection, registry mapping, and platform APIs (renderToBuffer, renderToStream, renderToFile). Use when generating output for several platforms or creating PDF reports, email templates, demo videos, or social images from one component spec.
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