TL;DR

Feature Flags permitem controlar funcionalidades remotamente e fazer testes A/B sem precisar de deploy.

Feature Flags

Controle features remotamente e faça testes A/B sem publicar nova versão do app

O que são Feature Flags?

Feature Flags (ou Feature Toggles) permitem ativar/desativar funcionalidades do seu app remotamente, sem precisar enviar atualização para as lojas. Com flags você pode:

  • Liberar features gradualmente (por porcentagem de usuários)
  • Fazer testes A/B comparando diferentes versões de uma feature
  • Desativar features com problemas imediatamente em produção
  • Personalizar experiência por segmento (iOS vs Android, país, etc)

Tipos de Flags

Feature Flags Simples

Retornam apenas true/false para todos os usuários.

Exemplo: Ativar novo design de homepage

Conditional Flags (Flags Condicionais)

Retornam valores diferentes baseado em regras de segmentação.

Exemplo: Mostrar preço em R$ para BR e em USD para outros países

Exemplo Rápido

Feature Flag Simples

import { Paywallo } from '@virex-tech/paywallo-sdk'; // Verificar se feature está ativa const isEnabled = await Paywallo.getConditionalFlag('new_chat_ui'); if (isEnabled) { // Mostrar nova UI de chat navigation.navigate('NewChatScreen'); } else { // Mostrar UI antiga navigation.navigate('OldChatScreen'); } // Com contexto adicional const isEnabledWithContext = await Paywallo.getConditionalFlag('new_chat_ui', { platform: 'ios', appVersion: '2.0.0', country: 'BR', });

Conditional Flag (com variantes)

import { Paywallo } from '@virex-tech/paywallo-sdk'; // Buscar valor da flag com variantes const result = await Paywallo.getVariant('homepage_layout'); // result.variant pode ser: "control", "variant_a", "variant_b", null // result.payload pode conter dados adicionais switch (result.variant) { case 'variant_a': return <HomepageLayoutA />; case 'variant_b': return <HomepageLayoutB />; default: return <HomepageLayoutControl />; }

Métodos do SDK

Paywallo.getConditionalFlag()

Para Feature Flags simples (boolean)

ParâmetroTipoDescrição
keystringIdentificador único da flag (ex: "dark_mode")
contextConditionalFlagContextContexto opcional para avaliação da flag

Retorno: Promise<boolean>

ConditionalFlagContext:
  • platform?: "ios" | "android"
  • appVersion?: string (ex: "2.0.0")
  • country?: string (ex: "BR")
  • distinctId?: string (identificador do usuário)

Paywallo.getVariant()

Para Conditional Flags (com variantes)

ParâmetroTipoDescrição
keystringIdentificador único da flag (ex: "pricing_test")

Retorno: Promise<{ variant: string | null, payload?: object }>

Campos do retorno:
  • variant: string | null - nome da variante ou null se não encontrada
  • payload: object (opcional) - dados adicionais configurados na variante

Configurando no Dashboard

Feature Flag Simples

  1. Acesse Feature Flags no menu lateral
  2. Clique em Nova Flag
  3. Configure:
    • Key: new_onboarding
    • Nome: Novo Fluxo de Onboarding
    • Status: Ativa
    • Rollout: 50% (liberar para metade dos usuários)
  4. Salve a flag

Conditional Flag

  1. Acesse Conditional Flags no menu lateral
  2. Clique em Nova Flag
  3. Configure variantes:
    • Control: valor padrão (retornado quando nenhuma regra match)
    • Variante A: valor alternativo 1
    • Variante B: valor alternativo 2
  4. Configure regras de quando retornar cada variante (plataforma, país, propriedades customizadas)
  5. Defina distribuição percentual entre variantes para teste A/B

Testes A/B com Flags

Exemplo: Testando diferentes CTAs

Você quer testar qual texto de botão converte mais: "Assinar Agora" vs "Começar Grátis"

1. Crie uma Conditional Flag no dashboard:

  • Key: cta_button_text
  • Control: "Assinar Agora"
  • Variante A: "Começar Grátis"
  • Distribuição: 50% control, 50% variante A

2. No código:

import { Paywallo } from '@virex-tech/paywallo-sdk'; const result = await Paywallo.getVariant('cta_button_text'); const ctaText = result.variant || 'Assinar Agora'; <Button onPress={handleSubscribe}> {ctaText} </Button> // Rastrear conversão Paywallo.track('subscribe_clicked', { properties: { ctaVariant: ctaText, }, });

3. Analise os resultados:

Use Métricas Customizadas para criar uma análise comparando taxa de conversão entre as variantes.

Diferença entre Flag e Campaign

Use Flags para controlar código/lógica do app. Use Campanhas para controlar qual paywall exibir. Ambos podem fazer segmentação e testes A/B.

Dicas de Boas Práticas

  • Use keys descritivas: new_checkout_flow é melhor que flag1
  • Sempre tenha um fallback/default no código caso a flag não carregue (offline, erro de rede)
  • Para testes A/B, rastreie eventos com a variante recebida para poder analisar depois
  • Remova flags antigas do código após 100% rollout para manter a base de código limpa
Paywallo | Analytics, Gestão de Paywalls e Feature Flags