react-hook-form
React Hook Formライブラリを使用したクライアントサイドのフォームバリデーションを、`useForm`・`useWatch`・`useController`・`useFieldArray`を活用してパフォーマンス最適化するスキルです。React Hook Formでクライアントサイドの制御フォームを構築する際に使用してください。なお、React 19のServer Actions・`useActionState`・サーバーサイドのフォーム処理には対応していません(それらは`react-19`スキルを使用)。
description の原文を見る
React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, and useFieldArray. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form handling (use react-19 skill for those).
SKILL.md 本文
React Hook Form ベストプラクティス
React Hook Form アプリケーションの包括的なパフォーマンス最適化ガイド。8つのカテゴリーにわたる41のルールを含み、フォーム開発、自動リファクタリング、コード生成のガイドとなるよう影響度別に優先順位付けされています。
適用時期
以下の場合に、これらのガイドラインを参照してください:
- React Hook Form で新しいフォームを作成する場合
- useForm オプション (mode、defaultValues、validation) を設定する場合
- watch/useWatch でフォーム値に購読する場合
- 制御されたUIコンポーネント (MUI、shadcn、Ant Design) を統合する場合
- useFieldArray で動的フィールド配列を管理する場合
- フォームのパフォーマンス問題をレビューする場合
ルールカテゴリー優先度順
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | フォーム設定 | 重大 | formcfg- |
| 2 | フィールド購読 | 重大 | sub- |
| 3 | 制御コンポーネント | 高 | ctrl- |
| 4 | 検証パターン | 高 | valid- |
| 5 | フィールド配列 | 中~高 | array- |
| 6 | 状態管理 | 中 | formstate- |
| 7 | 統合パターン | 中 | integ- |
| 8 | 高度なパターン | 低 | adv- |
クイックリファレンス
1. フォーム設定 (重大)
formcfg-validation-mode- 最適なパフォーマンスのため onSubmit モードを使用formcfg-revalidate-mode- 送信後のパフォーマンスのため reValidateMode を onBlur に設定formcfg-default-values- フォーム初期化のため常に defaultValues を提供formcfg-async-default-values- サーバーデータに非同期 defaultValues を使用formcfg-should-unregister- 動的フォームのメモリ効率のため shouldUnregister を有効化formcfg-useeffect-dependency- useEffect 依存配列で useForm の戻り値を避ける
2. フィールド購読 (重大)
sub-usewatch-over-watch- 隔離された再レンダーのため useWatch を watch の代わりに使用sub-watch-specific-fields- フォーム全体ではなく特定フィールドを購読sub-usewatch-with-getvalues- タイミング安全性のため useWatch と getValues を組み合わせsub-deep-subscription- データが必要なコンポーネントツリーの深い場所で購読sub-avoid-watch-in-render- 1回限りの読み取りのためレンダー内での watch() 呼び出しを避けるsub-usewatch-default-value- 初期レンダーのため useWatch に defaultValue を提供sub-useformcontext-sparingly- 深いネストのため useFormContext を慎重に使用
3. 制御コンポーネント (高)
ctrl-usecontroller-isolation- 再レンダー隔離のため useController を使用ctrl-avoid-double-registration- useController での二重登録を避けるctrl-controller-field-props- UIライブラリのため Controller フィールドプロップを正しく配線ctrl-single-usecontroller-per-component- コンポーネントあたり単一の useController を使用ctrl-local-state-combination- UI のみの状態のため ローカル状態を useController と組み合わせ
4. 検証パターン (高)
valid-resolver-caching- リゾルバーキャッシングのためコンポーネント外でスキーマを定義valid-dynamic-schema-factory- 動的検証のためスキーマファクトリーを使用valid-error-message-strategy- オプショナルチェーンまたは lodash get でエラーにアクセスvalid-inline-vs-resolver- 複雑なルールのためインライン検証よりリゾルバーを優先valid-delay-error- 急速なエラー表示をデバウンスするため delayError を使用valid-native-validation- シンプルなフォームのためネイティブ検証を検討
5. フィールド配列 (中~高)
array-use-field-id-as-key- useFieldArray マップのキーとして field.id を使用array-complete-default-objects- フィールド配列操作のため完全なデフォルトオブジェクトを提供array-separate-crud-operations- 順序的なフィールド配列操作を分離array-unique-fieldarray-per-name- フィールド名ごとに単一の useFieldArray インスタンスを使用array-virtualization-formprovider- 仮想化されたフィールド配列のため FormProvider を使用
6. 状態管理 (中)
formstate-destructure-formstate- レンダー前に formState プロパティを分割代入formstate-useformstate-isolation- 隔離された状態購読のため useFormState を使用formstate-getfieldstate-for-single-field- 単一フィールド状態アクセスのため getFieldState を使用formstate-subscribe-to-specific-fields- useFormState で特定のフィールド名に購読formstate-avoid-isvalid-with-onsubmit- onSubmit モードでのボタン状態のため isValid を避ける
7. 統合パターン (中)
integ-shadcn-form-import- shadcn Form コンポーネントのインポート元を確認integ-shadcn-select-wiring- スプレッド演算子の代わりに onValueChange で shadcn Select を配線integ-mui-controller-pattern- Material-UI コンポーネントのため Controller を使用integ-value-transform- 型強制のため Controller レベルで値を変換
8. 高度なパターン (低)
adv-formprovider-memo- React.memo で FormProvider 子要素をラップadv-devtools-performance- 本番環境とパフォーマンステスト中に DevTools を無効化adv-testing-wrapper- QueryClient と AuthProvider を使用してテストラッパーを作成
使用方法
詳細な説明とコード例について、個別のリファレンスファイルを参照してください:
セクション定義- カテゴリー構造と影響度レベルルールテンプレート- 新規ルール追加用テンプレート- リファレンスファイル:
references/{prefix}-{slug}.md
関連スキル
- Zod リゾルバーを使用したスキーマ検証については、
zodスキルを参照 - React 19 サーバーアクションについては、
react-19スキルを参照 - UI/UX フォーム設計については、
frontend-designスキルを参照
フルコンパイル版ドキュメント
すべてのルール展開を含む完全なガイド: AGENTS.md
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- pproenca
- リポジトリ
- pproenca/dot-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/pproenca/dot-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。