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.
1. Instale
Seção intitulada “1. Instale”O SDK mora em um repositório público no GitHub — instale-o direto de lá, fixado na release:
npm install github:FortressFlag/FortressFlag_SDK_web#v1.0.0O pacote se compila sozinho na instalação, e o import abaixo é o ponto de entrada dele.
2. Inicie o SDK
Seção intitulada “2. Inicie o SDK”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.
3. Leia uma flag
Seção intitulada “3. Leia uma flag”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.
Nada aqui lança exceção, nunca
Seção intitulada “Nada aqui lança exceção, nunca”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.)
O que vive no navegador, honestamente
Seção intitulada “O que vive no navegador, honestamente”- 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
platformesdkVersionautomaticamente, mas não háappVersionnemosVersionconfiáveis para uma página — uma regra de segmentação sobre elas simplesmente nunca corresponde a um navegador.
Para onde ir agora
Seção intitulada “Para onde ir agora”- Como as flags chegam ao seu app — o polling e o cache
- Identidade do dispositivo e cobrança — a identidade naquela chave de armazenamento
- Segmentação — regras, segmentos e rollouts