Testes A/B e feature flags

Crie testes e controle features direto pelo dashboard, sem precisar de novo release.

Testes A/B

Por exemplo, pra testar se uma barra de progresso no onboarding melhora a conversão, cria um teste "progress_bar" com variantes "on" e "off". No código, chama getVariant com o nome do teste. O SDK retorna qual variante aquele usuário caiu. Se não caiu em nenhuma, o campo variant vem null (controle).

tsx
import { useState, useEffect } from "react";
import Paywallo from "@virex-tech/paywallo-sdk";

function OnboardingScreen() {
  const [variant, setVariant] = useState<string | null>(null);

  useEffect(() => {
    Paywallo.waitUntilReady()
      .then(() => Paywallo.getVariant("progress_bar"))
      .then((result) => {
        setVariant(result.variant);
      });
  }, []);

  if (variant === "on") return <OnboardingWithProgressBar />;
  return <OnboardingDefault />;
}

Você pode criar quantas variantes quiser. O dashboard mostra as métricas de conversão por variante e calcula significância estatística automaticamente.

tsx
import { useState, useEffect } from "react";
import Paywallo from "@virex-tech/paywallo-sdk";

function OnboardingScreen() {
  const [variant, setVariant] = useState<string | null>(null);

  useEffect(() => {
    Paywallo.waitUntilReady()
      .then(() => Paywallo.getVariant("onboarding_flow"))
      .then((result) => {
        setVariant(result.variant);
      });
  }, []);

  // use switch, if/else ou qualquer padrão que preferir
  switch (variant) {
    case "curto":
      return <ShortOnboarding />;
    case "video":
      return <VideoOnboarding />;
    default:
      return <LongOnboarding />;
  }
}

Feature flags

Pra liberar uma feature pra um grupo específico de usuários (por plataforma, versão do app ou país), cria uma flag condicional no dashboard e checa no código.

tsx
const enabled = await Paywallo.getConditionalFlag("beta_checkout", {
  platform: Platform.OS,
  appVersion: Application.nativeApplicationVersion,
  country: "BR",
});

if (enabled) {
  // mostra nova feature
}

Remote config

Cada variante pode ter um payload JSON configurado no dashboard. Útil pra mudar valores no app sem publicar nova versão.

tsx
const { payload } = await Paywallo.getVariant("pricing_config");
// payload = { trialDays: 7, primaryPrice: 9.99, ctaText: "Começar grátis" }

Múltiplas flags e pré-carregamento

Pra resolver várias flags de uma vez:

tsx
// Resolver várias flags de uma vez
const flags = await Paywallo.evaluateFlags(["flag_a", "flag_b", "flag_c"]);

Flags são sempre resolvidas em runtime via getVariant, evaluateFlags ou getSessionFlag. Use waitUntilReady() antes de qualquer chamada de flag — no cold start, sem isso, o SDK ainda não recebeu a configuração do servidor e retorna o valor de controle silenciosamente, enviésando o experimento.