react-best-practices▌
0xbigboss/claude-code · updated Apr 16, 2026
React patterns for hooks, effects, refs, and component design with escape hatch guidance.
- ›Effects synchronize with external systems only (WebSocket, third-party libraries, browser APIs); most component logic should avoid Effects entirely
- ›Common anti-patterns: derived state, expensive calculations, prop-change resets, and event handling all belong outside Effects—use render calculations, useMemo, key props, and event handlers instead
- ›Effect dependencies must never be suppressed; use u
React Best Practices
Pair with TypeScript
When working with React, always load both this skill and typescript-best-practices together. TypeScript patterns (type-first development, discriminated unions, Zod validation) apply to React code.
Core Principle: Effects Are Escape Hatches
Effects let you "step outside" React to synchronize with external systems. Most component logic should NOT use Effects. Before writing an Effect, ask: "Is there a way to do this without an Effect?"
Decision Tree
- Need to respond to user interaction? Use event handler
- Need computed value from props/state? Calculate during render
- Need cached expensive calculation? Use
useMemo - Need to reset state on prop change? Use
keyprop - Need to synchronize with external system? Use Effect with cleanup
- Need non-reactive code in Effect? Use
useEffectEvent - Need mutable value that doesn't trigger render? Use ref
When to Use Effects
Synchronizing with external systems: browser APIs (WebSocket, IntersectionObserver), third-party non-React libraries, window/document event listeners, non-React DOM elements (video, maps).
When NOT to Use Effects
- Derived state — calculate during render
- Expensive calculations — use
useMemo - Resetting state on prop change — use
keyprop - Responding to user events — use event handlers
- Notifying parent of state changes — update both in the same event handler
- Chains of effects — calculate derived state and update in one event handler
Refs
- Use for values that don't affect rendering (timer IDs, DOM node references)
- Never read or write
ref.currentduring render; only in event handlers and effects - Use ref callbacks (not
useRefin loops) for dynamic lists - Use
useImperativeHandleto limit what parent can access
Custom Hooks
- Share logic, not state — each call gets an independent state instance
- Name
useXxxonly if it actually calls other hooks; otherwise use a regular function - Avoid lifecycle hooks (
useMount,useEffectOnce) — useuseEffectdirectly so the linter catches missing deps - Keep focused on a single concrete use case
Component Patterns
- Controlled: parent owns state; uncontrolled: component owns state
- Prefer composition with
childrenover prop drilling; use Context only for truly global state - Use
flushSyncwhen you need to read the DOM synchronously after a state update
See react-patterns.md for code examples and detailed patterns.
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.7★★★★★26 reviews- ★★★★★Chaitanya Patil· Dec 20, 2024
react-best-practices has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Omar Kim· Dec 20, 2024
We added react-best-practices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Soo Johnson· Dec 8, 2024
Keeps context tight: react-best-practices is the kind of skill you can hand to a new teammate without a long onboarding doc.
- ★★★★★Zara Patel· Nov 27, 2024
react-best-practices is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
- ★★★★★Piyush G· Nov 11, 2024
Solid pick for teams standardizing on skills: react-best-practices is focused, and the summary matches what you get after install.
- ★★★★★Emma Gill· Nov 11, 2024
Useful defaults in react-best-practices — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Hana Robinson· Oct 18, 2024
react-best-practices fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Shikha Mishra· Oct 2, 2024
We added react-best-practices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★James Lopez· Oct 2, 2024
react-best-practices has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Anaya Chawla· Sep 25, 2024
We added react-best-practices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 26