Skip to content

React 19: Actions, RSC & Forms

React 19 is less about new syntax and more about deleting patterns you used to write by hand. The recurring theme: things you used to wire up manually — loading flags, try/catch around a submit, useMemo everywhere, forwardRef wrappers — React now does for you.

This module covers the five changes that matter most in day-to-day code.

LessonWhat you’ll learn
Server ComponentsComponents that run on the server, fetch directly, and never ship to the client
Actions & useActionStateAsync form actions with built-in pending/error state
Forms & useOptimisticuseFormStatus and instant optimistic UI
The React CompilerBuild-time auto-memoization that retires manual useMemo/useCallback
flowchart LR
  old["Before: you wrote it
loading flags · try/catch
useMemo everywhere · forwardRef"] --> r19["React 19"]
  r19 --> new["Now React does it
Actions + useActionState
Compiler auto-memo
ref as a prop"]
React 19: less manual wiring

Beyond this module’s four topics, two smaller React 19 wins show up everywhere:

  • ref is now a prop. Function components accept ref directly — forwardRef is no longer needed for new code (covered in the Hooks module).
  • The use() hook reads a promise or context and integrates with Suspense (covered in the Concurrent module). It’s the client half of the Server Components data story.
What is the recurring theme of React 19?
In React 19, how do function components receive a ref?
What does the React Compiler do?