Skip to main content

react-best-practices

Client-side React performance optimization patterns.

소스 정보

저장소
redpanda-data/console
최근 소스 활동
2026년 8월 28일 20:27
감지된 SKILL.md 언어
영어
스타
4,336
포크
429

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
31 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
react-best-practices
description
Client-side React performance optimization patterns.
# React Best Practices Client-side React optimization patterns for Cloud UI. 29 rules organized by category and impact. ## Activation Conditions - Performance optimization tasks - Component re-render issues - Bundle size concerns - useEffect/useMemo patterns ## Rules by Category ### Bundle Optimization (CRITICAL) | Rule | Key Point | |------|-----------| | `bundle-barrel-imports` | Import from source files, not barrel `index.ts` | | `bundle-code-splitting` | `React.lazy` + `Suspense` for heavy components, conditional loads, deferred 3rd-party | | `bundle-preload` | Preload critical resources | ### Re-render Prevention (HIGH) | Rule | Key Point | |------|-----------| | `rerender-memo` | Memoize expensive computations | | `rerender-dependencies` | Minimize hook dependency arrays | | `rerender-derived-state` | Compute during render, not in effects | | `rerender-functional-setstate` | `setState(prev => ...)` to avoid stale closures | | `rerender-lazy-state-init` | `useState(() => expensive())` not `useState(expensive())` | | `rerender-simple-expression-in-memo` | Don't memoize trivial expressions | | `rerender-transitions` | `useTransition` for non-urgent updates | | `rerender-defer-reads` | Read URL params / storage inside callbacks, not at render | ### Rendering (MEDIUM) | Rule | Key Point | |------|-----------| | `rendering-conditional-render` | Short-circuit with `&&` / ternary, avoid render in effects | | `rendering-hoist-jsx` | Move static JSX outside components | | `rendering-content-visibility` | CSS `content-visibility: auto` for off-screen | | `rendering-activity` | React `<Activity>` for hidden UI | | `rendering-animate-svg-wrapper` | Wrap animated SVGs to isolate re-renders | | `rendering-svg-precision` | Limit SVG coordinate precision | ### Async (MEDIUM) | Rule | Key Point | |------|-----------| | `async-suspense-boundaries` | Granular `<Suspense>` boundaries | | `async-defer-await` | Don't await non-blocking work | | `async-dependencies` | Load deps in parallel, not sequentially | ### JavaScript (MEDIUM) | Rule | Key Point | |------|-----------| | `js-caching-patterns` | Module-level Map caches for repeated calls + storage reads | | `js-batch-dom-css` | Batch DOM reads/writes to avoid layout thrashing | | `js-index-maps` | Pre-index arrays into Maps for O(1) lookups | | `js-length-check-first` | Check `.length` before expensive operations | | `js-tosorted-immutable` | Use `.toSorted()` / `.toReversed()` for immutable transforms | RegExp hoisting is enforced by Biome (`useTopLevelRegex`). ### Browser (MEDIUM) | Rule | Key Point | |------|-----------| | `client-event-listeners` | Clean up event listeners in useEffect return | | `client-passive-event-listeners` | `{ passive: true }` for scroll/touch handlers | ### Advanced (LOW) | Rule | Key Point | |------|-----------| | `advanced-event-handler-refs` | Stable callback refs to avoid child re-renders | | `advanced-use-latest` | `useLatest` pattern for always-current values in callbacks |
GitHub에서 보기