Alguém diz que uma página está avariada. Pede-lhe para a abrir numa janela de navegação anónima. Ali funciona. A conversa costuma acabar aqui, com a sugestão de limpar a cache, e é precisamente aí que a informação é deitada fora.

A navegação anónima não é um browser limpo. É o seu browser com uma lista concreta e bastante curta de coisas desligadas, e essa lista é todo o valor do teste. Conhecê-la transforma uma frase de quem reporta numa bisseção que termina em poucos minutos.

O que uma janela de navegação anónima muda de facto

Cinco diferenças, e a maioria das pessoas só sabe nomear duas.

As extensões não correm. Esta é a grande e a que toda a gente esquece. A documentação de extensões do Chrome descreve a chave do manifest correspondente como a forma de uma extensão se comportar “if allowed to run in incognito mode”: a permissão está desligada até alguém a ligar, extensão a extensão, em Detalhes e depois “Permitir em navegação anónima”. Portanto uma janela anónima é quase sempre também uma janela sem extensões, e é essa mistura que torna o teste ambíguo.

Nenhum cookie da sua sessão normal. A janela começa sem nenhum e deita fora o que recolhe. Nas palavras do próprio 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”.

Os cookies de terceiros estão bloqueados. Independentemente do ponto anterior e por omissão: “In Incognito mode, third-party cookies are blocked by default.” Este muda o resultado na direção oposta aos outros, que é a parte que vale a pena considerar mais abaixo.

Nenhuma cache nem dados do site guardados para reutilizar. Nada do que o seu perfil normal descarregou na semana passada está ali à espera de ser servido outra vez, incluindo o que o browser decidiu que podia guardar.

Os service workers que registou não estão lá. Um service worker pertence ao armazenamento de um perfil. A sessão anónima tem o seu, que está vazio, por isso o que intercepta os pedidos na janela normal simplesmente não existe.

A direção em que o teste falha é o que importa

A mesma experiência tem dois resultados e significam coisas diferentes. Quase toda a gente só raciocina sobre o primeiro.

Funciona em navegação anónima, avariado na janela normal
Algo no perfil dessa pessoa está envolvido: uma extensão, um recurso desatualizado em cache, um service worker a servir o código da semana passada, ou um cookie com um estado que a sua aplicação lê.
Avariado em navegação anónima, funciona na janela normal
Falta algo de que a sua página depende: um cookie de terceiros, uma sessão iniciada, ou dados que assumiu estarem no armazenamento porque na sua máquina sempre estiveram.

O segundo caso é o que se despacha com “a navegação anónima é estranha”. Não é estranha. É a única forma barata, para a maioria das pessoas, de reproduzir o que vive quem chega ao site pela primeira vez, e se a sua página falha para essa pessoa está a falhar para toda a gente que nunca lá esteve.

Separar os cinco suspeitos sem adivinhar

A fraqueza do teste anónimo é que muda cinco coisas ao mesmo tempo, por isso um resultado positivo diz-lhe que uma de cinco é responsável e não qual. Estes passos separam-nas, do mais barato para o mais caro.

  • Um perfil de browser novo com as extensões ligadas. Este é o teste que a navegação anónima devia ter sido: cookies novos, cache nova, armazenamento novo, mas com as suas extensões a funcionar. Se o problema volta aqui, não é uma extensão, e eliminou a causa mais comum em cerca de trinta segundos.
  • Um recarregamento forçado com o painel de rede aberto e “Disable cache” marcado. Separa os recursos desatualizados de tudo o resto. Se isto resolve, tem um problema de cache e o browser dessa pessoa está a comportar-se exatamente como lhe foi dito.
  • Limpar os dados do site para essa origem. No painel Application, isto remove cookies, armazenamento local e o registo do service worker numa única ação. Se o problema desaparece, a causa era estado e não código, e a pergunta seguinte é qual parte do estado.
  • Anular o registo do service worker isoladamente. Vale a pena fazê-lo em separado do ponto anterior, porque se a solução for esta a pessoa estava a correr código que deixou de publicar, e nenhum deploy lhe chega enquanto o worker não se atualizar.

Feitos por esta ordem dão-lhe uma causa em vez de uma correlação. A navegação anónima sozinha dá uma frase perante a qual toda a gente acena.

O que “funciona em navegação anónima” não quer dizer

Não quer dizer que o problema esteja na máquina dessa pessoa, e não quer dizer que não seja um bug seu.

Um service worker a servir um bundle antigo é o seu deployment. Um cookie que a sua aplicação escreveu e depois não conseguiu ler é o seu código. Uma extensão que parte a sua página é, no mínimo, o seu problema de compatibilidade se muitos dos seus utilizadores a tiverem. A única leitura verdadeiramente insegura é a que se faz mais vezes: que a página está bem e o computador da pessoa não.

Também não se transpõe na direção contrária. Quem só testa em navegação anónima está a testar para sempre o caminho da primeira visita e nunca verá o bug que precisa de um cookie com uma semana para aparecer.

Como pedir isto como deve ser

Para quem reporta, este é um dos poucos diagnósticos que não custa nada e não exige vocabulário: abra uma janela privada, vá à mesma página e diga-me se faz o mesmo. É a melhor pergunta da lista e é barata o suficiente para ser a primeira.

O que não lhe dá é o porquê. O erro na consola, o pedido falhado e a versão do script que estava mesmo a correr continuam a ser o que decide, e nenhuma dessas coisas sobrevive ao fecho da janela.

Session Replay

Extensão gratuita para Chrome. Um clique na página que se está a portar mal captura a captura de ecrã, a consola e o registo de rede, e dá-lhe um link para colar no ticket.

Instalar a extensão

Uma ressalva sobre usar qualquer extensão para isto, incluindo a nossa: uma janela anónima não a executa a menos que tenha sido permitida ali, que é a mesma regra que torna o teste útil à partida.

Versão curta

  • A navegação anónima desliga cinco coisas ao mesmo tempo: extensões, cookies existentes, cookies de terceiros, cache e service workers.
  • A direção em que o teste falha diz-lhe qual metade dessa lista olhar.
  • Um perfil novo com as extensões ligadas é o passo seguinte que separa a causa mais comum das restantes.
  • “Funciona em navegação anónima” é o início do diagnóstico. Tratá-lo como o fim é como um service worker desatualizado sobrevive a três deploys.