Server Functions ('use server')

React 🟡 Mid

Définition

Fonctions asynchrones marquées 'use server' qui s'exécutent sur le serveur et dont le client reçoit une référence sérialisée. Nom officiel depuis septembre 2024 ; « Server Action » désigne le cas où la fonction est passée à une prop action. Appelables via <form action>, useActionState ou startTransition. Stables dans React 19 (5 décembre 2024) ; les arguments et retours doivent être sérialisables.

Analogie

Un bouton d'appel d'ascenseur : vous appuyez côté client, la machinerie côté serveur fait le travail, vous n'avez que le bouton.

Exemple de code

// actions.js
'use server';
export async function createNote(title) {
  await requireUser();               // autorisation obligatoire
  return db.notes.create({ title }); // retour sérialisable
}

// NoteForm.jsx
'use client';
import { createNote } from './actions';
function NoteForm() {
  const [isPending, startTransition] = useTransition();
  const save = () => startTransition(async () => { await createNote('Idée'); });
  return <button onClick={save} disabled={isPending}>Créer</button>;
}

Cas d'usage

Mutations sans route API manuelle : formulaires, boutons d'action, appels RPC typés entre client et serveur.

Anti-pattern

Traiter une Server Function comme privée : c'est un endpoint HTTP exposé, à protéger comme une route API (validation, auth, dépendances à jour après la CVE-2025-55182).
#rsc#react19#interview

En entretien

  1. Explique-moi ce qu'est une Server Function.

    Ce sont des fonctions asynchrones marquées 'use server' qui s'exécutent côté serveur, dont le client ne reçoit qu'une référence sérialisée, comme un bouton d'appel d'ascenseur où on appuie côté client pendant que la machinerie tourne côté serveur. Elles sont stables depuis React 19 (5 décembre 2024) et appelables via un form action, useActionState ou startTransition.

  2. Quel est le piège de sécurité classique avec les Server Functions ?

    Les traiter comme privées alors que ce sont des endpoints HTTP exposés, à protéger comme une vraie route API avec validation et auth, surtout avec des dépendances à jour après la CVE-2025-55182. Il faut aussi s'assurer que les arguments et retours restent sérialisables.

Fiche mise à jour le 2026-09-27

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