reactjsday 2025 in pillole #5 — React Compiler: quando la magia fallisce

Il React Compiler è stabile e memoizza per te, ma non è magia nera: le regole che il tuo codice deve rispettare e gli strumenti per l'adozione incrementale

Quinta pillola dal reactjsday 2025, e questa è la mia preferita: il React Compiler, rilasciato stabile il 7 ottobre 2025. Confesso: all’inizio sembrava magia anche a me. Poi, da buon pragmatico, ho capito che è qualcosa di meglio della magia: un nuovo modo di scrivere applicazioni React, con regole precise.

La pillola

Cos’è davvero il compiler: un transpiler che applica la memoizzazione automatica dei componenti — in pratica aggiunge per te useMemo, useCallback e React.memo dove servono. Il punto è che può farlo solo se il tuo codice rispetta le Rules of React. Altrimenti fa la cosa giusta: rinuncia (bail out) e lascia il componente non ottimizzato.

Nelle mie slide (scritte in React, con la direttiva 'use memo' per testare il compiler in modalità annotation) ho raccolto una galleria di componenti che lo fanno fallire:

function ItemList({ items, newItem, onAddItem }) {
  'use memo'
  const isLarge = items.length > 5
  if (isLarge) {
    // 🚩 mutazione diretta di un oggetto arrivato dalle props:
    // il compiler la vede e rinuncia a memoizzare l'intero componente
    newItem.name = 'Overbooking'
  }
  return /* ... */
}

Le violazioni tipiche da cercare nel proprio codice:

Il tooling per non andare alla cieca:

Il takeaway

Il React Compiler ottimizza i re-render, ma non è magia nera: non può impedire che nuove reference di oggetti e funzioni causino re-render dei figli, e davanti a codice che viola le regole si tira indietro in silenzio. Il compiler non vi regala performance: vi ripaga per il codice scritto bene.


Ultima pillola in arrivo: useTransition e i form che non si congelano.

#pillole#reactjsday#react#react-compiler#performance

‹ Tutti gli articoli