useFormStatusis a React hook that lets you read the submission state of a form.
It works by:
<form> as a context providerThink of it as:
“Let every part of the form know when submission is happening — automatically.”
Without useFormStatus, you often write:
const [isSubmitting, setIsSubmitting] = useState(false)
And manually manage:
With useFormStatus, React handles this for you — declaratively.
import { useFormStatus } from 'react-dom'function SubmitButton() {const { pending } = useFormStatus()return (<button type="submit" disabled={pending}>{pending ? 'Submitting...' : 'Submit'}</button>)}
✔ No prop drilling.
✔ Always in sync with form state.
✔ Prevents duplicate submissions
useFormStatus reads the status of the nearest parent <form>.
That means:
function LoginForm() {return (<form action={login}><input name="email" /><input name="password" type="password" /><SubmitButton /></form>)}function SubmitButton() {const { pending } = useFormStatus()return (<button type="submit" disabled={pending}>{pending ? 'Logging in...' : 'Login'}</button>)}
✔ Clear feedback.
✔ Prevents double-clicks.
✔ Improves accessibility.
useFormStatus doesn’t just simplify forms —
it standardizes form UX across your application.
Use it to build forms that feel: