New to Claude Skills? Learn how to install them →

jeffallan on GitHub

React Expert

Free

Master React 18+ applications with expert guidance.

Get this skill

Free · Opens the source repo

What React Expert does

React Expert is a skill designed for developers building applications with React 18 and above, particularly in environments like Next.js App Router and create-react-app. This skill provides a structured approach to creating components, implementing custom hooks, and debugging rendering issues. It also assists in migrating class components to functional components and managing application state effectively. By leveraging this skill, developers can enhance their productivity and ensure best practices in their React projects.

The core workflow of React Expert begins with analyzing the requirements of your application, which helps in identifying the component hierarchy and state management needs. Once the requirements are clear, developers can select appropriate patterns for state management and data fetching, ensuring a robust architecture. The skill emphasizes writing TypeScript components with strict type checks, which helps catch errors early in the development process. Optimization techniques, such as memoization and accessibility considerations, are also integral to the workflow, ensuring that applications are not only functional but also performant and user-friendly.

React Expert includes a comprehensive reference guide covering various topics, including Server Components, React 19 features, state management patterns, and performance optimization strategies. Each reference provides detailed guidance tailored to specific contexts, enabling developers to make informed decisions as they build their applications. The skill also outlines key constraints and best practices, such as using error boundaries and adhering to accessibility standards, which are crucial for production-grade applications.

This skill is particularly beneficial for developers looking to deepen their understanding of modern React features and improve their coding practices. Whether you're building new components or optimizing existing ones, React Expert serves as a reliable companion throughout the development process.

When to use it

Use this skill when starting new React projects or enhancing existing ones, especially with React 18+ features and state management.

When not to use it

This skill may not be suitable for developers working with older versions of React or those who prefer a different framework altogether.

What you can build with it

Building a New Component

Utilize the skill to analyze requirements and implement a new React component with TypeScript and best practices.

Migrating Class Components

Use the migration guide to convert legacy class components to functional components, leveraging hooks for state management.

Optimizing Application Performance

Apply performance optimization techniques as outlined in the skill to ensure your React application runs efficiently.

How to install React Expert

View source

1. Install with the skills CLI

npx skills add jeffallan/claude-skills/react-expert --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by jeffallan

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

  1. Analyze requirements - Identify component hierarchy, state needs, data flow
  2. Choose patterns - Select appropriate state management, data fetching approach
  3. Implement - Write TypeScript components with proper types
  4. Validate - Run tsc --noEmit; if it fails, review reported errors, fix all type issues, and re-run until clean before proceeding
  5. Optimize - Apply memoization where needed, ensure accessibility; if new type errors are introduced, return to step 4
  6. Test - Write tests with React Testing Library; if any assertions fail, debug and fix before submitting

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Server Componentsreferences/server-components.mdRSC patterns, Next.js App Router
React 19references/react-19-features.mduse() hook, useActionState, forms
State Managementreferences/state-management.mdContext, Zustand, Redux, TanStack
Hooksreferences/hooks-patterns.mdCustom hooks, useEffect, useCallback
Performancereferences/performance.mdmemo, lazy, virtualization
Testingreferences/testing-react.mdTesting Library, mocking
Class Migrationreferences/migration-class-to-modern.mdConverting 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 key props 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:

  1. Component file with TypeScript types
  2. Test file if non-trivial logic
  3. 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)

Documentation

Frequently asked questions about React Expert

Similar skills