react-hook-form
7.91.0 · 23 Oct 2026MIT42M / weekRepositoryHomepagenpmAtom feed
In short
46 fixed4 changed
Release note
Changed
Improve performance of
Formby reading control from context to avoid unnecessary re-rendersImprove performance of
getValuesby avoiding unnecessary shallow copiesSimplify multipart content-type header filtering
Align form-level validation error types
Fixed
useFieldArraynot registering array rules again afterresetsetValuenot updating field array rows when a parent object is setcreateFormControlkeeping a newer change's error when an olderisValidpass settlesvalidatetreating an empty message array as validresetreleasingkeepIsValidon the next field change or field array operationregisteronly emitting the progressiverequiredattribute when the rule is oncreateFormControldropping the async result of a field unregistered while it validatescreateFormControlsupporting null-prototype objects insetValueFormhandling case-insensitive and parameterized multipartencTypecreateFormControlignoring a staleNaNorInvalid Datevalidation resultSettle submit state when validation throws
Formletting fetch set the multipart boundary for a multipart content-type headercreateFormControlignoring a stale built-in validity result afterresetuseFormrunning the initial validity check when a child subscribed firstFormsending atext/plainbody for atext/plaincontent typecreateFormControlcopying theerrorsprop instead of writing into ituseFormresettingresetOptionswhen removed from propscreateFormControlhandling falsy values correctly in_getDirtyandresetFieldunregisterdropping the field's rules whenkeepValuekeeps only its valueuseFormclearing errors when theerrorsoption is removed or set toundefineduseFieldArraydropping a validation result once the array has changedresetkeeping retained fields disableduseFormre-enabling the form when thedisabledoption is removedformStateproducing a newvalidatingFieldsreference when it changesvalidateFieldvalidating the stored value ofControllerfields with a DOM refuseFormresettingprogressiveoption when removed from propscloneObjectcopying plain objects that have aconstructorkeyuseFieldArrayreindexing row fields when the array has rulesFormmatching JSON content types case-insensitivelydeepEqualcomparing keys as own properties instead of viainregisterkeeping select options picked before the form is readyReport
isReadytouseFormStatemounted with the formuseFieldArrayrevalidating array operations after submit inonBlurmodegetDirtyFieldshandlingnullorundefinedform values when clearing a fieldsetValueupdatingisDirtywhenshouldDirtyfills a field arraydelayErrorflushing the delayed error on blur when blur also validatesuseWatchusing the newdefaultValuewhen the watched name changesdeepEqualcomparing sparse array lengthsFormsending a url-encoded body for a url-encoded content typedeepEqualcomparing empty null-prototype objects by contentEnforce numeric zero
maxLengthregisternot adding an array row when registered without a valueFormmatchingContent-Typeheader names case-insensitivelytriggerrecomputing preservedisValidafterresetuseFieldArrayunregistering on unmount unless a parent array is reindexingsetValuenotifying field arrays so their rows follow the new values