Visão Geral
O hookuseExperiment é 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
- Hook é executado
- Verifica cache local
- Se não encontrar, chama a API
- API atribui variante de forma determinística
- Impressão é registrada automaticamente
- Variante é salva no cache
- Componente re-renderiza com a variante
Renderizações Subsequentes
- Hook busca variante do cache
- Retorna imediatamente (sem chamada à API)
- Não registra nova impressão
- 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çãoconvert() permite registrar quando o usuário completa a ação desejada.
Sintaxe
Parâmetros
Exemplos de Conversão
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: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
variant retorna null — causa mais comum
variant retorna null — causa mais comum
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:- Abra app.testly.com.br/settings → copie a API Key (
tk_live_...) - Confirme que essa mesma key está no
TestlyProviderdo seu app - Confirme que o slug em
useExperiment('...')é exatamente igual ao slug do dashboard (case-sensitive) - Confirme que o experimento está em estado running no dashboard (não draft, paused ou completed)
Loading nunca termina
Loading nunca termina
Possíveis causas:
- Problema de rede ou firewall bloqueando o endpoint
- API Key inválida (formato incorreto)
- Experimento inativo — retorna
nullimediatamente, não fica em loading
- Verifique o console do navegador por erros de rede
- Confirme que a API Key tem o formato
tk_live_... - Ative
debug: truee verifique os logs
Conversões não são registradas
Conversões não são registradas
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?
Variante muda a cada refresh
Variante muda a cada refresh
Isso não deveria acontecer!O Testly usa cache local para garantir consistência.Possíveis causas:
- localStorage está sendo limpo
- Navegação privada/anônima
- Diferentes
userIdsendo gerados
- Verifique se não há código limpando localStorage
- Use um
userIdfixo 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

