React 19: Actions and Modern Forms
Everything new in React 19: async Actions, form actions, useActionState, useFormStatus, useOptimistic, document metadata, resource loading and the removals.
React 19 changed how React apps send data. Before it, every form needed the same hand-written code: preventDefault, an isSending flag, a try/catch, an error message, a reset. React 19 turns that pattern into a feature called Actions: async functions that React runs inside a transition, with the pending state, errors, ordering and form reset handled for you.
This phase starts with a full map of what changed in React 19 (including what was removed, so old code and tutorials make sense), then builds up the Actions family one piece at a time: async transitions, <form action>, useActionState, useFormStatus and useOptimistic. It ends with the smaller features that make everyday code shorter: <title> and <meta> inside components, stylesheet and script loading, ref as a prop, <Context> as a provider and the new error reporting options.
Every example runs live in React 19.2. The actions here are client functions that call a fake server with setTimeout. In Phase 20 the same hooks work with Server Functions ("use server"), where the action really runs on the server.
Practise this phase
Hands-on exercises: write the code, see your page live, and press Check to have it tested automatically.