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).
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.
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.
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.
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:
// 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.