mcpField
R
react-best-practices

react-best-practices

github.com/redpanda-data開発4.4k81 回インストール今日更新
リポジトリ

react-best-practices について

React 開発者向けのパフォーマンス最適化スキルです。バンドル、レンダリング、非同期処理、ブラウザー動作に関する 29 のルールを、カテゴリと影響度で整理しています。

主な機能

  1. 01カテゴリと影響度で整理した 29 のルール
  2. 02バンドルサイズ最適化の指針
  3. 03再レンダリング防止のパターン
  4. 04レンダリングと非同期処理の推奨事項
  5. 05JavaScript とブラウザーの実践方法

活用シーン

  1. 01コンポーネントの再レンダリング調査
  2. 02バンドルサイズの削減
  3. 03useEffect と useMemo の使い方の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/redpanda-data/console --skill react-best-practices

インストール後、Claude Code で/react-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

rules/
advanced-event-handler-refs.md
advanced-use-latest.md
async-defer-await.md
async-dependencies.md
async-suspense-boundaries.md
bundle-barrel-imports.md
bundle-code-splitting.md
bundle-preload.md
client-event-listeners.md
client-passive-event-listeners.md
js-batch-dom-css.md
js-caching-patterns.md
js-index-maps.md
js-length-check-first.md
js-tosorted-immutable.md
rendering-activity.md
rendering-animate-svg-wrapper.md
rendering-conditional-render.md
rendering-content-visibility.md
rendering-hoist-jsx.md
rendering-svg-precision.md
rerender-defer-reads.md
rerender-dependencies.md
rerender-derived-state.md
rerender-functional-setstate.md
rerender-lazy-state-init.md
rerender-memo.md
rerender-simple-expression-in-memo.md
rerender-transitions.md
use-effect.md

詳細

React のベストプラクティス

Cloud UI 向けのクライアントサイド React 最適化パターンです。カテゴリと影響度別に整理された 29 のルールを紹介します。

適用条件

  • パフォーマンス最適化タスク
  • コンポーネントの再レンダリングに関する問題
  • バンドルサイズに関する懸念
  • useEffect/useMemo のパターン

カテゴリ別のルール

バンドルの最適化(CRITICAL)
ルール要点
bundle-barrel-importsバレルの index.ts ではなく、ソースファイルからインポートします
bundle-code-splitting大きなコンポーネント、条件付き読み込み、遅延読み込みするサードパーティーライブラリには React.lazy + Suspense を使います
bundle-preload重要なリソースをプリロードします
再レンダリングの防止(HIGH)
ルール要点
rerender-memoコストの高い計算をメモ化します
rerender-dependenciesフックの依存配列を最小限にします
rerender-derived-stateエフェクト内ではなく、レンダリング中に計算します
rerender-functional-setstate古いクロージャーを避けるために setState(prev => ...) を使います
rerender-lazy-state-inituseState(expensive()) ではなく useState(() => expensive()) を使います
rerender-simple-expression-in-memo単純な式はメモ化しません
rerender-transitions緊急性の低い更新には useTransition を使います
rerender-defer-readsURL パラメーターやストレージはレンダリング時ではなく、コールバック内で読み取ります
レンダリング(MEDIUM)
ルール要点
rendering-conditional-render&& / 三項演算子で短絡評価し、エフェクト内でのレンダリングは避けます
rendering-hoist-jsx静的な JSX をコンポーネントの外に移動します
rendering-content-visibility画面外の要素には CSS content-visibility: auto を使います
rendering-activity非表示の UI には React <Activity> を使います
rendering-animate-svg-wrapperアニメーションする SVG をラップして、再レンダリングを分離します
rendering-svg-precisionSVG 座標の精度を抑えます
非同期処理(MEDIUM)
ルール要点
async-suspense-boundaries粒度の細かい <Suspense> 境界を設けます
async-defer-awaitブロックしない処理は await しません
async-dependencies依存関係は順次ではなく、並列で読み込みます
JavaScript(MEDIUM)
ルール要点
js-caching-patterns繰り返し呼び出しやストレージ読み取りには、モジュールレベルの Map キャッシュを使います
js-batch-dom-cssレイアウトスラッシングを避けるため、DOM の読み取りと書き込みをまとめて行います
js-index-maps配列を事前に Map へインデックス化し、O(1) で検索できるようにします
js-length-check-firstコストの高い操作の前に .length を確認します
js-tosorted-immutable不変の変換には .toSorted() / .toReversed() を使います

正規表現の巻き上げは Biome(useTopLevelRegex)によって適用されます。

ブラウザー(MEDIUM)
ルール要点
client-event-listenersuseEffect の戻り値でイベントリスナーをクリーンアップします
client-passive-event-listenersスクロールやタッチのハンドラーには { passive: true } を指定します
高度なテクニック(LOW)
ルール要点
advanced-event-handler-refs子コンポーネントの再レンダリングを避けるため、安定したコールバック ref を使います
advanced-use-latestコールバック内で常に最新の値を使うには、useLatest パターンを使います

コメント