mcpField
R
react-performance

react-performance

github.com/oakossDevelopment20154 installsUpdated 10w ago
Repository

About react-performance

A skill for diagnosing and optimizing React application performance, aimed at React developers. It covers build-time and runtime techniques as well as profiling and bundle analysis.

Key features

  1. 01React Compiler 与手动记忆化策略
  2. 02使用 React.lazy 进行代码拆分
  3. 03减少包体积与延迟加载依赖
  4. 04降低不必要的重新渲染
  5. 05优化长列表渲染
  6. 06使用 Profiler 和包分析器诊断

Use cases

  1. 01排查组件重新渲染问题
  2. 02缩减应用初始包体积
  3. 03提升长列表的渲染表现
  4. 04分析慢组件与大型依赖

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill react-performance

After installing, type/react-performancein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
code-splitting.md
profiling-and-debugging.md
rendering-optimization.md

Details

From the project README

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

Comments

Markdown supported