react-hook-form
React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, the subscribe() API, and the Watch / FormStateSubscribe / FieldArray render-prop components. Covers RHF 7.82 additions including resetDefaultValues() and the disabled field-array option. 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).
How do I install this agent skill?
npx skills add https://github.com/pproenca/dot-skills --skill react-hook-formIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The React Hook Form Best Practices skill is a comprehensive technical guide for optimizing frontend form performance. It consists of 41 well-documented rules covering configuration, subscriptions, and integration with UI libraries like MUI and shadcn. No security vulnerabilities, malicious patterns, or data exfiltration risks were detected.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
47/47 files flagged
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
React Hook Form Best Practices by Community
Comprehensive performance optimization guide for React Hook Form applications. Contains 35 rules across 7 categories, each naming a decision that goes wrong by default. Verified against react-hook-form 7.82.0.
When to Apply
Reference these guidelines when:
- Writing new forms with React Hook Form
- Configuring useForm options (mode, defaultValues, validation)
- Subscribing to form values with watch / useWatch / subscribe
- Integrating controlled UI components (MUI, shadcn, Ant Design)
- Managing dynamic field arrays with useFieldArray
- Handling async submit, server errors, and submit lifecycle state
- Reviewing forms for performance issues
When NOT to Use This Skill
- React 19 Server Actions /
useActionState— use thereact-19skill instead - Deeply nested, fully type-safe forms — TanStack Form may be a better fit for forms with complex nested schemas; this skill assumes you've already chosen RHF
- Single-input or trivial forms — uncontrolled
<form>+FormDatais often simpler than pulling in any library
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Form Configuration | CRITICAL | formcfg- |
| 2 | Field Subscription | CRITICAL | sub- |
| 3 | Controlled Components | HIGH | ctrl- |
| 4 | Validation Patterns | HIGH | valid- |
| 5 | State Management | MEDIUM-HIGH | formstate- |
| 6 | Field Arrays | MEDIUM-HIGH | array- |
| 7 | Integration Patterns | MEDIUM | integ- |
Quick Reference
1. Form Configuration (CRITICAL)
formcfg-default-values- Always Provide defaultValues for Form Initializationformcfg-useeffect-dependency- Depend on formState Slices, Not on formState Itselfformcfg-validation-mode- Justify Any mode Other Than the Default onSubmitformcfg-revalidate-mode- Keep Default reValidateMode Unless Validation Is Expensiveformcfg-should-unregister- Keep shouldUnregister Off Unless Hidden Fields Must Leave the Payloadformcfg-transformed-values-generic- Pass the Third useForm Generic When the Resolver Transforms Valuesformcfg-async-default-values- Use Async defaultValues for Server Dataformcfg-disabled-prop- Use the HTML disabled Attribute for Visual Disabling, Not register's disabled Optionformcfg-values-prop- Use the values Prop to Keep a Form in Sync with Server Data
2. Field Subscription (CRITICAL)
sub-avoid-watch-in-render- Avoid Calling watch() in Render for One-Time Readssub-memo-cannot-beat-context- React.memo Cannot Stop Context-Driven Re-renders Under FormProvidersub-subscribe-outside-react- Use subscribe() to React to Form Changes Outside the React Lifecyclesub-render-prop-components- Use the Render-Prop Components to Isolate Re-renders Without a Child Componentsub-useformcontext-sparingly- Use useFormContext Sparingly for Deep Nestingsub-usewatch-over-watch- Use useWatch Instead of watch for Isolated Re-renderssub-watch-specific-fields- Watch Specific Fields Instead of Entire Form
3. Controlled Components (HIGH)
ctrl-usecontroller-isolation- Isolate Controlled Inputs in Dedicated Child Componentsctrl-controller-field-props- Wire Controller Field Props Correctly for UI Libraries
4. Validation Patterns (HIGH)
valid-resolver-caching- Build the Validation Schema Once, Outside the Render Pathvalid-valueasnumber-empty-nan- Handle the NaN valueAsNumber Produces for an Empty Inputvalid-server-errors- Surface Server Errors via setError('root.serverError', ...)valid-delay-error- Use delayError to Debounce Rapid Error Display
5. State Management (MEDIUM-HIGH)
formstate-avoid-isvalid-with-onsubmit- Avoid isValid with onSubmit Mode for Button Stateformstate-destructure-formstate- Read Every formState Property You Depend On During Renderformstate-reset-default-values- Rebase Defaults with resetDefaultValues After a Successful Saveformstate-handlesubmit-oninvalid- Use handleSubmit's Second Argument to Handle a Rejected Submitformstate-useformstate-isolation- Use useFormState for Isolated State Subscriptionsformstate-async-submit-lifecycle- Wrap Async Submit Handlers in try/catch and Reset on isSubmitSuccessful
6. Field Arrays (MEDIUM-HIGH)
array-separate-crud-operations- Separate Sequential Field Array Operationsarray-use-field-id-as-key- Use field.id as Key in useFieldArray Mapsarray-unique-fieldarray-per-name- Use Single useFieldArray Instance Per Field Namearray-disabled-silently-noops- useFieldArray's disabled Option Makes Every Mutation a Silent No-op
7. Integration Patterns (MEDIUM)
integ-value-transform- Transform Values at Controller Level for Type Coercioninteg-shadcn-form-import- Verify shadcn Form Component Import Sourceinteg-shadcn-select-wiring- Wire shadcn Select with onValueChange Instead of Spread
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
- Reference files:
references/{prefix}-{slug}.md
Related Skills
- For schema validation with Zod resolver, see
zodskill - For React 19 server actions, see
react-19skill - For UI/UX form design, see
frontend-designskill
Full Compiled Document
For the complete guide with all rules expanded: AGENTS.md
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/pproenca/dot-skills/react-hook-form">View react-hook-form on skillZs</a>