Skip to main content

Visão Geral

O hook useExperiment é a forma principal de implementar experimentos A/B no Testly. Ele gerencia automaticamente:
  • ✅ Atribuição determinística de variantes
  • ✅ Registro automático de impressões
  • ✅ Cache local para consistência
  • ✅ Estados de loading e erro

Uso Básico


Assinatura

Parâmetros

Opções

Retorno


Exemplos Práticos

Exemplo 1: Teste de CTA

Exemplo 2: Teste de Layout

Exemplo 3: Teste de Múltiplas Variantes

Exemplo 4: Teste Condicional


Comportamento do Hook

Primeira Renderização

  1. Hook é executado
  2. Verifica cache local
  3. Se não encontrar, chama a API
  4. API atribui variante de forma determinística
  5. Impressão é registrada automaticamente
  6. Variante é salva no cache
  7. Componente re-renderiza com a variante

Renderizações Subsequentes

  1. Hook busca variante do cache
  2. Retorna imediatamente (sem chamada à API)
  3. Não registra nova impressão
  4. Mantém consistência da experiência
O registro de impressão é automático e acontece apenas na primeira vez que o usuário vê o experimento. Você não precisa fazer nada!

Conversões

A função convert() permite registrar quando o usuário completa a ação desejada.

Sintaxe

Parâmetros

Exemplos de Conversão

Boas práticas para nomes de eventos:
  • Use snake_case: button_clicked, form_submitted
  • Seja descritivo: hero_cta_clicked > click
  • Use verbos no passado: clicked, submitted, completed

Estados de Loading e Erro

Loading State

Sempre implemente um estado de loading para evitar Layout Shift:

Error State

Sempre tenha um fallback para erros:
Importante: Nunca deixe seu app quebrar por causa de um experimento. Sempre implemente fallbacks que mantêm a funcionalidade.

Múltiplos Experimentos

Você pode rodar vários experimentos no mesmo componente:
Cada experimento é independente. Um usuário pode ver Variante A no hero e Variante B no pricing simultaneamente.

Boas Práticas

1. Sempre implemente Loading e Error

2. Nomear variantes de forma clara

3. Isolar lógica de experimento

4. Testar apenas UMA variável


TypeScript

O hook é totalmente tipado:

Troubleshooting

A causa número 1: a API Key no TestlyProvider não corresponde à organização onde o experimento foi criado.O SDK envia a API Key para o servidor, que busca o experimento dentro daquela organização. Se você usar a key de uma conta diferente, o servidor não encontra o experimento e retorna null.Checklist:
  1. Abra app.testly.com.br/settings → copie a API Key (tk_live_...)
  2. Confirme que essa mesma key está no TestlyProvider do seu app
  3. Confirme que o slug em useExperiment('...') é exatamente igual ao slug do dashboard (case-sensitive)
  4. Confirme que o experimento está em estado running no dashboard (não draft, paused ou completed)
Ative o debug para inspecionar a resposta do servidor:
Possíveis causas:
  1. Problema de rede ou firewall bloqueando o endpoint
  2. API Key inválida (formato incorreto)
  3. Experimento inativo — retorna null imediatamente, não fica em loading
Solução:
  • Verifique o console do navegador por erros de rede
  • Confirme que a API Key tem o formato tk_live_...
  • Ative debug: true e verifique os logs
Checklist:
  • ✅ Você está chamando convert('event_name')?
  • ✅ O nome do evento é uma string válida?
  • ✅ Você registrou impressão (automático) antes?
  • ✅ Debug mode está ativo para ver logs?
Teste:
Isso não deveria acontecer!O Testly usa cache local para garantir consistência.Possíveis causas:
  1. localStorage está sendo limpo
  2. Navegação privada/anônima
  3. Diferentes userId sendo gerados
Solução:
  • Verifique se não há código limpando localStorage
  • Use um userId fixo para testar

Próximos Passos

Exemplos Práticos

Veja implementações reais de A/B tests

Configuração

Opções avançadas do SDK

Debugging

Guia completo de troubleshooting