home / skills / sickn33 / antigravity-awesome-skills / react-patterns
This skill helps you apply modern React patterns and TypeScript best practices to build scalable, performant components with clean architecture.
npx playbooks add skill sickn33/antigravity-awesome-skills --skill react-patternsReview the files below or copy the command above to add this skill to your agents.
---
name: react-patterns
description: Modern React patterns and principles. Hooks, composition, performance, TypeScript best practices.
allowed-tools: Read, Write, Edit, Glob, Grep
---
# React Patterns
> Principles for building production-ready React applications.
---
## 1. Component Design Principles
### Component Types
| Type | Use | State |
|------|-----|-------|
| **Server** | Data fetching, static | None |
| **Client** | Interactivity | useState, effects |
| **Presentational** | UI display | Props only |
| **Container** | Logic/state | Heavy state |
### Design Rules
- One responsibility per component
- Props down, events up
- Composition over inheritance
- Prefer small, focused components
---
## 2. Hook Patterns
### When to Extract Hooks
| Pattern | Extract When |
|---------|-------------|
| **useLocalStorage** | Same storage logic needed |
| **useDebounce** | Multiple debounced values |
| **useFetch** | Repeated fetch patterns |
| **useForm** | Complex form state |
### Hook Rules
- Hooks at top level only
- Same order every render
- Custom hooks start with "use"
- Clean up effects on unmount
---
## 3. State Management Selection
| Complexity | Solution |
|------------|----------|
| Simple | useState, useReducer |
| Shared local | Context |
| Server state | React Query, SWR |
| Complex global | Zustand, Redux Toolkit |
### State Placement
| Scope | Where |
|-------|-------|
| Single component | useState |
| Parent-child | Lift state up |
| Subtree | Context |
| App-wide | Global store |
---
## 4. React 19 Patterns
### New Hooks
| Hook | Purpose |
|------|---------|
| **useActionState** | Form submission state |
| **useOptimistic** | Optimistic UI updates |
| **use** | Read resources in render |
### Compiler Benefits
- Automatic memoization
- Less manual useMemo/useCallback
- Focus on pure components
---
## 5. Composition Patterns
### Compound Components
- Parent provides context
- Children consume context
- Flexible slot-based composition
- Example: Tabs, Accordion, Dropdown
### Render Props vs Hooks
| Use Case | Prefer |
|----------|--------|
| Reusable logic | Custom hook |
| Render flexibility | Render props |
| Cross-cutting | Higher-order component |
---
## 6. Performance Principles
### When to Optimize
| Signal | Action |
|--------|--------|
| Slow renders | Profile first |
| Large lists | Virtualize |
| Expensive calc | useMemo |
| Stable callbacks | useCallback |
### Optimization Order
1. Check if actually slow
2. Profile with DevTools
3. Identify bottleneck
4. Apply targeted fix
---
## 7. Error Handling
### Error Boundary Usage
| Scope | Placement |
|-------|-----------|
| App-wide | Root level |
| Feature | Route/feature level |
| Component | Around risky component |
### Error Recovery
- Show fallback UI
- Log error
- Offer retry option
- Preserve user data
---
## 8. TypeScript Patterns
### Props Typing
| Pattern | Use |
|---------|-----|
| Interface | Component props |
| Type | Unions, complex |
| Generic | Reusable components |
### Common Types
| Need | Type |
|------|------|
| Children | ReactNode |
| Event handler | MouseEventHandler |
| Ref | RefObject<Element> |
---
## 9. Testing Principles
| Level | Focus |
|-------|-------|
| Unit | Pure functions, hooks |
| Integration | Component behavior |
| E2E | User flows |
### Test Priorities
- User-visible behavior
- Edge cases
- Error states
- Accessibility
---
## 10. Anti-Patterns
| ❌ Don't | ✅ Do |
|----------|-------|
| Prop drilling deep | Use context |
| Giant components | Split smaller |
| useEffect for everything | Server components |
| Premature optimization | Profile first |
| Index as key | Stable unique ID |
---
> **Remember:** React is about composition. Build small, combine thoughtfully.
This skill packages a concise collection of modern React patterns and principles for building production-ready applications. It focuses on component design, hooks, state management, performance, TypeScript, testing, and error handling. The guidance is practical, opinionated, and aligned with React 18/19 capabilities.
The skill inspects common architectural decisions and recommends patterns based on scope and complexity: when to use server vs client components, when to extract hooks, and which state solution fits a need. It highlights composition techniques, performance triage, TypeScript typing conventions, testing priorities, and anti-patterns to avoid. The output is actionable rules and checklists you can apply directly to components, hooks, and feature boundaries.
When should I extract a custom hook?
Extract a hook when the logic is reused across components or when it simplifies component code, for example cross-cutting fetch, debounce, or form state.
How do I decide between Context and a global store?
Use Context for sharing state within a subtree and when updates are localized; use a global store (Zustand/Redux Toolkit) for high-frequency updates or app-wide state.