Server Actions

React 🟡 Mid

Définition

Fonctions asynchrones exécutées sur le serveur et appelables depuis un composant client, typiquement via la prop action d'un <form>. Depuis septembre 2024, React les appelle « Server Functions » ; « Server Action » désigne le cas particulier d'une Server Function passée à une prop action. Stables dans React 19 (5 décembre 2024).

Analogie

Comme commander par téléphone : tu passes l'ordre (client) et la cuisine (serveur) exécuté, sans aller au comptoir (API route).

Exemple de code

// actions.ts
'use server';
import { updateTag } from 'next/cache';
export async function addTodo(formData: FormData) {
  const session = await getSession();          // autorisation ICI
  if (!session) throw new Error('Non autorisé');
  await db.todos.create({ text: String(formData.get('text')) });
  updateTag('todos');                          // read-your-writes
}
// component.tsx
<form action={addTodo}><input name="text" /><button>Ajouter</button></form>

Cas d'usage

Soumission de formulaire, CRUD, toute mutation serveur, avec revalidation du cache (Next.js 16 : updateTag pour relire immédiatement ses propres écritures, refresh pour les données non mises en cache).

Anti-pattern

Oublier que chaque Server Function est un point d'entrée HTTP public : valider les entrées et vérifier l'autorisation dans la fonction elle-même. Le 3 décembre 2025, la CVE-2025-55182 (RCE, CVSS 10.0) touchait la désérialisation de ces requêtes dans react-server-dom-* 19.0 à 19.2.0 ; correctifs 19.0.1, 19.1.2, 19.2.1.
#rendering#react19#nextjs#security

Fiche mise à jour le 2026-09-27

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