@tour-kit/hints · Free & MIT
Point users to what's new —
without a tour.
Persistent hints, tooltips, and pulsing beacons for React feature discovery. Each hint lives independently until dismissed — no sequence, no modal takeover.
$ pnpm add @tour-kit/hints< 5KB gzipped · MIT licensed · TypeScript strict · WCAG 2.1 AA
Live demo
Click a beacon. It's live.
The pulsing hotspots below are the real @tour-kit/hints components — open a tooltip, dismiss it, and it stays dismissed. No video, no signup wall.
New features shouldn't need a memo
Users don't read release emails and skip full tours. A well-placed pulse is often all the feature discovery you need.
Forcing a tour for one feature
A 6-step walkthrough to highlight one new button trains users to skip every tour you ever ship.
One beacon, zero interruption
A pulsing dot on the feature itself — curious users click, busy users keep working.
Hand-rolled tooltips drift
DIY hint state scatters across components: who was dismissed, where, did it survive the redesign?
Independent, persistent state
Every hint tracks open/dismissed through a storage adapter — dismissed means dismissed, across sessions.
Tooltip libraries fight your stack
Generic tooltip packages bring their own positioning quirks, z-index wars, and CSS resets.
Floating-UI positioning, your styles
Anchored by the same battle-tested positioning engine as the tours — styled with your tokens, shadcn-native.
Three steps to production
No iframe embeds, no script tags, no vendor dashboard. The code lands in your repo.
- 1
Install
One package, zero config.
terminalpnpm add @tour-kit/hints - 2
Compose
Declarative config, headless or pre-styled — the hint renders with your design system.
new-feature-hint.tsximport { HintsProvider, Hint } from '@tour-kit/hints' <HintsProvider> <Hint id="reports-launch" target="#reports-nav" title="Reports just shipped" content="Track usage over time." /> </HintsProvider> - 3
Ship it
The hint lives in your bundle and your version control — no embed script, no vendor dashboard.
Read the docs
Small package, complete feature discovery
Three pillars every userTourKit package shares, plus what makes hints the lightest way to ship discovery.
Headless or pre-styled
Drop-in beacon and tooltip components, or compose HintHotspot and HintTooltip yourself.
WCAG 2.1 AA accessible
Hotspots are real buttons — keyboard focusable, screen-reader labeled, Esc dismisses the tooltip.
The code lands in your repo
MIT licensed, free forever. No embed script, no usage caps, no watermark — fork it if you ever want to.
Four hint variants
Pulsing beacon, count badge, beacon-with-label, and "What's new" pill — pick per feature.
Dismissal that sticks
dismiss() persists per user via storage adapters; hide() pauses for the session. Never re-haunt a user.
Reduced-motion safe pulse
The pulse honors prefers-reduced-motion at both the CSS and render level — static hotspot, same function.
Build your first hint — free & MIT, no signup.
Install the package and ship a beacon today. Pro packages add checklists, announcements, and surveys when you need them.
Free & MIT-licensed — no signup, no credit card.
Feature discovery without the baggage
| userTourKit | SaaS platforms | OSS libraries | |
|---|---|---|---|
| Cost | Free (MIT) | $200–900/mo | Free |
| Bundle impact | < 5KB | External script | 30–50KB |
| Accessibility | WCAG 2.1 AA | ~ | — |
The honest pitch
Why pick a fresh library?
Tour Kit is new — no legacy API debt, no corporate-UX baggage, no AGPL contamination. Built headless-first so you bring your own components and styles. Every chip below is a measured technical fact, not a marketing claim.
- < 8KB core gzipped
- WCAG 2.1 AA
- Lighthouse a11y 100
- TypeScript strict
- >80% test coverage
- MIT core
- React 19 ready
- shadcn-native
See the documentation or source on GitHub.
Hint questions, answered straight
What developers ask before adding beacons to their app.
Tours are sequential — step 1, step 2, done. Hints are independent: each beacon has its own open/dismissed state and lives until the user dismisses it. Use a hint to point at one new feature; use a tour to walk through a flow. The packages compose if you need both.
Yes — MIT licensed, free forever, commercial use included, no watermark, no feature gates. It is one of the three free core packages alongside @tour-kit/core and @tour-kit/react.
Yes. dismiss() persists through a storage adapter (localStorage by default, your API in one line), so a hint never re-haunts a user. hide() closes it for the session only — it returns next visit.
Yes, twice over: the pulse keyframes are wrapped in a reduced-motion media query, and a useReducedMotion hook gates the render-time animation classes. Users who opt out of motion get a static, fully functional hotspot.
Pulsing beacon, notification-count badge, beacon-with-label, and a "What's new" pill — all positionable on any element, all under 5KB gzipped total, all stylable via variants or fully headless composition.
Ship a beacon before lunch.
Free, MIT, under 5KB. The fastest feature-discovery win in your backlog.



