Ship a winning landing page without touching the dashboard.
Splitstream connects to your repo, generates conversion-optimised variants, splits live traffic 50/50 between control and challenger, and merges the winner to main when you approve. Real PRs, real version control, no DOM overlay.
Authorise the Splitstream GitHub App on a single repo, the Vercel integration on the project that deploys it, and your PostHog project for conversion tracking.
Splitstream opens a one-time PR adding a small middleware (Next.js) or client snippet (Vite/React) plus a PostHog tag for the variant cookie. You review and merge it.
Splitstream reads your landing page and writes a variant. The change passes lint, typecheck, and build before a PR is opened. Vercel auto-builds the preview deployment.
Production traffic splits 50/50 between your main branch (champion) and the variant preview (challenger). Bots always see the champion.
When a winner is statistically significant and the guardrails are clean, you click approve and Splitstream merges the variant PR. Auto-rollback is available within seven days.
Scoped to one repo. Reads source, opens PRs, never force-pushes, never modifies protected branches.
Read-only. Used to find the preview deployment URL of each variant PR so the middleware knows where to rewrite B traffic.
Used to query conversion counts via HogQL, grouped by the splitstream_variant property. We never read individual events.
- splitstream-tracking: client snippet that mints a session cookie, sends pageviews to Splitstream, exposes window.splitstream.track() for manual events, and assigns the 50/50 A/B variant cookie.
- Layout / _app / main hook: mounts the tracking snippet on every page.
- Variant routing is in-bundle on the landing page (added by each variant PR), so no middleware, edge function, or traffic-splitter is installed.
One PR, opened against the branch you choose. You review, merge, deploy normally. Every subsequent variant is a new PR. Never a force-push, never a direct commit.
No. Splitstream only opens PRs. Merging is always a human action by a workspace owner or admin. Auto-rollback uses revert PRs, also requiring approval unless you opt into automatic rollback for production-down guardrail breaches.
Running experiments freeze: the middleware keeps respecting whatever cookie a visitor already has, but no new assignments and no winner promotions occur until you reconnect or end the experiment.
Yes. Vite + React is supported. The trade-off is that the split runs client-side, which means B-cohort visitors briefly see your main URL before being redirected to the variant preview URL. Server-side rewrite (transparent to the visitor) is only available on Next.js today.
On the same landing page, no. That's by design, to keep the statistical model honest. Across different landing pages, yes.
Ready when you are.
Onboarding takes about five minutes. Most of it is GitHub and Vercel asking permission to do read-only things on your account.