--- title: Use Single useFieldArray Instance Per Field Name impact: MEDIUM-HIGH impactDescription: prevents state conflicts from duplicate subscriptions tags: array, useFieldArray, instance, state-management --- ## Use Single useFieldArray Instance Per Field Name Each field name should have only one useFieldArray instance. Multiple instances managing the same field name cause state conflicts and unpredictable behavior. **Incorrect (multiple instances for same field):** ```typescript function OrderForm() { const { control } = useForm() return (
) } function ItemsList({ control }: { control: Control }) { const { fields, append } = useFieldArray({ control, name: 'items' }) // Instance 1 return
{/* render items */}
} function ItemsSummary({ control }: { control: Control }) { const { fields } = useFieldArray({ control, name: 'items' }) // Instance 2 - conflicts! return
Total items: {fields.length}
} ``` **Correct (single instance, pass fields down or use useWatch):** ```typescript function OrderForm() { const { control } = useForm() const { fields, append, remove } = useFieldArray({ control, name: 'items' }) return (
{/* Uses useWatch, not useFieldArray */}
) } function ItemsSummary({ control }: { control: Control }) { const items = useWatch({ control, name: 'items' }) // Read-only subscription return
Total items: {items?.length ?? 0}
} ``` Reference: [useFieldArray](https://react-hook-form.com/docs/usefieldarray)