UI that learns what converts
SentientUI runs multi-armed bandit experiments on your React components and automatically serves the variant that maximises your goals — without any manual analysis.
SSR-preloaded variants render on first paint. No flicker, no hydration mismatch, crawlable markup out of the box.
Wrap any element in <Adaptive>. Define a goal — click, scroll, form submit — and the bandit handles the rest.
Live variant stats streamed over SSE. Promote the winner with one click, or let the bandit keep optimising.
// app/layout.tsx
import { AdaptiveRoot } from '@sentientui/react/next';
export default function RootLayout({ children }) {
return (
<AdaptiveRoot
components={[{ id: 'hero_cta', variantIds: ['control', 'variant_a'] }]}
serverApiKey={process.env.SENTIENT_API_KEY}
apiBaseUrl={process.env.SENTIENT_API_URL}
apiKey={process.env.NEXT_PUBLIC_SENTIENT_API_KEY}
ingestUrl={process.env.NEXT_PUBLIC_SENTIENT_INGEST_URL}
context="saas"
>
{children}
</AdaptiveRoot>
);
}
// app/page.tsx
import { Adaptive } from '@sentientui/react';
<Adaptive
id="hero_cta"
goal="click"
variants={{
control: <button>Start free trial</button>,
variant_a: <button>Get instant access →</button>,
}}
/>Built for teams that ship fast
SentientUI fits where traditional experimentation is too heavy to justify.
You have one shot at the hero. SentientUI runs a bandit on your CTA, headline, and pricing block in parallel — no experiment manager needed.
Traffic is too thin for classic A/B significance windows. The bandit adapts in real time and stops wasting impressions on losers.
AdaptiveRoot preloads assignments server-side. Variants land in the initial HTML — SEO-safe, no layout shift, works with any caching strategy.
Two lines of JSX. No feature-flag DSL, no YAML config, no data-analyst handoff. You write the variants; the SDK figures out the winner.
How it compares
You already have options. Here is why teams switch.
| Tool | Model | What you give up |
|---|---|---|
| LaunchDarkly / Statsig | Feature flags — you ship variants, you decide the winner | Requires analyst time to read results and manual rollout decisions |
| Optimizely / VWO | Classic A/B — wait for significance, then act | Wastes traffic on the loser for the entire experiment window |
| PostHog experiments | A/B inside your analytics tool | Coupled to PostHog; no SSR preloading; no automatic exploitation |
| SentientUI | Bandit — learns and shifts traffic to the winner automatically | Newer; segment-level causal inference is still on the roadmap |
6 weeks, 1 component, done together
We will instrument one component alongside you, help interpret the first results, and give you the Growth plan free for three months. Five spots open.
Apply as a design partner →