hardFrontend

What does the `useActionState` hook do in React 19?

946 views
01

Understand the problem

Managing form-action state, result, and pending status in one hook.

reactreact-19hooksforms
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Explore the playground snippets

Form with useActionState (pending + result)
Run Playground
import { useActionState } from 'react';

// Pretend this calls your backend.
function fakeUpdate(name) {
  return new Promise((resolve) =>
    setTimeout(() => resolve(name.trim() ? 'Saved: ' + name : 'Name is required'), 800),
  );
}

export default function App() {
  const [message, submitAction, isPending] = useActionState(
    async (prev, formData) => await fakeUpdate(formData.get('name')),
    'No changes yet',
  );
  return (
    <div style={{ fontFamily: 'sans-serif', padding: 24 }}>
      <form action={submitAction}>
        <input name="name" placeholder="Your name" />
        <button disabled={isPending}>{isPending ? 'Saving…' : 'Save'}</button>
      </form>
      <p>{message}</p>
    </div>
  );
}
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.