К основному содержанию
скилл CX Codex

react-performance-optimization — скилл для Claude Code

Помогает находить узкие места в рендере React, настраивать мемоизацию, разделение кода и виртуализацию списков. Пригодится для ускорения медленных экранов и уменьшения бандла.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add NickCrew/Claude-Cortex --skill react-performance-optimization -a claude-code
Открыть на GitHub

Что делает react-performance-optimization

Скилл задаёт правила для ускорения фронтенда на React. В фокусе — предотвращение лишних перерисовок и ускорение загрузки интерфейса. Внутри описан чёткий порядок действий: сначала профилирование через React DevTools Profiler, затем точечные правки и повторный замер метрик. Оптимизировать компоненты вслепую авторы прямо запрещают.

Материалы разложены по темам в папке references/. Скилл разбирает работу React.memo и хука useMemo, предупреждая о типичных сбоях из-за передачи инлайн-объектов в пропсы. Для длинных списков предлагается виртуализация через react-window, а для маршрутов — динамический импорт через React.lazy и Suspense. Для части возможностей вроде useTransition потребуется React 18+.

Какие задачи решает

  • устранить лишние повторные рендеры компонентов
  • разбить бандл приложения с помощью React.lazy
  • внедрить виртуализацию для списков через react-window
  • изолировать частые обновления состояния

Примеры запросов агенту

  • Проверь этот компонент на лишние рендеры и покажи, где нужны React.memo или useCallback
  • Помоги настроить виртуализацию списка через react-window
  • Раздели маршруты приложения через React.lazy и Suspense, чтобы уменьшить бандл

Как установить react-performance-optimization

1Через Skills CLI (Vercel)

npx skills add NickCrew/Claude-Cortex --skill react-performance-optimization -a claude-code

2Вручную: положить файлы

~/.claude/skills/react-performance-optimization/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/react-performance-optimization/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о react-performance-optimization

Как установить react-performance-optimization в Claude Code?

Выполните команду npx skills add NickCrew/Claude-Cortex --skill react-performance-optimization -a claude-code. Также файл скилла можно сохранить вручную по пути ~/.claude/skills/react-performance-optimization/SKILL.md.

Что делает скилл react-performance-optimization?

Он направляет профилирование React-приложений и предлагает готовые решения: от мемоизации хуками до разделения кода и виртуализации.

Нужна ли конкретная версия React для работы рекомендаций?

Большинство решений применимы к любым версиям с хуками, но конкурентные функции вроде useTransition требуют React 18+. Для виртуализации скилл использует библиотеку react-window.

Исходный текст

SKILL.md · MIT
---
name: react-performance-optimization
description: React performance optimization patterns using memoization, code splitting, and efficient rendering strategies. Use when optimizing slow React applications, reducing bundle size, or improving user experience with large datasets.
keywords:
  - React optimization
  - React performance
  - React.memo
  - bundle size
  - code splitting
  - lazy loading
  - re-render
  - useCallback
  - useMemo
  - virtualization
file_patterns:
  - '**/*.spec.ts'
  - '**/*.test.ts'
  - '**/*.test.tsx'
  - '**/*.ts'
  - '**/*.tsx'
  - '**/package.json'
  - '**/tests/**/*.ts'
  - '**/tests/**/*.tsx'
  - '**/tsconfig.json'
confidence: 0.76
---

# React Performance Optimization

Expert guidance for optimizing React application performance through memoization, code splitting, virtualization, and efficient rendering strategies.

## When to Use This Skill

- Optimizing slow-rendering React components
- Reducing bundle size for faster initial load times
- Improving responsiveness for large lists or data tables
- Preventing unnecessary re-renders in complex component trees
- Optimizing state management to reduce render cascades
- Improving perceived performance with code splitting
- Debugging performance issues with React DevTools Profiler

## Core Concepts

### React Rendering Optimization
React re-renders components when props or state change. Unnecessary re-renders waste CPU cycles and degrade user experience. Key optimization techniques:
- **Memoization**: Cache component renders and computed values
- **Code splitting**: Load code on demand for faster initial loads
- **Virtualization**: Render only visible list items
- **State optimization**: Structure state to minimize render cascades

### When to Optimize
1. **Profile first**: Use React DevTools Profiler to identify actual bottlenecks
2. **Measure impact**: Verify optimization improves performance
3. **Avoid premature optimization**: Don't optimize fast components

## Quick Reference

Load detailed patterns and examples as needed:

| Topic | Reference File |
| --- | --- |
| React.memo, useMemo, useCallback patterns | `skills/react-performance-optimization/references/memoization.md` |
| Code splitting with lazy/Suspense, bundle optimization | `skills/react-performance-optimization/references/code-splitting.md` |
| Virtualization for large lists (react-window) | `skills/react-performance-optimization/references/virtualization.md` |
| State management strategies, context splitting | `skills/react-performance-optimization/references/state-management.md` |
| useTransition, useDeferredValue (React 18+) | `skills/react-performance-optimization/references/concurrent-features.md` |
| React DevTools Profiler, performance monitoring | `skills/react-performance-optimization/references/profiling-debugging.md` |
| Common pitfalls and anti-patterns | `skills/react-performance-optimization/references/common-pitfalls.md` |

## Optimization Workflow

### 1. Identify Bottlenecks
```bash
# Open React DevTools Profiler
# Record interaction → Analyze flame graph → Find slow components
```

