Repository navigation
Update dependency react-hook-form to v7.91.0 - #1089
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
2 times, most recently
from
June 2, 2025 02:09
9d64b1c to
157089c
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 2, 2025 18:09
157089c to
c46097e
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 15, 2025 12:51
c46097e to
b9d4612
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 17, 2025 17:26
b9d4612 to
22c26dd
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 28, 2025 05:21
22c26dd to
5c95a38
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
July 5, 2025 00:30
5c95a38 to
be9938b
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
July 24, 2025 03:15
be9938b to
132945c
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
July 24, 2025 14:05
132945c to
91481f2
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
August 2, 2025 02:01
91481f2 to
b4c5682
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
September 19, 2025 21:52
b4c5682 to
521f99b
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
September 25, 2025 15:04
521f99b to
ea92a5d
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
October 4, 2025 05:02
ea92a5d to
0c868d0
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
October 11, 2025 01:45
0c868d0 to
662a67d
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
November 1, 2025 01:29
662a67d to
ab7124c
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
November 18, 2025 02:26
ab7124c to
297a14e
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
November 28, 2025 21:57
297a14e to
ffec2ae
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
February 12, 2026 10:39
168a5ec to
d8444b3
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
February 20, 2026 22:01
d8444b3 to
e194c70
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
March 22, 2026 01:37
e194c70 to
9a437d4
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
April 3, 2026 09:51
9a437d4 to
8f0835e
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
April 21, 2026 01:36
8f0835e to
0509f1a
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
April 26, 2026 01:37
0509f1a to
639eb1c
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
May 2, 2026 02:05
639eb1c to
dfc9a25
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
May 16, 2026 01:12
dfc9a25 to
c0a5154
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
May 23, 2026 09:55
c0a5154 to
d5cb95c
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
May 31, 2026 14:08
d5cb95c to
5f89bb8
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 8, 2026 02:35
5f89bb8 to
b7d5c1b
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 13, 2026 04:59
b7d5c1b to
f2c9ea3
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
June 20, 2026 03:30
f2c9ea3 to
988adab
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
July 5, 2026 05:09
988adab to
5a9330e
Compare
renovate
Bot
force-pushed
the
renovate/react-hook-form-7.x-lockfile
branch
from
July 18, 2026 05:26
5a9330e to
fdc991f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
7.56.3→7.91.0Release Notes
react-hook-form/react-hook-form (react-hook-form)
v7.91.0Compare Source
Changed
Formby reading control from context to avoid unnecessary re-rendersgetValuesby avoiding unnecessary shallow copiesFixed
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 resultFormletting 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 readyisReadytouseFormStatemounted 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 contentmaxLengthregisternot 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 valuesv7.90.0Compare Source
Changed
watch,subscribe, scoped subscriptions, dirty field checks and form state fan-outFixed
Object.prototypemembers not being marked as touched on blur andsetValuehasOwnPropertycloneObjectdropping the length of sparse arrayscloneObjectfailing on objects with a null prototyperemove()mishandling duplicated indexes and mutating the indexes passed inuseFieldArrayunregistering fields while a parent array reindexesuseWatchnot updating watched objects after an<Activity>subtree reconnectsuseWatchpreferring its owndefaultValueover formdefaultValuesfor array namesresetwithout values andkeepDefaultValuessettingisDirtyto trueControllerblur validation not working afterresetwatchreading a staleshouldUnregisteroption when a field registersshouldUseNativeValidationoption when stopping at the first errorrefkey not being compared correctlysetError,clearErrorsand remaining error updates not producing a newerrorsreferencev7.89.0Compare Source
Changed
@types/reactpeer dependencyFixed
validateFieldcallingsetCustomValidityon refs that don't implement it under native validationvalidaterunning a stale function instead of the latest onevalidate) being applied afterresetinonChangeandhandleSubmitdelayErrortimers for nested paths not being cancelled when a parent validates clean or is reset viaresetFieldgetValues(names, { dirtyFields })returning every row of a field array instead of only the marked entriestouchedFieldsis not subscribeduseFieldArrayemittingtouchedFieldsin form state updates when unnecessaryuseFieldArraymarking the form dirty when the array default isnullsetValuewithshouldValidatenot revalidatingdepssetValuewithshouldValidatenot triggering validation for a field array rootregisteroptions at runtime still being applieduseControllervalidatingrequiredagainst the input value instead of the controlled valueisValidnot recomputing when theerrorsprop is emptiedgetFieldState(name, formState)with a resolver afterreset()v7.88.0Compare Source
Added
<ErrorMessage />component for rendering a field's validation errorFixed
setValuedirty state comparison ignoringvalueAs*/setValueAstransformsdelayErrortimers not being cancelled when a parent is cleared or unregistereddelayErrorerrors coming back once the pending timer firescriteriaModenot refreshing when form options are updated at runtimeresetFieldleaving stale validating state for the fieldresetnot clearingisValidatingandvalidatingFields, and ignoringkeepIsValidatingreplace()leaving errors and touched state for removed rowsremove()leaking deleted values onto surviving itemshandleSubmitapplying a stale resolver result afterresethandleSubmitdropping resolver-reported root errors on submitresettriggerdropping registered nested errors when targeting their parenttriggersetting a parent error when the target has only nested resolver errorsuseWatchcompute cache not being initialized with the initial outputflatten/jsonToFormDatanot preservingFileListand not skippingundefinedschemaErrorLookupreporting nested containers as exact-name errorsunregisternot recomputingisValidatingafter clearingvalidatingFieldsunregisterstripping a kept value from the submit payloaditerateFieldsByActiononly breaking out of one loop levelsetErrortypes from a previous validation surviving an overwritereact-serverbuild not being publishedvalidateFieldcallingsetCustomValidityper key in validate-object modeuseFieldArraynot focusing a checkbox or radio in the appended rowuseFieldArraynot reconciling stale fields after anActivitysubtree reconnectsuseFormnever reconciling when anActivitysubtree is hidden on its first rendergetFieldStatenot readingisValidatingfrom the supplied form stateuseFormStatenot re-subscribing whencontrolchangesresetwithkeepValuesleavingdirtyFieldsout of sync withisDirtycloneObjectnot guardingBlobbeforeinstanceofv7.87.0Compare Source
Added
shouldTouchoption fortrigger()OpaqueTypesregistry for opaque leaf typesFixed
useController().field.onChange()-like APIsControllerunder a null parent submittingundefinedinstead of a valueERR_MODULE_NOT_FOUNDresolvingreact-hook-formdue to areact-serverdeclaration (Next.js builds)useWatchnever reconciling when anActivitysubtree is hidden on its first renderresetFieldnot recomputingisValidfor subscribe-only consumersgenerateWatchOutputignoringdefaultValuefor an array of namesuseFormStatenever reconciling when anActivitysubtree is hidden on its first renderv7.86.0Compare Source
Added
getErrorsmethodPerformance
createFormControlunregisterwithout subscribersFixed
flattendiscardingFileandBlobvalues instead of treating them as leaf nodesvalidateFieldnot passing the field error tosetCustomValiditywhencriteriaModeisallhasValidationtreating falsy but valid values (min: 0,max: 0,minLength: 0,maxLength: 0,required: '') as no validationsetValuetargeting a nested leaf not notifying aControllerregistered on a field array item rootsetValuesnot updating fields registered under an object or array valueuseWatchreturning a stale value on name change when the new value isnullunregisterinvertingkeepDirtywhen broadcastingisDirtyv7.85.0Compare Source
Added
<Activity />Fixed
getFieldStateerror resolution from a field pathuseWatchdiscardinguseForm({ defaultValues })in favor of its owndefaultValuebefore the form mountssetValueemitting a duplicatevaluesstate notification for fields without a native input refuseFieldArrayroot-level error (errors.name.root) being lost onappend/prepend/insert/removemin/maxvalidation being skipped forvalueAsDatefieldsv7.84.0Compare Source
Improvements
handleSubmitreturns the typed result of theonValidcallback instead of discarding it<Form />supports a function-basedaction(Server Action style) in addition to URL-string actionsFixed
reset()withresetOptions.keepDirtyValuesfreezing clean sibling fields in a nested object when another field in that object is dirtyFieldArrayandFormStatetype exportssetValuesnot notifyinguseFieldArraysubscribers, leaving rendered fields stalev7.83.0Compare Source
Improvements
getEventValueto handle file inputsFixed
clearErrors()dirtyFieldsreference stabilityuseControllernot re-subscribingonChange/onBlurwhencontrolchangesundefinedv7.82.0Compare Source
Added
delayErroroption forsetValueto delay validation error updatesFixed
resetDefaultValuesthrough form contextsetValuewithshouldDirtynot updating dirty state correctly when the form is disableddirtyFieldsboolean values for registered array fieldsFieldArraycomponent exportPerformance
getDirtyFieldsperformance, especially for larger forms and deeply nested valuesv7.81.0Compare Source
Added
FieldArraycomponent built onuseFieldArrayfor controlled field-array renderingFixed
clearErrorschanging thenamevalue fromform.subscriberesettriggeringsubscribewith the latest name instead ofundefinedsetValuesleaving stale elements behind when shrinking a field arrayflattenpreservingDatevalues as leaf nodesuseFieldArraymin length validation error changing location in theerrorsobjectuseControllernot reflecting a cleared parent object in controlled fieldsSecurity
unset()against prototype-path traversal (__proto__/constructor/prototype), matching the existingset()guardPerformance
useFieldArrayresetv7.80.0Compare Source
Added
disabledprop support for individual fields withinuseFieldArrayFixed
deepEqualincorrectly treating empty array[]and empty plain object{}as equalPerformance
onChange,setValid, dirty checking,setValue, andsetValuesperformancev7.79.0Compare Source
Added
disabledoption touseFieldArrayFixed
ControlleronChangepromise return typedeepEqualfalse positives with shared object referencesshouldUseNativeValidationbehavior for radio groupscreateFormControlstability with fast refresh in dev modeStrictModevalue preservation during remountformState.errorsreactivity with React compilerv7.78.0Compare Source
Fixed
Controllerfields afterresetwithout rerender (RN issue #13455)useFormState().isDirtyrace with async resolver inonChangemodevaluesprop overdefaultValueswhenshouldUnregisteris truedeepEqualfor empty non-plain objectsTypes
dirtyFieldstyping for field arrays with undefined entriesv7.77.0Compare Source
Added
resetDefaultValuesAPIFixed
isDirtyinsubscribepayload afterreset(..., { keepValues: true })shouldUnregisterreset({})behavior requiring double-call to take effectFieldArrayerrors overriding nested fieldsSecurity
get()against prototype-path traversal (__proto__/constructor/prototype)Performance
v7.76.1Compare Source
Fixed
setValueupdatesNaNas empty whenvalueAsNumberistrueinvalidateFieldsetValuespassoptionsparameter through to enable validationsetValuesemit whole-form change without stalename/typePerformance
setValuesskip redundant per-field deep clonessetValuesthreadskipClonethroughsetFieldValuev7.76.0Compare Source
Added
isDirtysync withdirtyFieldsstateFixed
formState.defaultValueswhenuseFieldArrayandwatchare used togethertrigger()setValueupdatesuseFieldArrayremoveleaves array with empty object when usingvaluespropControllerfields withshouldUnregistersetValuesupdates to mountedControllerfieldsappend({ obj: null })silently replaced bydefaultValuesafterremove()isValidatingreactivity whenvalidatingFieldsis not subscribedv7.75.0Compare Source
Added
getDirtyFieldsto prune empty fieldsFixed
setValuesinFormProvidercontext valueuseWatchre-render when unrelated field validation occursisDirtyafter re-registering a previously unregistered fieldv7.74.0Compare Source
Added
setValuesAPIFixed
useControllername changesNaNas empty whenvalueAsNumberistrueinvalidateFieldv7.73.1Compare Source
Fixed
setValuesthat was accidentally included in patch; fix build to exclude test filesv7.72.1Compare Source
Fixed
setValuewithshouldDirtyfrom polluting unrelated dirty fieldsHookFormControlContextto prevent render conflictsisNameInFieldArrayshould check all ancestor paths for nested field arraysformState.isValidincorrect onControllerre-mountv7.72.0Compare Source
Added
validateoptionformStateto track submit stateFixed
useFieldArrayfrom marking unrelated fields as dirtyv7.71.2Compare Source
Fixed
clearErrorsemit name signal for targeted field updatesDeepPartialSkipArrayKeyforWatchObservervalue parameterv7.71.1Compare Source
Fixed
booleans_as_integersvalue handlingv7.71.0Compare Source
Changed
FormProvidercontext value to prevent unnecessary rerendersFixed
isValidwhen fielddisabledstate changesv7.70.0Compare Source
Fixed
keepDirtyValueswatchreturn typesdeepEqualand validationDeepPartialsetValuev7.69.0Compare Source
Added
<Watch />API withuseWatchFixed
isValidstate whenkeepIsValidoption is usedcreateFormControl.subscribesubscription listens only to subscribed changesisValidatingstate updates with validation resultsetErrorandsetFocusv7.68.0Compare Source
Added
<FormStateSubscribe />componentFixed
reset()to fix Next.js 16 Server Actions issuev7.67.0Compare Source
Added
exactoption foruseControllerpropsFixed
undefinedvalue with asyncdefaultValuesinControllerPathValueImpltype inferencev7.66.1Compare Source
Performance
getDirtyFieldsFixed
setValid()during batch array updatesisValidafterresetwhen values update asynchronouslyObject.isindeepEqualv7.66.0Compare Source
Added
useWatchanduseControllernow react tonameprop changesFixed
watch()returningundefinedimmediately afterreset()<Watch />componentv7.65.0Compare Source
Added
<Watch />componentFixed
useFieldArrayrulesgetDirtyFieldssubmit fields withnullvalues when usinguseFormv7.64.0Compare Source
Added
PathValueImpltypeFixed
Controller'sdefaultValuewithshouldUnregisterpropv7.63.0Compare Source
Added
formStateFixed
isValidatingfieldsv7.62.0Compare Source
Fixed
defaultValuesafterresetwith newdefaultValuesFieldErrorsonBlurforreadOnlyfieldsdataincloneObjectv7.61.1Compare Source
Fixed
watchreturn type change based ondefaultValue(caused regressions)v7.61.0Compare Source
Added
computeprop foruseWatchsubscriptionFixed
defaultValuessetValuesubscription callbacks"multipart/form-data"encType in<Form />componentv7.60.0Compare Source
Added
resetwithkeepFieldsRefoption to keep fields referenceFixed
Setfrom clone objectv7.59.0Compare Source
Added
Fixed
formDatareference cloneundefinedvalue for submit datauseWatchobject variable param handlingv7.58.1: Version 7.58.1Compare Source
🔧 check window.crypto undefined (#12893)
v7.58.0Compare Source
Added
FieldArrayPathByValuetypestringToPathto prevent errors at field names containing quotesFixed
formControlreturn fromuseFormuseFieldArrayfields populationv7.57.0Compare Source
Added
errorspropUseFormResetFieldOptionstype forresetFieldAPIFixed
subscribeform.subscribeuseControllerfocus function runtime issuesetValueskips values not in own properties (prevents infinite call stack with self-referencing proto)useFieldArraymodeandreValidateModereactivityvaluesprop regressionv7.56.4: Version 7.56.4Compare Source
🐞 fix: Changes setValue to skip values that are not in ownProperties to prevent infinite call stack (#12731)
🐞 fix: checkbox duplication handling in useFieldArray (#12793)
🐞 fix: make mode and reValidateMode reactive (#12803)
Configuration
📅 Schedule: (in timezone America/Los_Angeles)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.