React 19 è andato stable il 5 dicembre 2024. A inizio 2025, dopo averlo provato in produzione su due app, possiamo dire cosa abbiamo davvero usato.
1. useActionState
L'ex useFormState è la singola feature che ha cambiato il nostro modo di scrivere form. Niente più reducer manuali, niente più useState annidati per loading/error. Il form ha pending, error, e valore di ritorno gratis. Per un'app con 40 form, l'effetto cumulativo è enorme.
2. Form actions native
Il tag <form action={fn}> ora accetta direttamente una funzione (Server Action o normale function client). Combinato con Next.js è una sintesi pulita di tutto quello che prima era spaghetti.
3. useOptimistic
Per le mutation che toccano liste visibili (toggle preferiti, aggiungi commento, sposta to-do) useOptimistic ha sostituito 30 righe di codice manuale per ognuna. La UI sembra più veloce, e il rollback in caso di errore è gestito.
Cosa abbiamo lasciato
- use() hook: utile in casi specifici (Suspense + dati passati come Promise), ma ancora non parte del nostro flusso quotidiano.
- Document metadata in JSX: meno utile in app Next.js perché abbiamo già
generateMetadata. - Asset preloading API: sperimentato, ma per ora preferiamo
<link>espliciti.
Migration
Da 18 a 19 zero rotture significative sui nostri progetti, salvo un paio di ref-typing da aggiornare. Il React Compiler in beta — opt-in via plugin Babel — ha eliminato 80% dei nostri useMemo/useCallback manuali. Lo abbiamo attivato sui progetti nuovi, lasciato spento sui vecchi.