User onboarding built
for SolidJS
Flows works alongside SolidJS signals and SolidStart. Add user onboarding without disrupting your reactivity model.

Trusted by leading engineering, product, and design teams
How Flows powers SolidJS user onboarding
Flows initializes client-side and works alongside SolidJS's fine-grained reactivity. Trigger onboarding workflows from effects, route events, or user actions without disrupting your signal graph.
Product tours.
Guide users step-by-step through your product with tooltips, modals, and hints that feel native to your app.
Embeddable components.
Embed interactive content directly inside your app layout: checklists, empty states, and contextual guides without floating overlays.
Custom components.
Use your own design system and component library to build adoption experiences that match your product's look and feel exactly.
Localization.
Deliver workflow content in any language to reach a global user base.
User targeting.
Target specific users or segments with AND/OR logic to show the right experience to the right person.
Analytics.
Track workflow performance with built-in analytics. Measure completion rates, drop-off, and engagement across all your adoption experiences.
Designed for unlimited customizability
Flows is designed to be a “Headless product adoption platform”. We’ll focus on user state problems, so you can focus on your own product.
Frequently asked questions
Initialize the Flows SDK inside an onMount callback or a root-level effect and pass user identity and properties. Flows evaluates targeting rules independently and triggers the right onboarding workflow without adding reactive primitives to your own signal graph. See the SolidJS installation guide for step-by-step instructions and code examples.
Yes. Initialize Flows inside an onMount method to ensure it runs in the browser. SolidStart route transitions are detected automatically, so onboarding steps can trigger on specific page visits without custom router hooks.
Yes. Flows is headless. You can use your own SolidJS components and Flows controls when they appear. Your reactivity model, stores, and component patterns stay exactly as they are.
Flows manages its own internal state independently from your signal graph. If you need to, you can listen and react to workflow changes in your SolidJS components with supplied Flows methods.
Pass user properties (like plan, createdAt, or custom attributes) when initializing Flows. Targeting rules are defined in the Flows dashboard and evaluated locally, so new users get onboarding flows while returning users are automatically skipped. See the guide on targeting only new users.
Build better SolidJS user onboarding today
Flows works with fine-grained reactivity, not against it. Add onboarding to your SolidJS app without compromising performance.


