Il rendering lato client (client-side rendering) è un modo di costruire un sito web in cui la pagina che arriva è quasi vuota, e le parole compaiono solo dopo che del codice è stato eseguito nel browser del visitatore. Il client è il browser; il rendering, cioè l'assemblaggio della pagina vera e propria, avviene lì anziché sul server prima dell'invio. Molti moderni strumenti per creare siti e framework per applicazioni funzionano così in modo predefinito, e per un visitatore umano il risultato è spesso eccellente.

Il problema è che non tutti i visitatori eseguono il codice. Un browser lo fa senza protestare. Le macchine che leggono il web su scala enorme spesso no: eseguire codice per ogni pagina costa molto più che limitarsi a richiederla, perciò molti crawler prendono ciò che arriva nella prima risposta e passano oltre. Quando quella prima risposta è un guscio vuoto, è il guscio vuoto che registrano.

È il difetto più difficile da notare su qualsiasi sito web, perché ogni modo ordinario di controllare lo nasconde. Il sito appare corretto in un normale browser. I visitatori dicono che appare corretto. E appare davvero corretto. Il guasto esiste solo in una vista che a nessuno viene in mente di aprire, ed è per questo che può restare nascosto per l'intera vita di un sito.

La soluzione, in genere, non è ricostruire tutto. La maggior parte dei framework che eseguono il rendering lato client può farlo anche sul server, o generare le pagine in anticipo, e attivare questa possibilità è di solito un'impostazione più che un progetto. È uno dei pochi problemi in questo ambito che richiede davvero, di norma, uno sviluppatore: un'ora del suo tempo, con istruzioni precise su che cosa cambiare.

La traduzione umana è un negozio la cui vetrina viene allestita solo quando qualcuno entra. I clienti la vedono e non ci fanno caso. Il rilevatore che passa in auto per annotare che cosa c'è sulla via vede una vetrina vuota, scrive «vuota» e non torna più.