Forms are central to most applications, and React offers two fundamental approaches to managing their inputs. Controlled components keep each input's value in React state, making React the single source of truth. Uncontrolled components let the DOM hold the value, which you read via a ref when needed. Each has trade-offs in control, performance, and complexity.
For anything beyond a trivial form, React Hook Form has become the standard library. It embraces the uncontrolled approach for performance — inputs are not re-rendered on every keystroke — while providing a clean API for registration, validation, error handling, and submission. It dramatically reduces form boilerplate and integrates with schema validators.
React 19's Actions (from Module 3) also offer a native path for form submission. This lesson covers controlled versus uncontrolled inputs and their trade-offs, how React Hook Form works and why it is efficient, and how validation and these approaches fit together — equipping you to handle everything from a search box to a complex multi-field form.