Publicar um recurso novo para todos de uma vez é arriscado. Se há um erro, todos os usuários sentem. As feature flags, também chamadas de feature toggles, ajudam a reduzir esse risco.
O que é uma feature flag
É uma condição no código que decide se um recurso aparece ou não. Em vez de escrever que a nova tela de checkout sempre aparece, o app consulta uma configuração: se a flag do novo checkout estiver ligada para este usuário, mostra a nova tela. Se não, mostra a antiga.
O valor da configuração fica no servidor, então você muda o comportamento sem enviar versão nova para as lojas, o que é útil em apps móveis, onde a aprovação pode demorar.
Para que serve
- Liberação gradual: ative para 5% dos usuários, depois 25%, depois todos.
- Desligar rápido: se algo falha, você desliga a flag e o app volta ao comportamento anterior.
- Testes com grupos: equipe interna ou usuários convidados usam antes do público.
- Testes A/B: comparar duas versões de uma tela para ver qual funciona melhor.
- Separar publicação de lançamento: o código vai ao ar pronto, mas o recurso só aparece quando você decidir.
Como começar de forma simples
- Escolha um recurso novo e de risco moderado para a primeira experiência.
- Crie uma configuração no servidor com o nome da flag e o estado, ligada ou desligada.
- No app, leia essa configuração ao abrir e ao atualizar.
- Escolha um critério de grupo, como identificador do usuário, e libere por porcentagem.
- Defina um comportamento padrão seguro para o caso de o app não conseguir ler a configuração, em geral o antigo.
- Acompanhe erros e métricas enquanto a liberação avança.
Para saber o que acompanhar, veja Métricas de app: retenção, usuários ativos e o que acompanhar.
Cuidados importantes
- Dê nomes claros às flags, que digam o que fazem.
- Anote quem é o responsável por cada uma e quando ela deve ser removida.
- Remova a flag e o código antigo depois que o recurso está estável. Flags esquecidas acumulam e deixam o código confuso.
- Teste as duas combinações, com a flag ligada e desligada.
- Evite flags dentro de flags, que geram combinações difíceis de testar.
- Não use flag para esconder recurso que exige segurança. A decisão de permissão deve ficar no servidor, não só na tela do app.