React
📝

React 19 Server Actions: modèles useActionState et useFormStatus (2026)

Guide pratique sur React 19 Server Actions: modèles useActionState et useFormStatus (2026), avec une liste claire, les risques courants et les prochaines etapes avant d'agir.

React 19 Server Actions: modèles useActionState et useFormStatus (2026)

Optimisation de React 19 Server Actions : modèles useActionState et useFormStatus pour 2026

Réponse directe

Réponse directe

Associer useActionState et useFormStatus rend les formulaires plus prévisibles : le serveur gère létat métier, le client affiche clairement létat de soumission.

Avec React 19, Server Actions structure mieux le chemin submit -> validation -> persistance -> retour détat. En production, cela réduit les divergences entre la logique métier et lUI.

1. Modèle de base

1. Modèle de base

useActionState renvoie state, formAction, pending.

const [state, formAction, pending] = useActionState(saveProfile, { ok: false, message: '', fieldErrors: {}, globalErrors: [], })

  • state: résultat normalisé du serveur
  • formAction: action liée au formulaire
  • pending: indicateur d`envoi en cours

2. Forme de retour unique

2. Forme de retour unique

type ActionState = { ok: boolean message: string fieldErrors: Record globalErrors: string[] }

Ce schéma évite la multiplication de branches localState et facilite les tests E2E.

3. Rôle de useFormStatus

3. Rôle de useFormStatus

useFormStatus doit vivre dans le contexte du form.

'use client' import { useFormStatus } from 'react-dom'

function SubmitButton() { const { pending } = useFormStatus() return }

4. Anti double soumission

4. Anti double soumission
  1. 1Bouton désactivé pendant pending
  2. 2token idempotence transmis via FormData
  3. 3rejet côté serveur si token déjà utilisé
  4. 4message explicite de doublon

5. Insight opérationnel

5. Insight opérationnel

Le vrai bénéfice ne vient pas du hook lui-même, mais du contrat de données. Quand léquipe fixe ActionState`, la maintenance locale diminue. Les traductions, templates et thèmes changent sans casser la logique.

6. Plan de migration

  • Démarrer par les formulaires low risk
  • Valider schema partagé
  • Déployer submit button status
  • Mesurer duplication et taux de premier succès

FAQ

Q1. Peut-on conserver des API routes legacy ? A1. Oui, la migration hybride est une approche sûre.

Q2. Pourquoi pending ne change pas ? A2. Vérifier que formAction est bien passé au bon

.

Q3. Quelle longueur de test est recommandée ? A3. Tester états ok, fieldErrors, globalErrors et idempotency.

Q4. Le SEO est impacté ? A4. Pas si métadonnées et maillage sont corrects.

Q5. Quels KPI suivre ? A5. Taux de soumission dupliquée, P95 latency, première réussite.

Q6. useFormStatus peut-il être omis ? A6. Oui pour cas simples, mais recommandé pour les actions critiques.

Q7. Comment éviter la régression i18n ? A7. Garder la même clé et ne traduire que les libellés.

Liens internes

Références externes

  • https://react.dev/reference/react-dom/hooks/useActionState
  • https://react.dev/reference/react-dom/hooks/useFormStatus

🔧 Outils gratuits liés

Prochaine étape utile

Continuer depuis ce guide