Start here. This is the direct spoken answer to practice first.
Overview
The hook can organize action state, but the server remains authoritative for validation, authorization, and idempotency.
useActionState connects an Action to state derived from its latest result and also exposes whether the Action is pending. I return a small discriminated result such as idle, validation error, success, or failure. The form keeps native labels and submission behavior, disables or guards duplicate intent proportionally, and renders field and form errors where users and assistive technology can find them.