> ## Documentation Index
> Fetch the complete documentation index at: https://docs.testly.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Dev Mode

> Teste sua integração sem misturar dados reais — duas chaves, dois ambientes completamente isolados

## Por que duas chaves?

Toda organização no Testly tem dois pares de chave + ambiente:

| Chave               | Formato       | Ambiente                                           |
| ------------------- | ------------- | -------------------------------------------------- |
| **Produção**        | `tk_live_...` | Eventos contam nas métricas, uso e marketing       |
| **Desenvolvimento** | `tk_test_...` | Eventos são isolados — não afetam métricas nem uso |

Isso garante que você nunca polui seus dados reais enquanto itera localmente.

***

## Como ativar o Dev Mode

No dashboard, clique no **toggle no rodapé da sidebar** (ícone de chave ou switch). Na primeira ativação, um modal explica o que muda.

Você também pode ativar pelo header no mobile.

**O que muda visualmente:**

* Strip entre o header e o conteúdo fica **âmbar** ("Dev Mode Ativo")
* Toggle na sidebar fica âmbar
* Settings → Chave de API mostra a `tk_test_...` em âmbar

***

## Fluxo completo de desenvolvimento

```
1. Ative o Dev Mode no dashboard
2. Crie um experimento — ele fica com is_test=true, invisível no modo Produção
3. Copie a chave tk_test_... em Settings → Chave de API → aba Desenvolvimento
4. Use essa chave no seu ambiente local:
```

```bash .env.local theme={null}
# Sobrescreve .env localmente — não commite este arquivo
VITE_TESTLY_API_KEY=tk_test_...
```

```tsx App.tsx theme={null}
<TestlyProvider apiKey={import.meta.env.VITE_TESTLY_API_KEY}>
```

```
5. Implemente o useExperiment no componente, teste localmente
6. Veja as impressões chegando no dashboard (em Dev Mode)
7. Quando pronto: toggle de volta para Produção
8. Troque a chave por tk_live_... no .env de produção (Vercel, etc.)
```

<Tip>
  Use `.env` com a chave de produção e `.env.local` com a chave de dev. O `.env.local` sobrescreve localmente e não deve ser commitado. Assim a CI/CD usa produção automaticamente.
</Tip>

***

## Isolamento garantido pelo backend

O isolamento não é só visual — é aplicado na camada de banco de dados:

* **`get-variant`**: uma chave `tk_test_` só resolve experimentos com `is_test=true`. É impossível acessar experimentos de produção com a chave de dev, e vice-versa.
* **Eventos**: eventos enviados com `tk_test_` são marcados com `is_test=true` e **não afetam** `experiment_stats`, `experiment_daily_stats`, `organization_monthly_usage` nem o pipeline de emails de lifecycle.
* **Limite do plano**: experimentos de dev não contam para o limite de experimentos ativos. Você pode criar quantos quiser independente do plano.

***

## Experimentos limitados no plano gratuito?

O plano gratuito limita **1 experimento de produção ativo**. Experimentos em Dev Mode são ilimitados — você pode criar e testar à vontade sem custo adicional.

***

## FAQ

<AccordionGroup>
  <Accordion title="Posso usar a chave tk_test_ em produção?" icon="circle-xmark">
    Não. A chave `tk_test_` só resolve experimentos com `is_test=true`. Se você deployar com ela, `useExperiment` sempre retorna `variant: null` para experimentos de produção.

    **Solução**: use `tk_live_...` no deploy de produção.
  </Accordion>

  <Accordion title="Por que variant retorna null no dev mode?" icon="triangle-exclamation">
    Causa mais comum: a chave no `TestlyProvider` é `tk_live_` mas o experimento foi criado em Dev Mode (`is_test=true`).

    **Checklist**:

    1. Confirme que o Dev Mode está ativo no dashboard
    2. Copie a chave `tk_test_...` em Settings → Chave de API → aba Desenvolvimento
    3. Use essa chave no seu `.env.local`
    4. Reinicie o servidor de desenvolvimento
  </Accordion>

  <Accordion title="Como mover um experimento de dev para produção?" icon="arrows-right-left">
    Use o botão **"Promover para Produção"** no cabeçalho do experimento (visível quando você está em Dev Mode). Isso cria uma cópia com `is_test=false` — pronto para usar com a chave de produção.

    O experimento original em dev continua existindo para referência.
  </Accordion>

  <Accordion title="As métricas do dashboard mudam com o toggle?" icon="chart-bar">
    Sim. Telemetria Global e Conversão Média filtram por `is_test` conforme o toggle:

    * **Produção**: mostra apenas dados de experimentos reais
    * **Dev Mode**: mostra apenas dados de testes

    Trocar o toggle não afeta os dados — apenas a visualização.
  </Accordion>

  <Accordion title="Como rotacionar minha chave de dev?" icon="arrows-rotate">
    Settings → Chave de API → aba Desenvolvimento → botão "Rotacionar". A chave antiga invalida imediatamente. Atualize o `.env.local` e reinicie o servidor.
  </Accordion>
</AccordionGroup>

***

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Quickstart" icon="bolt" href="/quickstart">
    Implemente seu primeiro teste A/B em 5 minutos
  </Card>

  <Card title="Debugging" icon="bug" href="/guides/debugging">
    Logs e troubleshooting do SDK
  </Card>
</CardGroup>
