Voltar para o Blog

Observabilidade Avançada: Monitorando Vitals e Tráfego com Vercel Analytics

Observabilidade Avançada: Monitorando Vitals e Tráfego com Vercel Analytics

Durante anos, a primeira coisa que a equipe de marketing pedia após o lançamento de um sistema era: "Coloca a tag do Google Analytics no código". E, durante anos, a equipe de tecnologia obedecia cegamente.

O resultado? Um script gigantesco era baixado no celular do usuário a cada carregamento de página, destruindo o tempo de resposta, arruinando o Core Web Vitals (a nota de performance do Google) e transformando um SaaS desenhado para ser rápido em uma carroça corporativa.

O Google Analytics (GA4) é fenomenal para campanhas de Ads, mas está defasado e é excessivamente pesado quando o objetivo é Observabilidade de Performance e Tráfego Limpo.

Neste artigo, vamos dissecar como a injeção nativa do Vercel Analytics e do Vercel Speed Insights resolve essa dor, entregando telemetria em tempo real diretamente da Borda da rede (Edge), sem sacrificar 1 milissegundo sequer da sua aplicação Next.js.


1. O Problema do Rastreamento Client-Side

Quando você usa ferramentas legadas, o navegador do cliente precisa baixar a página, baixar o script de rastreamento, executá-lo e só então enviar o dado de volta para o servidor. Se a conexão do usuário (3G) falhar no meio do caminho, você perde a métrica.

A Vercel subverteu essa lógica. Como o seu sistema já está hospedado na Borda da Vercel, a própria infraestrutura injeta as métricas no exato momento em que o HTML sai do servidor em direção ao cliente. Não há scripts pesados sendo processados na CPU do celular do seu usuário.

Isso garante uma nota 100 no Lighthouse e fornece os dados reais de LCP (Largest Contentful Paint) e CLS (Cumulative Layout Shift) baseados no carregamento físico das telas.


2. Mão no Código: Injetando a Observabilidade de Elite

No App Router do Next.js, integrar a observabilidade nativa leva menos de dois minutos e não exige nenhuma configuração de painéis externos.

Basta abrirmos o arquivo principal de layout (layout.tsx) e importar os dois pacotes essenciais: o rastreador de visitas e o rastreador de saúde (Vitals).

// src/app/layout.tsx
import { Analytics } from '@vercel/analytics/react';
import { SpeedInsights } from '@vercel/speed-insights/next';

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="pt-BR">
      <body>
        {/* A sua aplicação real e componentes visuais */}
        <main>{children}</main>

        {/* 
          Os módulos de telemetria da Vercel. 
          Eles rodam de forma não-bloqueante, ou seja, o React não 
          espera eles carregarem para desenhar a interface do usuário.
        */}
        <Analytics />
        <SpeedInsights />
      </body>
    </html>
  );
}

Ao empurrar esse código para produção, o painel da sua conta Vercel já começa a desenhar os gráficos de acessos e a curva de performance, dizendo exatamente quais páginas estão rápidas e quais estão precisando de estratégias de Caching e ISR.


3. Indo Além: Eventos Customizados (Custom Events)

Saber quantas pessoas acessaram o seu site é o básico. Em um SaaS corporativo, a verdadeira inteligência de negócios mora nos Eventos Customizados.

Você precisa saber exatamente quantos usuários clicaram no botão "Assinar Plano Premium", onde eles abandonaram o fluxo e se uma Feature Flag global foi ativada. Com o Vercel Analytics, nós podemos disparar eventos cirúrgicos no momento exato em que a ação ocorre.

Veja este exemplo de um Client Component focado em alta conversão:

// src/components/CheckoutButton.tsx
'use client';

import { track } from '@vercel/analytics';
import { useState } from 'react';

export default function CheckoutButton({ planId, price }: { planId: string, price: number }) {
  const [isLoading, setIsLoading] = useState(false);

  const handleCheckout = async () => {
    setIsLoading(true);

    // 1. O usuário demonstrou intenção de compra. 
    // Disparamos a telemetria instantaneamente, passando propriedades ricas.
    track('Checkout_Started', {
      plan_id: planId,
      price_value: price,
      currency: 'BRL'
    });

    try {
      // 2. Chama a Server Action segura ou a API do Stripe
      await startStripeCheckout(planId);
      
      // 3. Sucesso!
      track('Checkout_Completed', { plan_id: planId });
    } catch (error) {
      // 4. Captura a falha na conversão para análise da engenharia
      track('Checkout_Failed', { 
        plan_id: planId, 
        error_code: error.message 
      });
    } finally {
      setIsLoading(false);
    }
  };

  return (
    <button 
      onClick={handleCheckout} 
      disabled={isLoading}
      className="bg-green-600 text-white px-6 py-3 rounded-md font-bold"
    >
      {isLoading ? 'Processando...' : 'Finalizar Assinatura'}
    </button>
  );
}

O código acima é elegante e poderoso. A função track() não atrasa o redirecionamento para o pagamento e não engasga a interface. Tudo é enviado em background para os servidores da Vercel.


Visibilidade é Sobrevivência

Trabalhar às cegas, sem saber o que os seus usuários estão fazendo ou por que o seu painel administrativo trava no horário de pico, é o caminho mais rápido para perder contratos valiosos. E injetar ferramentas antigas de rastreamento apenas mascara o problema.

A observabilidade de ponta deve ser embutida na fundação da arquitetura. Quando você une a velocidade do Next.js com a telemetria do Vercel Analytics, o seu time de desenvolvimento para de achar e começa a ter certeza absoluta de onde colocar esforço.


Albanir Neves

Albanir Neves

Especialista em Sistemas e Integrações

Com mais de 12 anos de experiência técnica, ajudo empresas a escalar e digitalizar processos através de sistemas sob medida, automação avançada e integrações B2B com Inteligência Artificial.