**Look for:**
- Components with yellow/red bars (slow renders)
- Unnecessary renders (same props/state)
- Expensive computations on every render

### 2. Apply Targeted Optimizations

**For unnecessary re-renders:**
- Wrap component with `React.memo`
- Use `useCallback` for stable function references
- Check for inline objects/arrays in props

**For expensive computations:**
- Use `useMemo` to cache results
- Move calculations outside render when possible

**For large lists:**
- Implement virtualization with react-window
- Ensure proper unique keys (not index)

**For slow initial load:**
- Add code splitting with `React.lazy`
- Analyze bundle size with webpack-bundle-analyzer
- Use dynamic imports for heavy dependencies

### 3. Verify Improvements
```bash
# Record new Profiler session
# Compare before/after metrics
# Ensure optimization actually helped
```

## Common Patterns

### Memoize Expensive Components
```jsx
import { memo } from 'react';

const ExpensiveList = memo(({ items, onItemClick }) => {
  return items.map(item => (
    <Item key={item.id} data={item} onClick={onItemClick} />
  ));
});
```

### Cache Computed Values
```jsx
import { useMemo } from 'react';

function DataTable({ items, filters }) {
  const filteredItems = useMemo(() => {
    return items.filter(item => filters.includes(item.category));
  }, [items, filters]);

  return <Table data={filteredItems} />;
}
```

### Stable Function References
```jsx
import { useCallback } from 'react';

function Parent() {
  const handleClick = useCallback((id) => {
    console.log('Clicked:', id);
  }, []);

  return <MemoizedChild onClick={handleClick} />;
}
```

### Code Split Routes
```jsx
import { lazy, Suspense } from 'react';

const Dashboard = lazy(() => import('./Dashboard'));
const Reports = lazy(() => import('./Reports'));

function App() {
  return (
    <Suspense fallback={<Loading />}>
      <Routes>
        <Route path="/" element={<Dashboard />} />
        <Route path="/reports" element={<Reports />} />
      </Routes>
    </Suspense>
  );
}
```

### Virtualize Large Lists
```jsx
import { FixedSizeList } from 'react-window';

function VirtualList({ items }) {
  return (
    <FixedSizeList
      height={600}
      itemCount={items.length}
      itemSize={80}
      width="100%"
    >
      {({ index, style }) => (
        <div style={style}>{items[index].name}</div>
      )}
    </FixedSizeList>
  );
}
```

## Common Mistakes

1. **Over-memoization**: Don't memoize simple, fast components (adds overhead)
2. **Inline objects/arrays**: New references break memoization (`config={{ theme: 'dark' }}`)
3. **Missing dependencies**: Stale closures in useCallback/useMemo
4. **Index as key**: Breaks reconciliation when list order changes
5. **Single large context**: Causes widespread re-renders on any update
6. **No profiling**: Optimizing without measuring wastes time

## Performance Checklist

Before optimizing:
- [ ] Profile with React DevTools to identify bottlenecks
- [ ] Measure baseline performance metrics

Optimization targets:
- [ ] Memoize expensive components with stable props
- [ ] Cache computed values with useMemo (if actually expensive)
- [ ] Use useCallback for functions passed to memoized children
- [ ] Implement code splitting for routes and heavy components
- [ ] Virtualize lists with >100 items
- [ ] Provide stable keys for list items (unique IDs, not index)
- [ ] Split state by update frequency
- [ ] Use concurrent features (useTransition, useDeferredValue) for responsiveness

After optimizing:
- [ ] Profile again to verify improvements
- [ ] Check bundle size reduction (if applicable)
- [ ] Ensure no regressions in functionality

## Resources

- **React Docs - Performance**: https://react.dev/learn/render-and-commit
- **React DevTools**: Browser extension for profiling
- **react-window**: https://github.com/bvaughn/react-window
- **Bundle analyzers**: webpack-bundle-analyzer, rollup-plugin-visualizer
- **Lighthouse**: Chrome DevTools performance audit

© NickCrew · MIT · NickCrew/Claude-Cortex

Похожие скиллы

Всё по теме «Фронтенд и UI» →
web-performance-optimization secondsky Скилл для оптимизации загрузки веб-приложений: разбивка бандла, ленивая загрузка, кэширование и мониторинг Core Web Vitals. CX Codex +1 557установок react-performance affaan-m Скилл для аудита и ускорения приложений на React 18/19 и Next.js. Помогает находить сетевые водопады, сокращать размер бандла и настраивать Server Components во время код-ревью. CX Codex +1 4 900установок plugin-bundle-size grafana Помогает уменьшить размер входного файла module.js в плагинах приложений Grafana через React.lazy и разделение чанков в Webpack. CX Codex +1 4 200установок auditing-performance spencerpauly Скилл проводит аудит производительности приложения: размер бандла, рендеринг, запросы к базе и Core Web Vitals. Пригодится, когда страница грузится долго или интерфейс тормозит. CX Codex +1 476установок frontend-react-best-practices sergiodxa Скилл с 33 правилами по оптимизации React: меньше лишних ре-рендеров, аккуратнее бандл, чище композиция компонентов. Пригодится при написании и рефакторинге компонентов. CX Codex +1 1 200установок react-best-practices vercel Скилл для разбора медленного интерфейса на React и Next.js: находит водопады запросов, лишний JS в бандле, ошибки на границе сервер-клиент и пустые ререндеры. CX Codex +1 399установок

Из того же набора4

Спонсоры проекта

Компании, которые помогают держать аналитику открытой