@billdog.io/ab-testing
v1.1.1-beta.5
Published
A/B Testing module for BillDog SDK
Maintainers
Readme
@billdog.io/ab-testing
A/B Testing module for BillDog SDK v1.0.0 - Run experiments, assign variants, and track conversions.
Installation
npm install @billdog.io/ab-testing
# or
yarn add @billdog.io/ab-testingUsage
import BillDog from '@billdog.io/react-native';
import { abTest } from '@billdog.io/ab-testing';
// Configure A/B testing
abTest.configure({
apiKey: 'bd_live_...',
userId: 'user_123',
enableLogging: true,
cacheExperiments: true
});
// Register an experiment
abTest.registerExperiment({
id: 'paywall_design_test',
name: 'Paywall Design Test',
status: 'active',
variants: [
{ id: 'control', name: 'Control', weight: 50 },
{ id: 'variant_a', name: 'Blue Theme', weight: 25 },
{ id: 'variant_b', name: 'Green Theme', weight: 25 }
]
});
// Get assigned variant
const variant = await abTest.getVariant('paywall_design_test', 'user_123');
// Returns: 'control', 'variant_a', or 'variant_b'
// Show paywall with variant
BillDog.showPaywall({
placement: 'onboarding',
variant
});
// Track conversion
abTest.trackConversion('paywall_design_test', 'user_123');
// Get experiment statistics
const stats = abTest.getStats('paywall_design_test');
// Returns: { control: { assignments: 100, conversions: 15 }, ... }Advanced Features
Targeting Rules
abTest.registerExperiment({
id: 'premium_test',
name: 'Premium Feature Test',
status: 'active',
variants: [...],
targetingRules: [
{ attribute: 'country', operator: 'equals', value: 'US' },
{ attribute: 'signup_date', operator: 'gt', value: '2024-01-01' }
]
});Variant Configuration
abTest.registerExperiment({
id: 'pricing_test',
name: 'Pricing Test',
status: 'active',
variants: [
{
id: 'control',
name: 'Control',
weight: 50,
config: { price: 9.99, currency: 'USD' }
},
{
id: 'variant_a',
name: 'Higher Price',
weight: 50,
config: { price: 14.99, currency: 'USD' }
}
]
});Configuration Options
interface ABTestConfig {
apiKey: string; // BillDog API key
enableLogging?: boolean; // Enable debug logging (default: false)
userId?: string; // Default user ID for experiments
cacheExperiments?: boolean; // Cache assignments locally (default: true)
}Features
- ✅ Weighted variant assignment
- ✅ Consistent user bucketing (same user always gets same variant)
- ✅ Conversion tracking
- ✅ Targeting rules
- ✅ Local caching of assignments
- ✅ Experiment statistics
- ✅ TypeScript support
Bundle Size
~18KB (minified + gzipped)
License
MIT
