← Tutti i controlli
AEOGravità tipica: Medio

Contenuto accessibile senza JavaScript

Rileva se il tuo sito è una SPA quasi vuota senza JS, che i crawler IA non riescono a indicizzare né a citare.

Cosa controlla

Questo scanner rileva se il tuo sito è un'applicazione a pagina singola (SPA) che arriva quasi vuota quando viene caricata senza eseguire JavaScript. Controlla quanto contenuto reale è disponibile prima che il browser elabori il codice.

Perché è importante

Molti crawler IA e motori di ricerca non eseguono JavaScript, quindi se il tuo contenuto appare solo dopo averlo caricato con JS, per loro la tua pagina è vuota e non possono indicizzarla né citarla. È molto comune sui siti costruiti con framework moderni da vibe coder senza che se ne accorgano.

Come risolverlo

Usa il rendering lato server (SSR) o la generazione statica (SSG) così l'HTML arriva già con il testo e i link principali. La maggior parte dei framework moderni offre questa opzione; attivarla garantisce che sia Google sia l'IA vedano il tuo contenuto reale.

Come funziona questo controllo

Scanaris scarica l'HTML della tua pagina così come lo serve il server, senza eseguire JavaScript, gli toglie script, stili, tag noscript, template e SVG, e misura quanto testo visibile resta nel body. Apre un rilievo, di gravità media, solo se si verificano due condizioni insieme: quel testo ha meno di 250 caratteri e l'HTML contiene un contenitore vuoto di single-page app, cioè un <div> con id root, app, __next, __nuxt o q-app senza nulla dentro. Un sito con rendering lato server o generazione statica ha testo nell'HTML iniziale e non viene mai segnalato; un sito con poco contenuto ma senza contenitore SPA nemmeno. La soglia è deliberatamente bassa per non dare falsi positivi.

Perché è importante

Googlebot esegue JavaScript, ma in un secondo passaggio che può richiedere giorni e con un budget limitato. I crawler degli assistenti IA (GPTBot, ClaudeBot, PerplexityBot) in genere non lo eseguono affatto: leggono l'HTML che ricevono e basta. Se il tuo HTML è un <div id="root"></div> e uno script, per loro il tuo sito è vuoto. Non possono indicizzare ciò che non vedono né citare ciò che non leggono, quindi quando qualcuno chiede a ChatGPT della tua categoria di prodotto, tu non esisti. È il problema più comune dei siti fatti con strumenti di IA che generano un'applicazione React o Vue puramente client, e il più invisibile, perché nel browser tutto appare perfetto.

Come risolvere

  • Attiva il rendering lato server. In Nuxt è attivo di default (ssr: true); se l'hai disattivato, riattivalo. In Next.js, l'App Router renderizza sul server a meno che tu non marchi il componente con 'use client' in cima. In Vite con React o Vue puri non c'è SSR: passa a Next.js, Remix, Nuxt o Astro, oppure genera le pagine pubbliche come HTML statico.
  • Se migrare non è un'opzione, prerenderizza: genera l'HTML delle rotte pubbliche al momento del build (Nuxt nitro.prerender, export statico di Next.js, Astro di default) o usa un servizio di prerendering che serva HTML renderizzato ai bot.
  • Come minimo, metti il contenuto essenziale nell'HTML: il titolo, la descrizione di cosa fai e i link principali, anche se l'applicazione li sostituisce al caricamento. È ciò che vedranno i bot.
  • Controlla le pagine che contano, non solo la home: il blog e le pagine prodotto sono quelle che gli assistenti citano.

Verifica che sia risolto

curl -s https://tuodominio.it | sed -e 's/<script[^>]*>.*<\/script>//g' -e 's/<[^>]*>/ /g' | tr -s ' \n' ' ' | wc -c

Se il risultato si ferma a qualche decina di caratteri, il contenuto lo disegna JavaScript. Dovrebbe contarne migliaia. Un altro modo: nel browser, disattiva JavaScript negli strumenti per sviluppatori e ricarica; ciò che vedi è ciò che vedono i bot.

Domande frequenti

Google mi indicizza bene. Perché dovrebbe importarmi?

Perché sempre più persone chiedono a un assistente invece di cercare, e quegli assistenti non eseguono il tuo JavaScript. E perché anche su Google, il rendering differito ritarda di giorni l'indicizzazione delle tue modifiche. I numeri e i motivi sono in perché le app fatte con l'IA sono invisibili all'IA.

La mia app è un pannello privato dietro login. Mi riguarda?

No: ciò che sta dietro autenticazione non deve essere indicizzato. Questo controllo conta per le pagine pubbliche, quelle che vuoi far apparire. Se il tuo sito è solo il pannello più una landing, fa' che la landing sia HTML.

Ho SSR e comunque esce poco testo.

Allora l'HTML porta struttura ma poco contenuto reale, e conviene verificare che la landing racconti qualcosa. Le intestazioni che organizzano quel contenuto le guarda intestazioni.

Verificalo sul tuo sito

Scansiona il tuo sito gratis e scopri se questo e altri 44 controlli passano, con un prompt di fix per ogni problema.

Scansiona il mio sito gratis

Dal blog

Controlli correlati