Capítulo 5 de 39
The FAQ page collects the recurring gotchas of an uncontrolled-first form library: why performance is good, why the first keystroke can "not work," how RHF compares to Formik/Redux Form, and how watch/getValues/local state differ.
register captures a ref directly instead of wiring value/onChange, so typing doesn't re-render the whole form; Controller/useController isolate re-renders to just the controlled field when a component can't be uncontrolled.defaultValue/defaultChecked, never value — setting value fights the uncontrolled model and is the #1 cause of "first keystroke doesn't work."watch subscribes and re-renders on change; getValues reads current values without subscribing or re-rendering; local React state re-renders on every change and also drives what gets rendered, which is more than a form value should control.key so React treats them as different elements instead of reusing the DOM node.false, meaning inputs that unmount (modal/tab forms) keep their values registered instead of being wiped — the recommended fix for modal/tab forms is a separate form per modal/tab rather than relying on values surviving unmount.value on a registered input: breaks the uncontrolled model; use defaultValue for the initial value and let RHF own updates.shouldUnregister: false or a redesign: RHF stores state per input, not per "logical" field that outlives unmounting; the documented fix is either shouldUnregister: false (default) or capturing submission data into local/global state per step.key prop rather than debugging RHF.getValues() is the cheap, non-reactive read; watch() is the reactive, re-rendering read — pick based on whether you need a render.