react-expert
jeffallan/claude-skills
Senior React specialist for React 18+ components, hooks, Server Components, and production architecture.
What is react-expert?
Expert guidance for building React 18+ applications with TypeScript, Next.js App Router, and modern patterns. Use when creating components, implementing state management, optimizing performance, working with Server Components, or leveraging React 19 features like useActionState and Suspense.
- Creates and refactors React components with TypeScript and strict typing
- Implements custom hooks and manages state with Context, Zustand, Redux, or TanStack Query
- Debugs rendering issues and optimizes performance with memoization and code splitting
- Migrates class components to functional components with hooks
- Sets up Server Components, Suspense boundaries, and React 19 form patterns
- Ensures accessibility compliance and error boundary coverage
How to install react-expert
npx skills add https://github.com/jeffallan/claude-skills --skill react-expert- React 18+ project (Next.js App Router, create-react-app, or Vite)
- TypeScript with strict mode enabled
- Node.js and npm/yarn installed
How to use react-expert
- 1.Describe your React component requirements or issue
- 2.Specify your state management approach (Context, Zustand, Redux, etc.)
- 3.Provide existing code if refactoring or debugging
- 4.Review generated TypeScript component with proper types
- 5.Run `tsc --noEmit` to validate types before use
- 6.Write tests using React Testing Library for non-trivial logic
Use cases
- Building new React features in Next.js App Router projects
- Implementing forms with React 19 useActionState and server actions
- Optimizing component performance with memo, lazy loading, and virtualization
- Setting up global state management for complex applications
- Migrating legacy class-based components to modern functional patterns
- Frontend engineers building React applications
- Full-stack developers working with Next.js
- Teams adopting React 19 or Server Components
- Developers optimizing React performance
- Engineers migrating from class to functional components
react-expert FAQ
Use Server Components by default in Next.js App Router for data fetching and server-only logic. Switch to Client Components ('use client') only when you need interactivity, hooks, or browser APIs.
Use useActionState with async server actions for progressive enhancement. This provides built-in loading states and error handling without manual state management.
Start with useState for local state. Use Context for moderate global state. Choose Zustand for simplicity, Redux Toolkit for complex apps, or TanStack Query for server state.
Always return a cleanup function from useEffect that removes event listeners, cancels requests, or clears timers. This runs when the component unmounts or dependencies change.
No. Only memoize if the component is expensive to render and receives the same props frequently. Memoization has overhead; profile first to confirm it helps.
Full instructions (SKILL.md)
Source of truth, from jeffallan/claude-skills.
name: react-expert description: Use when building React 18+ applications in .jsx or .tsx files, Next.js App Router projects, or create-react-app setups. Creates components, implements custom hooks, debugs rendering issues, migrates class components to functional, and implements state management. Invoke for Server Components, Suspense boundaries, useActionState forms, performance optimization, or React 19 features. license: MIT metadata: author: https://github.com/Jeffallan version: "1.1.0" domain: frontend triggers: React, JSX, hooks, useState, useEffect, useContext, Server Components, React 19, Suspense, TanStack Query, Redux, Zustand, component, frontend role: specialist scope: implementation output-format: code related-skills: fullstack-guardian, playwright-expert, test-master
React Expert
Senior React specialist with deep expertise in React 19, Server Components, and production-grade application architecture.
When to Use This Skill
- Building new React components or features
- Implementing state management (local, Context, Redux, Zustand)
- Optimizing React performance
- Setting up React project architecture
- Working with React 19 Server Components
- Implementing forms with React 19 actions
- Data fetching patterns with TanStack Query or
use()
Core Workflow
- Analyze requirements - Identify component hierarchy, state needs, data flow
- Choose patterns - Select appropriate state management, data fetching approach
- Implement - Write TypeScript components with proper types
- Validate - Run
tsc --noEmit; if it fails, review reported errors, fix all type issues, and re-run until clean before proceeding - Optimize - Apply memoization where needed, ensure accessibility; if new type errors are introduced, return to step 4
- Test - Write tests with React Testing Library; if any assertions fail, debug and fix before submitting
Reference Guide
Load 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 |
Key Patterns
Server Component (Next.js App Router)
// 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>
);
}
React 19 Form with 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>
);
}
Custom Hook with Cleanup
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;
}
Constraints
MUST DO
- Use TypeScript with strict mode
- Implement error boundaries for graceful failures
- Use
keyprops correctly (stable, unique identifiers) - Clean up effects (return cleanup function)
- Use semantic HTML and ARIA for accessibility
- Memoize when passing callbacks/objects to memoized children
- Use Suspense boundaries for async operations
MUST NOT DO
- Mutate state directly
- Use array index as key for dynamic lists
- Create functions inside JSX (causes re-renders)
- Forget useEffect cleanup (memory leaks)
- Ignore React strict mode warnings
- Skip error boundaries in production
Output Templates
When implementing React features, provide:
- Component file with TypeScript types
- Test file if non-trivial logic
- Brief explanation of key decisions
Knowledge Reference
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)
Related skills
More from jeffallan/claude-skills and the wider catalog.

laravel-specialist
Build Laravel 10+ applications with Eloquent models, Sanctum auth, queues, APIs, and Livewire components.

golang-pro
Senior Go developer for concurrent systems, microservices, and production-grade performance optimization.

flutter-expert
Senior Flutter engineer for cross-platform apps with Riverpod, Bloc, GoRouter, and performance optimization.

php-pro
Senior PHP developer for modern PHP 8.3+, Laravel, Symfony with strict typing, PHPStan level 9, and enterprise patterns.

kubernetes-specialist
Deploy and manage Kubernetes workloads with secure manifests, RBAC, networking, and troubleshooting.

devops-engineer
Creates Dockerfiles, CI/CD pipelines, Kubernetes manifests, and infrastructure-as-code templates for deployment automation.