SDKs
Five SDK packages in v0.1 — TypeScript, React, PHP (Laravel-ready), Python (Django + FastAPI), and the growth umbrella. Every SDK that ships a port of the bucketing function round-trips the same corpus in CI. Drift is a build failure.
@philiprehberger/splitstream
Source ↗TypeScript core client. Sticky-assignment cache, buffered tracking, runs in Node or the browser. Pure-TS SHA-256 keeps bucket() synchronous everywhere.
npm install @philiprehberger/splitstream@philiprehberger/splitstream-react
Source ↗React adapter — SplitstreamProvider + useExperiment hook with per-experiment subscription (changing one experiment’s variant doesn’t re-render the others).
npm install @philiprehberger/splitstream-react@philiprehberger/growth
Source ↗Umbrella for Pennant + Splitstream. Reads the Pennant kill-switch flag, gates Splitstream.assign() if on. Same five-line shape on both docs sites.
npm install @philiprehberger/growthphiliprehberger/splitstream (Packagist)
Source ↗PHP SDK with Laravel service provider, Splitstream facade, @experiment Blade directive. Session-backed sticky cache via LaravelSessionStorage.
composer require philiprehberger/splitstreamsplitstream-sdk (PyPI)
Source ↗Python SDK with optional Django middleware and FastAPI dependency factory. Thread-safe via threading.Lock. Context-manager support.
pip install splitstream-sdkv2 SDK roadmap
Vue 3, Svelte, Go, and Mobile (iOS / Android) SDKs are deferred to v2 — same posture as Pennant. The bucketing corpus is the machine-checkable contract; whichever language ports next inherits it.