mcpField
H
hydration-guardian

hydration-guardian

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

hydration-guardian について

hydration-guardian は、React SSR のサーバー生成 HTML とクライアントツリーの不一致を診断・予防するスキルです。React 19 のデータ連携、レンダリング方法、エラー監視のパターンを扱います。

主な機能

  1. 01ハイドレーション不一致の原因診断
  2. 02Suspense による選択的ハイドレーション
  3. 03React 19 の use() によるデータ連携
  4. 04'use cache' によるデータずれの防止
  5. 05レンダリング後の DOM 状態検証
  6. 06復旧処理とハイドレーションエラーの監視

活用シーン

  1. 01テキストやマークアップの不一致調査
  2. 02SSR でのクライアント専用コンテンツ対応
  3. 03日付や動的データによるずれの軽減
  4. 04本番環境のハイドレーション警告の監査

インストール

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

$npx skills add https://github.com/oakoss/agent-skills --skill hydration-guardian

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

同梱ファイル

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

references/
common-mismatches.md
selective-hydration.md
use-cache-patterns.md
validation-techniques.md

詳細

ハイドレーションガーディアン

概要

サーバーでレンダリングされた HTML とクライアント側の React ツリー間で、不一致が一切ない整合性を確保します。ハイドレーションエラーの診断、Suspense 境界を用いた選択的ハイドレーション、React 19 の use() フックによる決定論的なデータブリッジ、データのずれをなくすための 'use cache'、クライアント専用コンテンツ向けの 2 パスレンダリング、不一致箇所を正確に特定する React 19 の単一差分ハイドレーションエラー報告、レンダリング済み DOM の状態の自動検証を扱います。

使用する場面: ハイドレーションの不一致エラーのデバッグ、テキストコンテンツの不一致の修正、ブラウザー拡張機能による DOM の汚染への対処、決定論的なデータブリッジの実装、SSR/クライアントのハイドレーションパフォーマンスの最適化、onRecoverableError によるエラー監視の設定。

使用しない場面: SSR を使用しないクライアント専用の React アプリケーション、ハイドレーションを使用しない静的サイト、API 専用のバックエンド。

クイックリファレンス

パターンアプローチ要点
選択的ハイドレーション<Suspense fallback={...}> 境界独立してハイドレーションされ、ユーザーの操作が優先されます
決定論的なブリッジuseEffect の代わりに use(serverPromise)サーバーからクライアントへデータを直接移行します(React 19)
キャッシュディレクティブデータフェッチャー内の 'use cache'ハイドレーション中にサーバーの結果をクライアントと正確に共有します
2 パスレンダリングクライアント専用コンテンツに useState + useEffect を使用1 回目のレンダリングはサーバーと一致し、2 回目にクライアントのコンテンツを追加します
クライアント専用レンダリングのスキップssr: false を指定した next/dynamicコンポーネントをサーバーレンダリングから完全に除外します
エラー監視hydrateRoot の onRecoverableError表面化しないハイドレーションのリカバリーを検出して報告します
エラー報告React 19 の単一差分エラー形式統合された差分出力で不一致箇所を正確に特定します
エラーコールバックonUncaughtError、onCaughtErrorcreateRoot/hydrateRoot で詳細なエラー処理を行います
日付/時刻の安全性UTC 正規化またはサーバー同期コンテキストロケール依存のハイドレーション不一致を防ぎます
拡張機能への耐性一般的なブラウザー拡張機能を有効にしてテスト翻訳ツールやダークモードツールによる DOM の汚染を検出します

ハイドレーションエラーの診断

エラーメッセージ考えられる原因対応策
Text content did not match決定性のないレンダリング(日付、ランダムな値)2 パスレンダリングまたは suppressHydrationWarning を使用します
Expected server HTML to containクライアントが、サーバーにはないコンテンツをレンダリングしているクライアント専用コードを useEffect または動的インポートに移します
Hydration failed無効な HTML の入れ子(<p> 内の <p>)HTML の構造を修正します。ブラウザーによる自動修正でずれが生じます
Extra attributes from serverクライアントにないサーバー専用の属性属性を一致させるか、suppressHydrationWarning を使用します
There was an error while hydrating拡張機能によって変更された DOM または重大な不一致ブラウザー拡張機能を確認し、HTML が有効であることを検証します

よくある間違い

間違い正しいパターン
コンテナ要素で suppressHydrationWarning を使う根本原因を修正します。回避できない差異がある場合に限り、末端要素で抑制します
render 本文で window や document にアクセスするクライアント専用のコードを useEffect で囲むか、ssr: false を指定して next/dynamic を使います
安定したシード値を使わずに Math.random() や new Date() を使うUTC で正規化するか、サーバーでキャッシュした値、または 2 パスレンダリングを使います
本番環境でのサイレントなハイドレーション回復を無視するhydrateRoot で onRecoverableError を設定し、ログを記録して監視します
サーバーとクライアントで不一致がある状態で dangerouslySetInnerHTML を使うコンテンツを同一にするか、専用の key を変更して強制的に再マウントします
render 内で typeof window !== 'undefined' を確認する2 パスレンダリングを使います。このチェックはサーバーでも実行されます(false が返ります)
<p> の中に <p>、または <p> の中に <div> をネストする不正な HTML のネストを修正します。ブラウザーが修正するため、サーバーとクライアントにずれが生じます

委任

  • レンダリングされたページをスキャンして、隠れたハイドレーション警告を探す:Explore エージェントと Chrome DevTools を使って、ハイドレーション監査スクリプトを実行します
  • 複数のルートにわたるハイドレーションの不一致を修正する:Task エージェントを使って、影響を受ける各コンポーネントを切り分け、修正して検証します
  • 新機能のハイドレーションに安全なアーキテクチャを設計する:Plan エージェントを使って、Suspense 境界、2 パスレンダリング、キャッシュパターンから選択します

参考資料

  • よくある不一致 -- 日付、ロケール、HTML のネスト、ブラウザー拡張機能など、ハイドレーションの不一致エラーの原因、診断方法、修正方法
  • 選択的ハイドレーション -- Suspense ベースの選択的ハイドレーション、ストリーミング SSR、2 パスレンダリング、クライアント専用コンポーネント
  • キャッシュパターンの使用 -- データのずれの防止、Next.js の use cache ディレクティブ、React 19 の use() フック、決定論的なデータブリッジ
  • 検証手法 -- DOM の自動検証、変更の監視、onRecoverableError、本番環境でのハイドレーション監視

コメント