O Data Lead é dividido em três arquivos, com orçamento de tamanho verificado a cada integração de código. Se um deles passar do limite, a build falha — o orçamento não é uma meta, é um teto.
| Arquivo | O que é | Teto (gzip) | Quando carrega |
|---|---|---|---|
ds.js |
O carregador. A única tag que você cola no site. | 2 KB | Imediatamente, de forma assíncrona |
behavior.js |
O coletor: navegação, rolagem, saída, gatilhos de abordagem e o ping de instalação | 6 KB | Em ociosidade, depois do carregamento da página |
widget.js |
O chat em si | 40 KB | Em ociosidade ou no primeiro gesto do visitante |
O orçamento de longo prazo do coletor é maior (12 KB); os 6 KB atuais são o teto real medido hoje.
A ordem de carregamento
- O snippet cria o global
DataStonee pededs.jscomasync. Nada bloqueia a renderização. - Quando a página termina de carregar, o carregador agenda o resto para o navegador ficar
ocioso (
requestIdleCallback, com prazo máximo de 4 segundos; onde não existe, um temporizador de 1,5 segundo). - O chat também sobe no primeiro gesto do visitante — rolagem, movimento do mouse, toque ou tecla —, o que vier antes. Assim ele já está pronto quando a pessoa decide falar.
- O coletor não espera gesto nenhum: ele é a medição da página, e sobe junto da ociosidade.
Consequência prática: quem fecha a aba antes de o navegador ficar ocioso baixa só os 2 KB do
carregador. Numa página tranquila, o chat e o coletor descem logo depois do load — mas sempre
fora do caminho crítico da sua página.
O desafio anti-bot é carregado sob demanda
O script do desafio invisível (Cloudflare Turnstile) não é baixado no carregamento da página. Ele só é pedido quando o visitante vai enviar a primeira mensagem — e mesmo assim com prazo de 2,5 segundos: estourou, o envio segue sem token.
Isso vale duas coisas ao mesmo tempo: nenhum peso para quem só visitou a página, e nenhum pedido à Cloudflare contando quem passou por ali.
O que o coletor faz na rede
O coletor não manda uma requisição por evento. Ele acumula em memória e envia:
- a cada 20 eventos ou a cada 5 segundos, o que vier antes;
- com
sendBeaconquando a página está sendo fechada — o único envio que sobrevive ao fechamento da aba; - também quando a aba fica escondida (no iOS o evento de fechamento nem sempre dispara).
A fila tem teto de 200 eventos: uma aba aberta o dia inteiro sem conseguir falar com o servidor não cresce sem parar.
Um lote enviado no fechamento da aba (sendBeacon) que não sai volta para a fila. No envio normal
o lote é dado por entregue assim que parte: eventos perdidos por rede fora do ar não são
reenviados — é o preço de não segurar a fila do visitante.
Impacto no Core Web Vitals
O Data Lead é medido continuamente contra orçamentos de desempenho numa página de teste, com metas de pontuação de performance ≥ 0,95 e tempo total de bloqueio ≤ 50 ms. As decisões de projeto que sustentam isso são as três acima: carregador mínimo, carregamento em ociosidade e nada de fonte ou imagem baixada por padrão.
Para medir no seu site:
- Rode o Lighthouse duas vezes, com e sem o snippet, na mesma página e nas mesmas condições de rede.
- Compare LCP e TBT. O chat não deve mover o LCP: ele não renderiza nada acima da dobra antes da interação.
- Se você usar avatar do agente, ele é a única imagem que o chat baixa — e só depois de o chat montar.
Recomendações
- Não coloque o snippet no
<head>comdefermanual nem embrulhado em um gerenciador de tags que espere consentimento para tudo. O carregador em si é o que respeita o modo de consentimento; adiá-lo apenas atrasa o chat. - Não injete o snippet a cada rota de uma aplicação de página única. O carregador já acompanha a navegação sozinho.
- Não hospede cópia própria dos arquivos. Eles são versionados na CDN da Data Stone e atualizados sem que você precise mexer no site.
- Um snippet por página. Duas cópias não instalam dois chats (os scripts são marcados no DOM), mas costumam vir acompanhadas de outras duplicidades — duas contas, duas chaves.
Veja também
Precisa de ajuda?
Fale com o suporte da Data Stone pelo canal combinado com a sua conta. Anexe o relatório do Lighthouse com e sem o snippet se o assunto for desempenho.