← Tutti gli articoli

Next.js 16 e React 19 dopo sei mesi: cosa abbiamo davvero usato

11 May 20262 min di lettura

Server Actions sempre più centrali, partial prerendering finalmente stabile, e una macchina di build che fa meno rumore. Il bilancio a maggio 2026.

Next.js 16 e React 19 sono ormai standard nei nostri progetti dal Q4 2025. Sei mesi di produzione bastano per dire cosa è stato un guadagno reale e cosa è rimasto teoria.

Server Actions: il vero protagonista

Le Server Actions hanno cambiato il modo in cui scriviamo mutation. Nei progetti nuovi non abbiamo più route API per CRUD interno: tutto passa da "use server". Il risultato: meno boilerplate, type-safety end-to-end senza tRPC, error handling chiaro.

L'overhead mentale è zero per chi viene da React, ma serve disciplina: ogni action deve validare con Zod, controllare la sessione, restituire { ok, error }. Senza questo pattern, le Server Actions diventano un buco di sicurezza enorme.

Partial Prerendering: finalmente production-ready

PPR era flag sperimentale fino all'inizio del 2026. Adesso è stabile e cambia il modo di pensare le pagine ibride: shell statica + slot dinamici. Per landing con un widget personalizzato (utente loggato, prezzi locali), prima dovevi scegliere tra SSG o SSR. Adesso prendi entrambi.

Cosa NON funziona ancora bene: PPR + middleware con auth check. Se la pagina dipende interamente dalla sessione, il prerender perde senso.

React 19: useOptimistic e use() in produzione

L'API use() è la novità più sottovalutata. Permette di sospendere un component su una promise senza wrapper artificiali. Per data fetching condizionale dentro un Suspense boundary, è il pattern più pulito che esista.

useOptimistic per UI ottimistica (like, follow, toggle) è elegante quanto promesso. Lo usiamo per like di articoli del blog, votazioni, qualsiasi UI che deve sembrare istantanea.

La nuova cache API

"use cache" e cacheLife sono la risposta di Next.js al casino di fetch caching della 14. Sintassi più chiara: dichiari il TTL a livello di funzione, non di chiamata HTTP. Ma attenzione: cacheLife("hours") e cacheLife({ revalidate: 3600 }) non si comportano sempre uguale. Leggere bene i docs.

Cosa NON useremo

  • Turbopack in produzione: ancora "stable" con asterischi. Per dev sì, per build di prod restiamo su webpack tunato. Nei nostri progetti grossi il guadagno di tempo non vale i bug residui.
  • React Server Components in librerie pubblicate su npm: il pattern è acerbo. Per ora le librerie restano client.

Bilancio

Upgrade obbligatorio per chi parte da Next 14 o sotto. Server Actions + PPR + nuova cache fanno fare un salto di produttività che si misura in ore al giorno. Su React 19 da solo, il guadagno è meno netto: dipende dai pattern del progetto.