@lssm/lib.growth
Launch experiments without third-party SDKs. Register variants, assign users deterministically, track exposures, and compute significance.
Register + assign
import { ExperimentRegistry, ExperimentRunner } from '@lssm/lib.growth/experiments';
const registry = new ExperimentRegistry().register({
key: 'pricing.cta',
version: 1,
goal: 'Increase demo bookings',
variants: [
{ id: 'A', weight: 1 },
{ id: 'B', weight: 1 },
],
primaryMetric: 'demo_booked',
});
const runner = new ExperimentRunner();
const assignment = runner.assign(registry.get('pricing.cta')!, 'user_123');Track + analyze
import { ExperimentTracker } from '@lssm/lib.growth/tracker';
import { StatsEngine } from '@lssm/lib.growth/stats';
const tracker = new ExperimentTracker(new InMemoryTrackerStore());
await tracker.recordAssignment(assignment);
await tracker.recordSample({
experimentKey: assignment.experimentKey,
variantId: assignment.variantId,
metric: 'demo_booked',
value: 1,
timestamp: new Date(),
});
const stats = new StatsEngine().summarize(
await tracker.getSamples(assignment.experimentKey, 'demo_booked'),
'demo_booked'
);