Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

If a React Hook Form field array stops appearing or loses values when a wizard advances, first find out whether the step unmounts the array, whether unregistration is enabled, or whether the problem is only that rendered fields look stale. These are different failures with different fixes. Check the form, useFieldArray, and input-level settings, then verify the array name, row keys, update method, hook instances, and installed version.

Identify what “not updating” means

Start by comparing the rendered rows with the form’s current values and the eventual submission. A missing row, a value that vanishes after changing steps, and a value visible to watch but not reflected in rendered fields are not the same symptom.

  • Rows disappear or appear stale: inspect the array’s rendered structure, React keys, and how many useFieldArray instances manage it.
  • Values disappear after changing steps: determine whether the step unmounts the inputs and check unregistration settings.
  • watch shows a value but the row does not update: distinguish current form values from the array structure used to render rows, then check version-specific subscriber behavior.
  • A row remounts after an edit: check whether the operation is update, which intentionally unmounts and remounts that row.

The official useFieldArray API documentation describes fields as array entries containing default values and a generated key. Treat it as rendering structure, not as a live replacement for every current input value. Use the form’s value APIs to inspect current values.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check whether changing steps unmounts the array

A wizard may remove the inactive step from the React tree, or it may keep that step mounted but hidden. If the component containing useFieldArray or its inputs unmounts, the form’s unregistration behavior matters. The register documentation explains that input-level shouldUnregister removes the input and its default value after unmount.

  1. Inspect the step-rendering logic and establish whether the array component and its inputs actually unmount on navigation.
  2. Check shouldUnregister in the useForm configuration, the useFieldArray options, and any individual input registration.
  3. Decide whether values from inactive steps should remain in the form. Configure unregistration to match that behavior rather than changing it as a blind workaround.
  4. Retest both the rendered rows and the submitted values after leaving and returning to the step.

The field-array API has its own shouldUnregister option for unregistration after the array unmounts. The register documentation cautions against using input-level shouldUnregister with useFieldArray: input unmounts, remounts, or reordering can cause unregister behavior to run at an unexpected point. A historical maintainer discussion about multi-step forms provides design context, but current behavior should be checked against the API and the application’s actual mounting pattern.

Verify the array name, row keys, and input paths

Keep the useFieldArray name stable. The API requires a name and does not support dynamic names. For each rendered row, use its generated field.id as the React key—not the array index. React Hook Form specifically warns that index keys can make re-renders break field behavior.

const { fields, append, remove } = useFieldArray({ control, name: "items" });

return fields.map((field, index) => (
  <div key={field.id}>
    <input {...register(`items.${index}.label`)} />
    <button type="button" onClick={() => remove(index)}>Remove</button>
  </div>
));

For nested or indexed fields, use dot-and-index paths such as items.0.label. The register documentation discourages bracket syntax for consistency with TypeScript.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check how rows are being changed

Array operations have specific lifecycle behavior. The useFieldArray API requires complete objects when appending, prepending, inserting, or updating; supplying only part of a row can leave the structure incomplete.

  • update(index, object): unmounts and remounts the updated row. If that remount is unwanted, use setValue to change the relevant value instead.
  • append, prepend, insert, and update: pass a complete row object, not a partial object.
  • remove, move, or other array operations: check that the operation targets the intended index and that each rendered row uses field.id as its key.

Look for multiple hooks managing the same array

If the same array is controlled by useFieldArray instances in different components, test whether both instances stay synchronized. An issue filed against version 7.54.2 reported that changes made through a second instance were visible through watch while the first instance’s rendered fields did not refresh. That is a report of one reproduction and version, not evidence that every current multi-component form has the same defect. Reproduce with the application’s installed release before restructuring or applying a workaround.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Check the installed React Hook Form version

Compare the version in the application’s lockfile or package configuration with the React Hook Form changelog. The changelog lists version 7.89.0, dated September 26, 2026. Version 7.88.0, dated September 12, 2026, includes a fix for setValues not notifying useFieldArray subscribers, which could leave rendered fields stale. That release history makes version checking worthwhile; it does not by itself explain a particular application’s symptom.

Older issue reports need the same caution. A 2021 report associated a specific stale-value reproduction with shouldUnregister: true. It supports checking the setting, not assuming that current versions share the reported behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a short diagnostic pass before changing the form

  1. Record the installed React Hook Form version and reproduce the issue on that version.
  2. Determine whether the inactive step unmounts, and note whether rows, current values, or only submitted values are missing.
  3. Check form-, field-array-, and input-level shouldUnregister settings against the desired value-retention behavior.
  4. Confirm the array name is static, row keys use field.id, and indexed paths use dot notation.
  5. Check whether an operation such as update is causing a deliberate remount, and whether multiple hook instances manage the same array.
  6. Consult the changelog for fixes applicable to the installed release before relying on an older issue report.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.