Proposal
Why¶
ダッシュボード画面や管理画面で、親コンポーネントの状態変更(検索入力、ファイルキュー更新など)が発生するたびに、変化のないプレゼンテーショナルコンポーネントまで再レンダリングされている。React.memo() による不要な再レンダリングの抑制、useFileQueue の依存安定化、および MemberList への startTransition 適用により、UI の応答性を改善する。
What Changes¶
SummaryCard、ProgressBar、FileQueueCardにReact.memo()を適用し、props 未変更時の再レンダリングをスキップするGroupListからGroupRowコンポーネントを抽出し、React.memo()を適用する(GroupList自体はuseNavigateフックを含むため memo 不可)MemberListからMemberRowコンポーネントを抽出し、React.memo()を適用する(MemberList自体はuseNavigateフックを含むため memo 不可)MemberListの検索入力にuseTransitionを適用し、大量メンバーのフィルタリング中も入力欄の応答性を維持するuseFileQueueのparsePendingItemからstate.existingSessionIds(Set)を依存配列から除外し、useRefで安定化する
Capabilities¶
New Capabilities¶
rerender-optimization: プレゼンテーショナルコンポーネントのReact.memo()適用、リスト行コンポーネントの抽出、useTransitionによる検索入力の優先度制御、およびuseFileQueueの依存安定化を含む再レンダリング最適化
Modified Capabilities¶
(既存 spec への要件変更なし。実装の内部最適化のみ。)
Impact¶
- 対象ファイル:
src/components/SummaryCard.jsx—React.memo()ラップsrc/components/GroupList.jsx—GroupRow抽出 +React.memo()src/components/ProgressBar.jsx—React.memo()ラップsrc/components/FileQueueCard.jsx—React.memo()ラップsrc/components/MemberList.jsx—MemberRow抽出 +React.memo()+useTransitionsrc/hooks/useFileQueue.js—parsePendingItemの依存安定化- テスト: 既存のユニットテスト・E2E テストはすべてパスすること(振る舞いの変更なし)
- 依存関係: 追加パッケージなし(React 19 標準 API のみ使用)
- API / データ: 変更なし