You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The handle of a row that was removed is inert: a late setValue, setError, setTouched or blur no longer writes a junk -1 key on the array, marks the form invalid with an error nobody can see, or brings back the state the removal deleted.
The resolver, the form rule, the field validators and the setValue updater run untracked, so the effect that causes a pass no longer subscribes to what they read.
trigger() (form and field, so useWizard too) runs again when an edit superseded its pass, instead of reporting a clean form while the newer pass is still deciding (at most 8 rounds).
issuesToErrors no longer throws for a path named like an Object.prototype member (toString, valueOf).
setIn refuses a negative, fractional or NaN index, deleteIn no longer removes the first item for the path list.length, and replace() with an item the form refuses keeps the rows and their state.
formDataToValues reads only finite decimal text into a number field (not Infinity, 1e999, 0x10) and skips a name that clashes with one already read in either order.
useWizard treats a NaN step as the first step.
A debounced schema or form validator keeps the paths of every change in its quiet period, so two setValue calls in one window no longer leave the first field's problem hidden.
unregister("items.0") removes the row with the item, so the rows after it keep their keys and state instead of shifting onto the wrong values.
field(path, { validate }) after the handle cache evicted the path no longer registers the validator a second time.
The reset listener a file control puts on its form is removed when the form is disposed, and a reset after the control or the row is gone writes nothing.
formDataToValues no longer creates a row for an unchecked checkbox when the defaults have more rows with text or number fields than the post.
A posted number no longer costs quadratic time: the decimal pattern split a run of digits several ways, so a long digit string that was not a number held the event loop for seconds (formDataToValues, parseForm). It is linear now and accepts the same text.