Pular para o conteúdo

Flags e tipos

Uma flag é uma decisão com nome que o seu app pede ao FortressFlag para tomar: este dispositivo deve ver o novo checkout? Qual texto vai no botão de comprar? Quantas tentativas antes de desistir? Esta página dá o vocabulário sobre o qual o resto da documentação se apoia.

Flags vivem em um projeto e têm um valor por ambiente

Seção intitulada “Flags vivem em um projeto e têm um valor por ambiente”

Toda flag pertence a um projeto e é identificada pela sua chave — um nome curto em minúsculas como new-checkout. A chave é o que o seu código pede, e ela é imutável depois da criação: seus apps já publicados têm a chave embutida no código, então renomeá-la os quebraria. Você pode mudar o nome de exibição de uma flag a qualquer momento; a chave é para sempre.

Uma flag não tem um valor — ela tem um valor por ambiente. new-checkout pode estar ligada em dev, em rollout em staging e desligada em production, tudo ao mesmo tempo. Você liga e segmenta cada ambiente de forma independente.

Toda flag tem um tipo, escolhido na criação e imutável depois dela:

Tipo Valores Bom para
Booleana true / false Kill switches, gates de recursos, rollouts
String Variantes de texto com nome Experimentos de texto, seleção de algoritmo, temas
Número Variantes numéricas com nome Limites, timeouts, thresholds

O tipo é imutável pelo mesmo motivo que a chave: o seu código lê a flag por uma chamada tipada (isEnabled, stringValue, numberValue), e uma flag que mudasse de tipo debaixo de um app publicado deixaria de fazer sentido para ele.

Flags de string e de número servem variantes — valores com nome, como control → "buy-now" e treatment → "start-free". Os nomes são para você e para o seu painel; os dispositivos dos seus usuários só recebem o valor. Nomes de variantes nunca saem do plano de gerenciamento.

Duas coisas diferentes são chamadas de padrão, e vale a pena mantê-las separadas:

  • O padrão da flag é o que um ambiente serve quando nenhuma regra de segmentação corresponde. Para uma flag booleana é o estado ligado/desligado; para uma flag multivariada é a variante que você escolhe como padrão.
  • O padrão do seu código é o valor que você passa no ponto de chamada — isEnabled("new-checkout", default: false). Esse é o fundo da cadeia de fallback: é o que o seu app usa quando nunca alcançou o FortressFlag, ou quando a flag não existe (ou não tem um valor para servir) naquele ambiente.

Uma flag multivariada recém-criada sem variante padrão escolhida não serve nada — o padrão do seu código responde até você decidir. Isso é proposital: uma flag que você não terminou de configurar deve se comportar como uma flag que não existe.

Excluir uma flag é reversível — até certo ponto. Arquivar a remove dos seus apps: em todo dispositivo online a flag para de resolver em cerca de um minuto, e os padrões do seu código assumem. Uma flag arquivada pode ser restaurada intacta dentro da janela de retenção, ou expurgada permanentemente depois dela. A lista de arquivadas fica dentro de cada projeto, ao lado das flags que ele contém.

Se uma flag ficou 90 dias sem ser tocada, o painel a marca como obsoleta — um empurrão para arquivá-la, nunca um arquivamento automático. Flags que você esqueceu são complexidade que a sua base de código ainda está pagando.