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, retorna 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.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.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"]);Se precisa que as flags estejam prontas no boot do app sem await, declara em sessionFlags no Provider. Depois do init, acessa com getSessionFlag de forma síncrona.
// Pré-carregar no boot pra acesso síncrono depois
<PaywalloProvider config={{
appKey: "pk_xxx",
sessionFlags: ["progress_bar", "paywall_variant"]
}}>