Tour Kit Docs — React Onboarding Library
Documentation for userTourKit — install, configure, and build accessible product tours, hints, and onboarding flows in React with shadcn/ui and TypeScript-strict types.
userTourKit is an open-source headless React library for building product tours, onboarding checklists, hints, announcements, and in-app messaging. It ships three packages — a framework-agnostic core under 8KB gzipped, a React component layer under 12KB, and a hints/hotspot layer under 5KB — all under the MIT license. WCAG 2.1 AA accessibility, TypeScript-strict types, and Lighthouse 100 scores come built in. The optional Pro tier adds adoption tracking, analytics, announcements, checklists, media, scheduling, and AI chat as a one-time purchase.
These docs are written for React developers integrating onboarding into a Next.js, Remix, or plain-CRA app, especially teams already on shadcn/ui, Radix, or Base UI. If you're evaluating whether tours are the right pattern at all — versus checklists, in-app messaging, or empty-state guidance — start with the complete React product tour guide and the user onboarding handbook. Otherwise, jump straight to installation below.
Why userTourKit?
Headless First
All logic in hooks. Build your own UI or use our pre-styled components.
Accessible
WCAG 2.1 AA compliant. Focus management, keyboard nav, screen reader support.
TypeScript
Full type safety with comprehensive type definitions.
Tiny Bundle
Core is under 8KB gzipped. Tree-shakeable exports.
Packages
| Package | Description | Size |
|---|---|---|
@tour-kit/core | Headless hooks & logic | < 8KB |
@tour-kit/react | Pre-styled React components | < 12KB |
@tour-kit/hints | Persistent hints/hotspots | < 5KB |
Quick Start
pnpm add @tour-kit/reactimport { Tour, TourStep, useTour } from '@tour-kit/react';
function App() {
const { start } = useTour('onboarding');
return (
<Tour id="onboarding">
<TourStep
target="#welcome"
title="Welcome!"
content="Let's take a quick tour."
placement="bottom"
/>
<button onClick={() => start()}>Start Tour</button>
<div id="welcome">Welcome Section</div>
</Tour>
);
}