react-hook-form
7.91.0 · 23 Oct 2026MIT42M / weekRepositoryHomepagenpmAtom feed
Upgrading react-hook-form from 6.3.0 to 7.91.0
297 releases in betweennotes for 114
- 2+
- changes to make
- 0
- advisories fixed
- 113+
- new
- 261+
- fixes
Counted from 114 of 297 release notes. Advisories are counted from the advisory database, in full.
Before you upgrade
Tick each one off as you go- breaking7.42.0
- breaking6.6.0
Security
- 7.81.0
Harden
unset()against prototype-path traversal (__proto__/constructor/prototype), matching the existingset()guard - 7.77.0
Harden
get()against prototype-path traversal (__proto__/constructor/prototype) - 7.69.0
Security: CVE-2025-67779, CVE-2025-55184, CVE-2025-55183, CVE-2025-55182
Release by release
- fixed
useFieldArraynot registering array rules again afterreset - fixed
setValuenot updating field array rows when a parent object is set - fixed
createFormControlkeeping a newer change's error when an olderisValidpass settles - fixed
validatetreating an empty message array as valid
- fixed
- fixed
Fields named after
Object.prototypemembers not being marked as touched on blur andsetValue - fixed
Dirty values extraction for fields named
hasOwnProperty - fixed
cloneObjectdropping the length of sparse arrays - fixed
cloneObjectfailing on objects with a null prototype
- fixed
- new
Add optional
@types/reactpeer dependency - fixed
validateFieldcallingsetCustomValidityon refs that don't implement it under native validation - fixed
Form-level
validaterunning a stale function instead of the latest one - fixed
Form-level validation leaving stale errors after a successful re-validation
- new
- new
<ErrorMessage />component for rendering a field's validation error - fixed
setValuedirty state comparison ignoringvalueAs*/setValueAstransforms - fixed
Nested
delayErrortimers not being cancelled when a parent is cleared or unregistered - fixed
Cleared
delayErrorerrors coming back once the pending timer fires
- new
- new
shouldTouchoption fortrigger() - new
OpaqueTypesregistry for opaque leaf types - fixed
Inconsistent behavior among
useController().field.onChange()-like APIs - fixed
Controllerunder a null parent submittingundefinedinstead of a value
- new
- new
Type-safe
getErrorsmethod - new
Improve
createFormControl - new
Improve clone object check
- new
Avoid cloning values in
unregisterwithout subscribers
- new
- new
Support
<Activity /> - fixed
getFieldStateerror resolution from a field path - fixed
useWatchdiscardinguseForm({ defaultValues })in favor of its owndefaultValuebefore the form mounts - fixed
setValueemitting a duplicatevaluesstate notification for fields without a native input ref - fixed
Stale render re-creating a field array path vacated by an array action
- fixed
useFieldArrayroot-level error (errors.name.root) being lost onappend/prepend/insert/remove - fixed
min/maxvalidation being skipped forvalueAsDatefields
- new
- new
handleSubmitreturns the typed result of theonValidcallback instead of discarding it - new
<Form />supports a function-basedaction(Server Action style) in addition to URL-string actions - new
Improve performance and reduce bundle size
- fixed
reset()withresetOptions.keepDirtyValuesfreezing clean sibling fields in a nested object when another field in that object is dirty - fixed
Restore missing
FieldArrayandFormStatetype exports - fixed
setValuesnot notifyinguseFieldArraysubscribers, leaving rendered fields stale
- new
66 other lines we could not sort, mostly version bumps
- 7.91.0
Improve performance of
Formby reading control from context to avoid unnecessary re-renders - 7.91.0
Improve performance of
getValuesby avoiding unnecessary shallow copies - 7.91.0
Simplify multipart content-type header filtering
- 7.91.0
Align form-level validation error types
- 7.90.0
Improve performance of
watch,subscribe, scoped subscriptions, dirty field checks and form state fan-out - 7.90.0
Reduce bundle size
- 7.78.0
Update
dirtyFieldstyping for field arrays with undefined entries - 7.71.0
Separate control context to prevent unnecessary rerenders
- 7.71.0
Memoize
FormProvidercontext value to prevent unnecessary rerenders - 7.54.0
useFormreturn methods will be memorized basedformStateupdate