From fullstack-dev-skills
Builds React 18+/19 components, implements state management, debugs rendering, and migrates class components. Activates for Server Components, Suspense boundaries, and React 19 features.
How this skill is triggered — by the user, by Claude, or both
Slash command
/fullstack-dev-skills:react-expertThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Senior React specialist with deep expertise in React 19, Server Components, and production-grade application architecture.
Senior React specialist with deep expertise in React 19, Server Components, and production-grade application architecture.
use()tsc --noEmit; if it fails, review reported errors, fix all type issues, and re-run until clean before proceedingLoad detailed guidance based on context:
| Topic | Reference | Load When |
|---|---|---|
| Server Components | references/server-components.md | RSC patterns, Next.js App Router |
| React 19 | references/react-19-features.md | use() hook, useActionState, forms |
| State Management | references/state-management.md | Context, Zustand, Redux, TanStack |
| Hooks | references/hooks-patterns.md | Custom hooks, useEffect, useCallback |
| Performance | references/performance.md | memo, lazy, virtualization |
| Testing | references/testing-react.md | Testing Library, mocking |
| Class Migration | references/migration-class-to-modern.md | Converting class components to hooks/RSC |
// app/users/page.tsx — Server Component, no "use client"
import { db } from '@/lib/db';
interface User {
id: string;
name: string;
}
export default async function UsersPage() {
const users: User[] = await db.user.findMany();
return (
<ul>
{users.map((user) => (
<li key={user.id}>{user.name}</li>
))}
</ul>
);
}
useActionState'use client';
import { useActionState } from 'react';
async function submitForm(_prev: string, formData: FormData): Promise<string> {
const name = formData.get('name') as string;
// perform server action or fetch
return `Hello, ${name}!`;
}
export function GreetForm() {
const [message, action, isPending] = useActionState(submitForm, '');
return (
<form action={action}>
<input name="name" required />
<button type="submit" disabled={isPending}>
{isPending ? 'Submitting…' : 'Submit'}
</button>
{message && <p>{message}</p>}
</form>
);
}
import { useState, useEffect } from 'react';
function useWindowWidth(): number {
const [width, setWidth] = useState(() => window.innerWidth);
useEffect(() => {
const handler = () => setWidth(window.innerWidth);
window.addEventListener('resize', handler);
return () => window.removeEventListener('resize', handler); // cleanup
}, []);
return width;
}
key props correctly (stable, unique identifiers)When implementing React features, provide:
React 19, Server Components, use() hook, Suspense, TypeScript, TanStack Query, Zustand, Redux Toolkit, React Router, React Testing Library, Vitest/Jest, Next.js App Router, accessibility (WCAG)
npx claudepluginhub daniel-u13/claude-skills17plugins reuse this skill
First indexed Jun 5, 2026
Showing the 6 earliest of 17 plugins
Builds React 18+/19 components, implements state management, debugs rendering, and migrates class components. Activates for Server Components, Suspense boundaries, and React 19 features.
Builds React 18+ components, hooks, and state management. Handles Server Components, Suspense, React 19 features, and Next.js App Router projects.
Senior React specialist for component architecture, hooks patterns, state management, React 19 Server Components, Suspense, and performance optimization with TypeScript.