Now in open beta

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.

Zero layout shift

SSR-preloaded variants render on first paint. No flicker, no hydration mismatch, crawlable markup out of the box.

Drop-in React component

Wrap any element in <Adaptive>. Define a goal — click, scroll, form submit — and the bandit handles the rest.

Real-time dashboard

Live variant stats streamed over SSE. Promote the winner with one click, or let the bandit keep optimising.

Next.js App Router — wrap your layout, then drop in components
// 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.

Early-stage SaaS

You have one shot at the hero. SentientUI runs a bandit on your CTA, headline, and pricing block in parallel — no experiment manager needed.

Landing page teams

Traffic is too thin for classic A/B significance windows. The bandit adapts in real time and stops wasting impressions on losers.

Next.js App Router teams

AdaptiveRoot preloads assignments server-side. Variants land in the initial HTML — SEO-safe, no layout shift, works with any caching strategy.

Solo founders

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.

ToolModelWhat you give up
LaunchDarkly / StatsigFeature flags — you ship variants, you decide the winnerRequires analyst time to read results and manual rollout decisions
Optimizely / VWOClassic A/B — wait for significance, then actWastes traffic on the loser for the entire experiment window
PostHog experimentsA/B inside your analytics toolCoupled to PostHog; no SSR preloading; no automatic exploitation
SentientUIBandit — learns and shifts traffic to the winner automaticallyNewer; segment-level causal inference is still on the roadmap
Design partner program

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 →
SentientUI — UI that learns what converts