react-patterns

React 19+ patterns, performance optimization, and component architecture. Covers hooks, state management decision trees, data fetching with use() API, Server Components, React Compiler, bundle optimization, and re-render elimination. Use when building components, optimizing re-renders, fetching data, managing state, handling forms, structuring frontends, or reviewing React code.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "react-patterns" with this command: npx skills add oakoss/agent-skills/oakoss-agent-skills-react-patterns

React

Overview

Covers component architecture, performance optimization, state management, data fetching, and modern React 19+ APIs. Prioritizes React Compiler compatibility, Server Components, and elimination of data fetching waterfalls.

When to use: Building React applications, optimizing performance, choosing state management, implementing data fetching, reviewing component architecture.

When NOT to use: Non-React frameworks, purely server-side rendering without React, static sites without interactivity.

Quick Reference

PatternAPI / ApproachKey Points
Data fetchinguse(dataPromise)Replaces useEffect+useState fetch pattern
Form handlinguseActionState(action, init)Built-in pending states and error handling
Optimistic UIuseOptimistic(state, updateFn)Instant feedback while server processes
Non-urgent updatesuseTransition()Mark updates as interruptible
Effect eventsuseEffectEvent(fn)Reactive values without re-triggering effects
Form pending statususeFormStatus()Read parent form pending state from child component
Unique IDsuseId()Hydration-safe IDs for accessibility
Server stateReact Query / useSuspenseQueryCaching, deduplication, background refetch
Client state (local)useState / useRefSingle component or transient values
Client state (global)Zustand / ContextCross-component client-only state
Derived stateCompute during renderNever sync derived values with effects
Lazy initializationuseState(() => expensive())Avoid eager computation on every render
Component typesPage, Feature, UIRoute entry, business logic, reusable primitives
MemoizationTrust React Compiler firstManual useMemo/useCallback only when needed
Ref as propref prop on function componentsNo forwardRef needed in React 19
Ref cleanupReturn function from ref callbackCleanup runs on detach instead of null call
Code splittingReact.lazy() + SuspenseLazy-load heavy components
Parallel fetchesPromise.all()Eliminate sequential await waterfalls
Request dedupReact.cache()Per-request server-side deduplication
Abort server workcacheSignal()Cancel expensive async work when client disconnects
Resource preloadingprefetchDNS, preconnect, preload, preinitOptimize resource loading from components
State preservation<Activity>Hide UI while keeping state mounted

Common Mistakes

MistakeCorrect Pattern
Fetching data in useEffect with useStateUse the use() API or React Query for data fetching with built-in caching
Storing derived values in state and syncing with effectsCompute derived values during render; never use effects for state synchronization
Wrapping everything in useMemo and useCallbackTrust React Compiler first; only add manual memoization for expensive computations or memoized children
Using array.sort() which mutates stateUse array.toSorted() for immutable sorting to avoid unexpected re-renders
Using && for conditional renderingUse ternary condition ? <Component /> : null to avoid rendering falsy values like 0
Using Math.random() or Date for IDsUse useId() for hydration-safe unique identifiers
Putting reactive values in effect deps to read latest valueUse useEffectEvent to access latest values without re-triggering effects
Creating object literals as effect dependenciesHoist static objects outside the component or use primitive dependencies
Using forwardRef in React 19 projectsPass ref directly as a prop; forwardRef is deprecated in React 19
Mutating props or state during renderFollow Rules of React for React Compiler compatibility: pure renders, no side effects

Delegation

  • Explore component architecture and identify performance bottlenecks: Use Explore agent to profile re-renders, analyze bundle size, and trace data fetching waterfalls
  • Implement React feature with proper patterns: Use Task agent to build components following Server Component, Suspense, and React 19 conventions
  • Design frontend architecture and state management strategy: Use Plan agent to structure component hierarchy, select state management, and plan data fetching approach

If the shadcn-ui skill is available, delegate component variant and theming questions to it. If the tailwind skill is available, delegate utility-first styling and design token questions to it. If the zustand skill is available, delegate global client state management questions to it.

References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

github-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

tanstack-cli

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

typescript-patterns

No summary provided by upstream source.

Repository SourceNeeds Review