mcpField
R
react-error-handling

react-error-handling

github.com/oakoss開発20126 回インストール10 週間前に更新
リポジトリ

react-error-handling について

React 開発者向けに、コンポーネントツリーのエラーバウンダリーと復旧方法を解説するスキルです。フォールバック UI、リセット、ログ記録に加え、捕捉できないエラーも扱います。

主な機能

  1. 01クラス・関数コンポーネントの境界
  2. 02フォールバック UI のパターン
  3. 03手動・自動リセット
  4. 04エラーログの指針
  5. 05ネストした境界の配置
  6. 06Suspense のエラー処理

活用シーン

  1. 01機能領域のクラッシュを隔離
  2. 02描画エラー後の再試行を提供
  3. 03監視用にコンポーネントエラーを記録

インストール

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

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

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

同梱ファイル

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

references/
boundary-placement.md
class-boundaries.md
fallback-patterns.md
react-error-boundary.md
reset-recovery.md

詳細

React のエラーハンドリング

概要

エラーバウンダリは、子コンポーネントのレンダリング中、ライフサイクルメソッド内、およびコンストラクター内で発生した JavaScript エラーを捕捉します。コンポーネントツリー全体がクラッシュする代わりに、フォールバック UI を表示します。バニラ React ではエラーバウンダリをクラスコンポーネントとしてのみ実装できますが、react-error-boundary ライブラリを使うと、便利な関数コンポーネントのラッパーを利用できます。

使用する場面: コンポーネントのクラッシュ、親ルートへのエラー伝播の防止、段階的な機能縮退、ユーザー向けのエラー状態、エラーのログ記録と監視。

使用しない場面: イベントハンドラーのエラー(try/catch を使用)、レンダリング外の非同期コールバック(setTimeout、Suspense を使わない promise)、サーバーサイドレンダリングのエラー、エラーバウンダリ自体のエラー。

クイックリファレンス

パターンAPI要点
クラスバウンダリgetDerivedStateFromError + componentDidCatch手動で実装し、完全に制御できます
関数バウンダリ<ErrorBoundary FallbackComponent={...} />react-error-boundary ライブラリを使用します
リセット機構resetErrorBoundary() または resetKeys={[dep]}状態変更時に自動リセットするか、手動で再試行します
エラーのログ記録onError={(error, info) => log(error)}分析サービスまたは監視サービスに記録します
フォールバックコンポーネントFallbackComponent={MyFallback}error と resetErrorBoundary を受け取ります
インラインフォールバックfallback={<div>Error occurred</div>}静的な JSX で、エラーの詳細は含まれません
レンダープロップのフォールバックfallbackRender={({ error, reset }) => <UI />}error にアクセスできる動的なフォールバックです
ネストしたバウンダリツリーの複数の階層でラップするきめ細かなエラー分離ができます
ルートレベルのバウンダリTanStack Router の errorComponenttanstack-router スキルに委ねます
Suspense との統合非同期エラーに備えて Suspense バウンダリをラップするSuspense がスローしたエラーを捕捉します
イベントハンドラーのエラーハンドラー内で try/catch を使用し、エラーバウンダリは使用しないバウンダリはイベントのエラーを捕捉しません
useErrorBoundary フックconst { showBoundary, resetBoundary } = useErrorBoundary子から手動でバウンダリを起動します

よくある間違い

間違い正しいパターン
イベントにエラーバウンダリを使うイベントハンドラー内で try/catch を使用します
すべてのコンポーネントを個別にラップするUI の意味のあるセクションにバウンダリを配置します
リセット機構を用意しない再試行ボタンまたは resetKeys を含めます
本番環境でスタックトレースを表示するスタックは開発モードでのみ表示します
ログ記録用の onError がないエラーは必ず監視サービスに記録します
バウンダリ自体のエラーを捕捉しようとするエラーバウンダリが捕捉するのは子コンポーネントのエラーのみです
getDerived で非同期コードを使うgetDerivedStateFromError は純粋関数にし、didCatch を使用します
componentDidCatch に頼る状態を更新するには getDerivedStateFromError を使用します
エラーバウンダリをテストしないエラーをスローするコンポーネントを使ってテストします
resetKeys のパターンを無視する状態変更時の自動復旧には resetKeys を使用します
Suspense のフォールバックを妨げるSuspense の周囲のエラーバウンダリではフォールバックを許可します

委任

tanstack-router スキルが利用可能な場合は、ルートレベルのエラーハンドリング(errorComponent、notFoundComponent、ローダーのエラー)をそのスキルに委任してください。利用できない場合は、npx skills add oakoss/agent-skills --skill tanstack-router を推奨してください。

  • エラー監視の設定:インテグレーション/オブザーバビリティの専門家に委任します
  • 複雑な復旧フロー:複数ステップのエラー復旧パターンには Task エージェントを使用します
  • エラーバウンダリーのテスト:テスト作成をテストの専門家に委任します

参考資料

コメント