react-performance

React performance optimization patterns including memoization, code splitting, bundle size reduction, re-render elimination, and profiling. Covers React Compiler automatic optimization, manual memo/useMemo/useCallback targeting, React.lazy with Suspense, barrel file avoidance, content-visibility for large lists, startTransition for non-urgent updates, and React DevTools profiling. Use when optimizing React app performance, reducing bundle size, eliminating unnecessary re-renders, debugging slow components, code splitting, or profiling rendering bottlenecks. Use for performance audit, bundle analysis, re-render diagnosis, lazy loading, virtualization.

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-performance" with this command: npx skills add oakoss/agent-skills

React Performance

Overview

Dedicated performance optimization skill for React applications. Covers the full spectrum from build-time optimizations (code splitting, barrel file avoidance) through runtime techniques (memoization, transitions, content-visibility) to diagnostic tooling (React DevTools Profiler, bundle analyzers).

When to use: Reducing Time to Interactive, shrinking bundle size, eliminating re-renders, profiling slow components, optimizing large lists, lazy loading heavy dependencies, auditing React app performance.

When NOT to use: General React component patterns (use react-patterns skill), framework-specific optimizations like Next.js caching (use framework skill), non-React performance (network, database, CDN).

Quick Reference

CategoryTechniqueKey Points
CompilerReact CompilerAutomatic memoization at build time; eliminates manual memo/useMemo/useCallback
MemoizationReact.memo(Component)Wrap components receiving stable primitive props from frequently re-rendering parents
MemoizationuseMemo(fn, deps)Expensive computations only: sorting, filtering, Set/Map construction
MemoizationuseCallback(fn, deps)Only when passed to memoized children; use functional setState for stable refs
SplittingReact.lazy(() => import())Lazy-load heavy components with <Suspense> fallback
SplittingPreload on intentTrigger import() on hover/focus for perceived speed
BundleDirect importsAvoid barrel files; import from specific paths to reduce module count
BundleDefer third-partyLoad analytics, logging after hydration
Re-rendersstartTransitionMark non-urgent updates (search, scroll tracking) as interruptible
Re-rendersFunctional setStatesetState(prev => ...) eliminates state dependencies from callbacks
Re-rendersDerived stateSubscribe to booleans, not continuous values; compute during render
Re-rendersDefer state readsRead dynamic state (searchParams) inside callbacks, not at render
Renderingcontent-visibility: autoSkip layout/paint for off-screen items in long lists
RenderingHoist static JSXExtract constant elements outside component functions
ProfilingReact DevTools ProfilerRecord renders, identify slow components, flamegraph analysis
ProfilingBundle analyzerVisualize chunk sizes, find oversized dependencies

Common Mistakes

MistakeCorrect Pattern
Wrapping everything in useMemo/useCallbackTrust React Compiler first; only memoize expensive computations or memoized-child callbacks
Memoizing cheap operations like value * 2Skip memo for simple primitives; overhead exceeds recomputation cost
Importing from barrel files (lucide-react, @mui/material)Import directly from specific paths or use optimizePackageImports
Loading analytics/tracking in the initial bundleDefer with lazy + mounted state to load after hydration
Subscribing to continuous values (window width) for boolean checksUse useMediaQuery or derived boolean to re-render only on threshold change
Referencing state in useCallback dependency arrayUse functional setState setState(prev => ...) for stable callbacks
Using useEffect to derive state from propsCompute derived values during render; effects add an extra render cycle
Creating new object literals as props on every renderHoist static objects outside component; use useMemo for dynamic objects
Profiling in development modeAlways profile production builds; dev mode includes extra warnings that skew results

Delegation

  • Profile and diagnose performance bottlenecks: Use Explore agent to run React DevTools Profiler, analyze bundle composition, and trace re-render cascades
  • Apply performance optimizations to existing code: Use Task agent to implement code splitting, add memoization boundaries, and optimize rendering
  • Plan performance improvement strategy: Use Plan agent to prioritize optimizations by impact (waterfalls > bundle > re-renders) and create an optimization roadmap

If the react-patterns skill is available, delegate general component architecture and React 19 API questions to it. Otherwise, recommend: npx skills add oakoss/agent-skills --skill react-patterns

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.

Security

application-security

No summary provided by upstream source.

Repository SourceNeeds Review
Security

database-security

No summary provided by upstream source.

Repository SourceNeeds Review
Security

quality-auditor

No summary provided by upstream source.

Repository SourceNeeds Review