フォーム
ルール
- React Hook Form でフォーム状態を管理 —
useForm()+register()または Controller - Zod スキーマでバリデーション — クライアントとサーバー間で共有
- エラー表示: 各フィールドの下にインライン表示、赤色テキスト、
aria-describedbyで関連付け - マルチステップフォーム: ステップ状態を持つウィザードパターン、各ステップを独立してバリデーション
- ファイルアップロード: プレビュー、ドラッグ&ドロップ、進捗インジケーター付きの別コンポーネント
- 長いフォームの自動保存 — デバウンス処理でサーバー/localStorage に保存
- アクセシビリティ: ラベル、エラー説明、バリデーション失敗時のフォーカス管理
- ローディング中は送信ボタンを無効化 — スピナーを表示し、二重送信を防止