React 19: What's Actually New and Why It Matters
·Alex Rivera
ReactJavaScriptFrontend
React 19 is out, and while the hype was mostly around Server Components (which were already available), there are some genuinely useful additions that change how you write code day-to-day.
The Actions API
The new <form action={...}> pattern lets you handle form submissions with async functions directly — no more manual useState for loading/error states.
async function updateProfile(formData: FormData) {
'use server'
await db.users.update({ name: formData.get('name') })
}
export function ProfileForm() {
return (
<form action={updateProfile}>
<input name="name" />
<button type="submit">Save</button>
</form>
)
}
The use() Hook
use() lets you read a Promise or Context inside render — including conditionally inside loops. It works seamlessly with Suspense.
function UserCard({ userPromise }: { userPromise: Promise<User> }) {
const user = use(userPromise) // Suspends until resolved
return <div>{user.name}</div>
}
Improved Hydration Errors
Hydration mismatch errors now show a diff of what the server rendered vs. what the client expected. This alone saves significant debugging time.
Overall, React 19 is a solid release. The Actions API in particular simplifies a lot of common patterns.