hefmartest
v1.0.105
Published
A/B Testing SDK for React applications
Maintainers
Readme
A/B Testing SDK
A lightweight, deterministic A/B testing SDK for React applications.
Features
- Deterministic Variant Assignment: Same user always gets the same variant
- Zero Network Latency: Instant assignment with local bucketing
- Event Tracking: Record user interactions for analytics
- TypeScript Support: Full type safety
- React Hooks: Easy-to-use React integration
- Tree-shakeable: Only import what you need
Installation
npm install hefmartestQuick Start
Initialize the SDK
import { initABTestClient } from 'hefmartest'
initABTestClient({
userId: 'user-123',
apiUrl: 'http://localhost:3000/api',
enableBackendSync: true
})Use in React Components
import { useVariant, useTrackEvent } from 'hefmartest/react'
function MyComponent() {
const { variant, loading } = useVariant('my-experiment')
const trackEvent = useTrackEvent('my-experiment')
if (loading) return <div>Loading...</div>
return (
<div>
{variant?.key === 'control' ? (
<button onClick={() => trackEvent('click')}>Original</button>
) : (
<button onClick={() => trackEvent('click')}>New Design</button>
)}
</div>
)
}Core API
initABTestClient(config)
Initialize the SDK client.
Options:
userId(required): Unique user identifierapiUrl(optional): Backend API URL (default:http://localhost:3000/api)enableBackendSync(optional): Send events to backend (default:true)
getABTestClient()
Get the initialized client instance.
const client = getABTestClient()
const variant = await client.getVariant('my-experiment')assignVariant(experimentKey, userId, variants)
Direct variant assignment without initialization.
import { assignVariant } from 'hefmartest'
const variant = assignVariant('my-exp', 'user-123', [
{ key: 'control', weight: 50 },
{ key: 'treatment', weight: 50 }
])React Hooks
useVariant(experimentKey)
Get variant assignment for an experiment.
const { variant, loading, error } = useVariant('my-experiment')useTrackEvent(experimentKey)
Track events for an experiment.
const trackEvent = useTrackEvent('my-experiment')
trackEvent('click', { position: 'top' })useUserID()
Get and set the current user ID.
const { userId, setUserId } = useUserID()Browser Support
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
License
MIT
