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

Dans l'actu

  • 14/10 Next.js publie la mise à jour de sécurité hors cycle annoncée le 8 octobre : v16.4.1 (Active LTS) et v15.5.28 (Maintenance LTS) corrigent deux RCE critiques non authentifiées — l'une via les fonctions 'use cache' des Cache Compone… Semaine 42 (1re moitié) · 12 – 14 octobre 2026 →
  • 14/10 React publie les patchs 19.3.1, 19.2.9, 19.1.10 et 19.0.9 pour deux advisories dans les paquets react-server-dom-webpack, -turbopack et -parcel : une RCE critique non authentifiée dans les React Server Components (GHSA-xqc2-xf4c-x3h3) et un déni de service (High) dans les Server Functions. Semaine 42 (1re moitié) · 12 – 14 octobre 2026 →

Fiche mise à jour le 2026-09-27

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