
Qualcuno segnala che una pagina è rotta. Gli chiedi di aprirla in una finestra di navigazione in incognito. Lì funziona. La conversazione di solito finisce qui, con il consiglio di svuotare la cache, ed è esattamente il momento in cui l’informazione viene buttata via.
L’incognito non è un browser pulito. È il tuo browser con un elenco preciso e piuttosto breve di cose disattivate, e quell’elenco è tutto il valore del test. Conoscerlo trasforma una frase di chi segnala in una bisezione che chiudi in pochi minuti.
Che cosa cambia davvero una finestra in incognito
Cinque differenze, e la maggior parte delle persone ne sa nominare solo due.
Le estensioni non vengono eseguite. Questa è quella grossa e quella che tutti dimenticano. La documentazione delle estensioni di Chrome descrive la relativa chiave del manifest come il modo in cui un’estensione si comporta “if allowed to run in incognito mode”: il permesso è disattivato finché qualcuno non lo attiva, estensione per estensione, in Dettagli e poi “Consenti in incognito”. Quindi una finestra in incognito è quasi sempre anche una finestra senza estensioni, ed è questa sovrapposizione a rendere ambiguo il test.
Nessun cookie dalla tua sessione normale. La finestra parte senza e butta via quello che raccoglie. Nelle parole di Chrome, “temporarily keeps some information, like cookies and site data, to help websites work and support navigation”, e “this information is removed when the Incognito session ends”.
I cookie di terze parti sono bloccati. Separatamente dal punto precedente e per impostazione predefinita: “In Incognito mode, third-party cookies are blocked by default.” Questo cambia il risultato nella direzione opposta rispetto agli altri, ed è la parte su cui vale la pena fermarsi più sotto.
Nessuna cache né dati del sito salvati da riutilizzare. Niente di quello che il tuo profilo normale ha scaricato la settimana scorsa è lì pronto per essere servito di nuovo, compreso ciò che il browser aveva deciso di poter conservare.
I service worker che hai registrato non ci sono. Un service worker appartiene allo storage di un profilo. La sessione in incognito ha il suo, che è vuoto, quindi ciò che intercetta le richieste nella finestra normale semplicemente non esiste.
In che direzione fallisce il test è ciò che conta
Lo stesso esperimento ha due esiti e significano cose diverse. Quasi tutti ragionano solo sul primo.
- Funziona in incognito, rotto nella finestra normale
- C'è di mezzo qualcosa nel suo profilo: un'estensione, una risorsa vecchia in cache, un service worker che serve il codice della settimana scorsa, o un cookie che contiene uno stato che la tua applicazione legge.
- Rotto in incognito, funziona nella finestra normale
- Manca qualcosa da cui la tua pagina dipende: un cookie di terze parti, una sessione autenticata, o dati che davi per scontati nello storage perché sulla tua macchina ci sono sempre stati.
Il secondo caso è quello che viene liquidato con “l’incognito è strano”. Non è strano. È l’unico modo economico, per la maggior parte delle persone, di riprodurre ciò che vive chi arriva sul sito per la prima volta, e se la tua pagina si rompe per quella persona si sta rompendo per chiunque non sia mai stato lì.
Separare i cinque sospetti senza tirare a indovinare
La debolezza del test in incognito è che cambia cinque cose insieme, quindi un esito positivo ti dice che una delle cinque è responsabile ma non quale. Questi passi le separano, dal più economico in poi.
- Un profilo del browser nuovo con le estensioni attive. Questo è il test che l’incognito avrebbe dovuto essere: cookie nuovi, cache nuova, storage nuovo, ma con le tue estensioni ancora in funzione. Se il problema si ripresenta qui non è un’estensione, e hai escluso la causa più comune in una trentina di secondi.
- Un ricaricamento forzato con il pannello di rete aperto e “Disable cache” spuntato. Separa le risorse vecchie da tutto il resto. Se questo lo risolve hai un problema di cache, e il browser di quella persona si sta comportando esattamente come gli è stato detto.
- Cancellare i dati del sito per quella origine. Nel pannello Application questo rimuove cookie, storage locale e la registrazione del service worker in un’unica azione. Se il problema sparisce la causa era lo stato e non il codice, e la domanda successiva è quale pezzo di stato.
- Annullare la registrazione del service worker da solo. Vale la pena farlo separatamente dal punto precedente, perché se la soluzione è questa quella persona stava eseguendo codice che hai smesso di pubblicare, e nessun deploy la raggiungerà finché il worker non si aggiorna.
Eseguiti in quest’ordine danno una causa invece di una correlazione. L’incognito da solo dà una frase davanti alla quale annuiscono tutti.
Che cosa non significa “funziona in incognito”
Non significa che il problema sia sulla sua macchina, e non significa che non sia un tuo bug.
Un service worker che serve un bundle vecchio è il tuo deployment. Un cookie che la tua applicazione ha scritto e poi non è riuscita a leggere è il tuo codice. Un’estensione che rompe la tua pagina è quantomeno un tuo problema di compatibilità, se molti dei tuoi utenti ce l’hanno. L’unica lettura davvero rischiosa è quella che si fa più spesso: che la pagina stia bene e che il computer di quella persona no.
Non vale nemmeno nella direzione opposta. Chi prova solo in incognito sta provando per sempre il percorso della prima visita e non vedrà mai il bug che ha bisogno di un cookie vecchio di una settimana per comparire.
Come chiederlo nel modo giusto
Per chi segnala, questa è una delle poche diagnosi che non costa nulla e non richiede vocabolario: apri una finestra privata, vai sulla stessa pagina e dimmi se fa la stessa cosa. È la domanda migliore dell’elenco, ed è abbastanza economica da farla per prima.
Quello che non può darti è il perché. L’errore in console, la richiesta fallita e la versione dello script che stava davvero girando restano le cose che decidono, e nessuna di queste sopravvive alla chiusura della finestra.
Session Replay
Estensione Chrome gratuita. Un clic sulla pagina che si comporta male cattura lo screenshot, la console e il log di rete, e ti consegna un link da incollare nel ticket.
Un’avvertenza sull’uso di qualsiasi estensione per questo, compresa la nostra: una finestra in incognito non la eseguirà se non è stata autorizzata lì, che è la stessa regola che rende utile il test in partenza.
In breve
- L’incognito disattiva cinque cose insieme: estensioni, cookie esistenti, cookie di terze parti, cache e service worker.
- La direzione in cui fallisce il test ti dice quale metà di quell’elenco guardare.
- Un profilo nuovo con le estensioni attive è il passo successivo che separa la causa più comune dalle altre.
- “Funziona in incognito” è l’inizio della diagnosi. Trattarlo come la fine è il modo in cui un service worker vecchio sopravvive a tre deploy.