useActionState

React 🟡 Mid

Définition

Hook stable de React 19 (5 décembre 2024) qui remplace l'ancien useFormState. Il enveloppe une Action et retourne [state, dispatch, isPending] : l'Action reçoit l'état précédent et le payload (souvent un FormData), et son retour devient le nouvel état. Un troisième argument permalink permet la soumission avant hydratation (progressive enhancement).

Analogie

Un formulaire papier qu'on renvoie avec, agrafé dessus, le dernier accusé de réception : on sait toujours où l'on en est.

Exemple de code

'use client';
import { useActionState } from 'react';
import { updateName } from './actions'; // Server Function

function Form() {
  const [state, submitAction, isPending] = useActionState(
    async (prev, formData) => ({ error: await updateName(formData.get('name')) ?? null }),
    { error: null }
  );
  return <form action={submitAction}>
    <input name="name" />
    <button disabled={isPending}>Valider</button>
    {state.error && <p>{state.error}</p>}
  </form>;
}

Cas d'usage

Formulaire avec erreurs de validation renvoyées par le serveur et bouton désactivé pendant l'envoi, sans état local manuel.

Anti-pattern

Appeler dispatch hors d'une transition ou d'une prop action (React l'exige), ou passer un état initial non sérialisable avec une Server Function.
#hooks#react19#forms#interview

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre