Pular para o conteúdo

Quickstart de web

Em poucos minutos o seu site vai ler uma feature flag de verdade — com um cache durável, uma resposta fail-safe para toda situação e nada para você gerenciar no navegador.

Zero dependências em runtime; o SDK inteiro fica abaixo de um teto de 10 kB gzip.

O SDK mora em um repositório público no GitHub — instale-o direto de lá, fixado na release:

Terminal window
npm install github:FortressFlag/FortressFlag_SDK_web#v1.0.0

O pacote se compila sozinho na instalação, e o import abaixo é o ponto de entrada dele.

Uma vez, cedo no bootstrap da sua página ou app:

import { Environment, FortressFlag } from "@fortressflag/sdk-web";
FortressFlag.start({
sdkKey: "ffc_prod_…", // da tela Chaves de SDK do seu projeto
environment: Environment.PRODUCTION,
});

start retorna imediatamente; os valores em cache de visitas anteriores ficam disponíveis na hora, e os valores novos chegam em segundo plano. A chave é uma chave de cliente — ela fica visível no código-fonte da sua página por design.

if (FortressFlag.isEnabled("new-checkout", false)) {
// renderize o novo checkout
}

stringValue e numberValue leem flags multivariadas do mesmo jeito, e FortressFlag.onChange avisa quando os valores mudam para você poder renderizar de novo.

É isso — a sua flag está no ar. Ligue-a no painel e abra a página de novo (ou espere um polling) para vê-la acompanhar.

Nenhuma chamada desta API lança exceção, e nenhuma promise dela é rejeitada. Toda leitura resolve pela cascata: o valor buscado mais recente, depois o último valor que este navegador registrou, depois o seu padrão, depois false. Uma queda do FortressFlag, uma rede morta, um bloqueador de anúncios, uma chave revogada — todos resolvem para um valor de flag, nenhum chega ao seu código como erro.

(Esse caso do bloqueador de anúncios é real: algumas extensões de privacidade bloqueiam as requisições de flags. Os valores em cache continuam sendo servidos, e um navegador que nunca buscou serve os seus padrões — “as flags não atualizam com o uBlock ligado” é a cascata funcionando, não um bug.)

  • A identidade do dispositivo vive no localStorage, com escopo da sua origem. Ela é gerada aleatoriamente e é pseudônima — e legível pelo JavaScript da sua própria página, a mesma classe de valor que a chave de SDK ao lado dela.
  • Janelas privadas geram identidades descartáveis. Cada sessão privada conta como um dispositivo enquanto durar; um usuário que limpa os dados do site também é um dispositivo novo. E uma pessoa no seu site, no seu app iOS e no seu app Android é até três dispositivos — não há vínculo entre plataformas, por design.
  • Suas suítes de teste são grátis. Navegadores controlados por Playwright, Selenium, Puppeteer ou Cypress se declaram, e o SDK gera uma identidade sim_ neles: recebem flags, nunca são cobrados.
  • Tags de versão não existem na web. O SDK envia platform e sdkVersion automaticamente, mas não há appVersion nem osVersion confiáveis para uma página — uma regra de segmentação sobre elas simplesmente nunca corresponde a um navegador.