hardFrontend

What is `useFormStatus` in React 19, and why does it exist?

1.1k views
01

Understand the problem

Reading the parent form's submission status from a child without prop drilling.

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

Reusable submit button reading form status
Run Playground
import { useFormStatus } from 'react-dom';

function SubmitButton() {
  const { pending } = useFormStatus();   // status of the nearest parent <form>
  return <button disabled={pending}>{pending ? 'Submitting…' : 'Submit'}</button>;
}

async function submit(formData) {
  await new Promise((r) => setTimeout(r, 1000));
  alert('Submitted: ' + formData.get('email'));
}

export default function App() {
  return (
    <div style={{ fontFamily: 'sans-serif', padding: 24 }}>
      <form action={submit}>
        <input name="email" placeholder="email@example.com" />
        <SubmitButton />
      </form>
      <p style={{ color: '#666' }}>The button disables itself via useFormStatus() — no props passed down.</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.