Il problema dell’idratazione completa
Misuri il costo dell’idratazione di un’intera SPA React e comprenda perché le pagine statiche non ne hanno bisogno.
Il problema dell’idratazione completa è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Che cos'è l'hydration
L'hydration è il processo con cui React prende l'HTML renderizzato dal server e vi associa i listener degli eventi JavaScript. Il server invia l'HTML iniziale, rapidamente; poi il browser scarica il bundle JavaScript e React esegue l'"hydration" dell'HTML statico per renderlo interattivo. Fino al completamento dell'hydration, la pagina sembra interattiva, ma non lo è.
Il costo dell'hydration nelle SPA tradizionali
Una single-page application tradizionale invia al browser l'intero bundle JavaScript. React deve scaricarlo, analizzarlo, eseguirlo e poi associare i listener degli eventi a ogni componente dell'albero. Nelle applicazioni di grandi dimensioni, questo processo può richiedere diversi secondi sui dispositivi mobili di fascia media.
Time To Interactive (TTI)
Il Time To Interactive misura quanto tempo deve trascorrere prima che l'utente possa interagire con la pagina. L'hydration blocca direttamente il TTI: la pagina può sembrare pronta, perché l'HTML renderizzato dal server è visibile, ma pulsanti e form non rispondono finché React non ha terminato di associare i listener degli eventi. Un valore TTI elevato indica un'esperienza utente scadente.
Il paradosso dei contenuti statici
Si consideri una pagina di marketing: l'80% dei contenuti è costituito da testo, immagini e intestazioni statici che non cambiano mai. Solo il 20% comprende widget interattivi, come un form per la newsletter o un lettore video. L'hydration di una SPA tradizionale viene comunque eseguita sul 100% della pagina, elaborando inutilmente i componenti statici.
Misurare il costo dell'hydration
La profilazione delle prestazioni in Chrome DevTools rivela il costo dell'hydration. Nel grafico a cascata del thread principale è possibile individuare l'attività "React hydration" come un lungo blocco di esecuzione JavaScript successivo al primo rendering. Più è lungo questo blocco, più a lungo il thread principale è occupato e meno reattiva risulta la pagina.
Le dimensioni dell'albero dei componenti sono importanti
Più è grande l'albero dei componenti React, maggiore è il lavoro richiesto dall'hydration. React deve visitare ogni componente, confrontare l'HTML renderizzato dal server con quello che il componente produrrebbe e associare i listener degli eventi. Una pagina complessa con centinaia di componenti può avere un sovraccarico di hydration misurabile anche sui dispositivi più veloci.
Hydration concorrente in React 18
React 18 ha introdotto l'hydration concorrente, che consente a React di suddividere l'hydration in blocchi più piccoli e di cedere il controllo al browser tra un blocco e l'altro. In questo modo si evita che il browser sembri completamente bloccato durante l'hydration di alberi di grandi dimensioni. Tuttavia, l'hydration concorrente riduce l'impatto, ma non elimina il costo fondamentale.
Hydration selettiva in React 18
L'hydration selettiva, tramite Suspense, consente a React di eseguire l'hydration dei componenti in ordine di priorità: le interazioni dell'utente attivano immediatamente l'hydration del componente interessato. Questo migliora la reattività, ma opera comunque all'interno di un unico albero React: alla fine tutti i componenti dell'albero vengono sottoposti a hydration.
L'intuizione fondamentale
L'intuizione fondamentale alla base di Islands Architecture è che gran parte di una pagina tipica non ha affatto bisogno di JavaScript. Barre di navigazione, sezioni hero, collegamenti nel footer, testo degli articoli di blog e descrizioni dei prodotti sono esclusivamente presentazionali. Imporre l'hydration anche a questi elementi è, per definizione, uno spreco.
L'impatto nel mondo reale
Gli studi condotti dai team che si occupano delle prestazioni web mostrano che il tempo di analisi ed esecuzione di JavaScript è il costo principale sui dispositivi mobili. Un bundle JavaScript da 300 kB richiede da 2 a 3 secondi per essere analizzato su un telefono Android mediano. Ridurre la quantità di JavaScript inviata al browser porta vantaggi prestazionali molto superiori rispetto a qualsiasi ottimizzazione interna di React.
La tassa dell'hydration
Ogni kilobyte di JavaScript aggiunto a un'applicazione React comporta ulteriore lavoro di hydration. Anche se un componente è puramente decorativo, se fa parte dell'albero React partecipa all'hydration. Questa "tassa dell'hydration" cresce con le dimensioni dell'applicazione e rende progressivamente più difficile mantenere buoni valori TTI man mano che le applicazioni aumentano di dimensioni.
TTI e hydration
Qual è il rapporto tra l'hydration di React e il Time To Interactive (TTI)?
Riepilogo della lezione
L'hydration tradizionale di React elabora l'intero albero dei componenti, compresi i contenuti statici che non hanno bisogno di JavaScript. Questo blocca il Time To Interactive e presenta una scalabilità scarsa all'aumentare delle dimensioni dell'applicazione. I miglioramenti all'hydration concorrente e selettiva introdotti in React 18 ne riducono l'impatto, ma non eliminano il costo fondamentale. L'intuizione principale è che gran parte dei contenuti della pagina non ha semplicemente bisogno di JavaScript, rendendo l'hydration completa uno spreco.
Domande Frequenti
La lezione «Il problema dell’idratazione completa» è gratuita?
Sì — il testo completo di «Il problema dell’idratazione completa» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Il problema dell’idratazione completa»?
Misuri il costo dell’idratazione di un’intera SPA React e comprenda perché le pagine statiche non ne hanno bisogno. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Il problema dell’idratazione completa»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il problema dell’idratazione completa
- Architettura a isole: idratazione selettiva
- Configurazione delle isole Astro e React
- Misurare le prestazioni: Lighthouse e Core Web Vitals