Alex Rivera
Back to blog

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.