Embed a setup checklist in React
A first-run checklist belongs inside the authenticated product, not on a marketing page. Bootstrapware Onboard is that embed: mount it where you already know the user.
Install
pnpm add @bootstrapware/onboard
Import styles once. Render in a client boundary. Pass the real session id — never invent user.id.
Path A — local
import { Onboard, createLocalAdapter, SAAS_FIRST_RUN_ITEMS } from "@bootstrapware/onboard";
import "@bootstrapware/onboard/styles.css";
<Onboard
user={{ id: session.user.id, name: session.user.name }}
workspaceKey={workspace.id}
context={{ role: membership.role, plan: workspace.plan }}
facts={{ hasBilling: billingConnected }}
items={SAAS_FIRST_RUN_ITEMS}
adapter={createLocalAdapter({ storageKey: "setup" })}
/>Call completeStep from your app when users finish real actions, and pass facts so the widget reconciles on mount.
Path B — Hosted
Omit adapter and items. Pass flowId + publishable key. Live Hosted needs authorToken from your BFF.
<Onboard
flowId="flw_..."
publishableKey={process.env.NEXT_PUBLIC_BSW_ONBOARD_PUBLISHABLE_KEY}
user={currentUser}
workspaceKey={workspace.id}
authorToken={authorTokenFromBff}
/>Where to put it
- Dashboard home after login
- A /settings/setup page
- An empty-state panel until required steps are done
Dismiss hides without 100% progress. Snooze tucks it away. This is not a DAP: no tours, no MAU tax, no public checklist URL.
Related: Quickstart · Next.js · AGENTS.md · Demo