Coachmark
Unstyled React primitive for product tours, built on Base UI Popover
Tier B · UsefulPrimitiveComponent Librarysglza.xyz

A single-purpose headless library by sglza that gives you the compound parts of a product tour — Root, Trigger, Backdrop, Step, Positioner, Popup, Arrow, Stepper, Title, Description, Previous, Next, Close and Viewport — with no styles of its own. It sits on Base UI's Popover, so you inherit collision detection, anchoring and focus management, and it adds the two things a tour needs that a popover does not: explicit step order and a detached trigger, so one popup slides between targets instead of unmounting and remounting. Motion states (entering, exiting, repositioning, idle) are exposed as data attributes on the backdrop, positioner and popup, and out-of-view targets are scrolled into view automatically. The docs site ships live playgrounds with both Tailwind and CSS Modules implementations, plus a View as Markdown link on each page.
pnpm add coachmarkFor an agent
Reach for this instead of Driver.js, Shepherd or Intro.js when the app already uses Base UI or Radix and you want the tour to inherit the project's own popover styling rather than fight a themed widget — it ships zero CSS, so budget real time for styling the popup, backdrop and spotlight yourself. The detached-trigger behaviour is the reason to pick it: one Popup animating between targets instead of a remount per step, driven by the entering/exiting/repositioning data attributes. It is small and young (37 stars), so pin the version and read the source before shipping it into anything load-bearing.
Why it is here. Product tours are the one surface almost every UI kit skips, and this is the rare take that treats them as a composable primitive rather than a drop-in widget you have to skin around.
Facts
- License
- MIT
- Pricing
- Free, Open source
- Framework
- React
- Styling
- Not applicable
- Distribution
- npm package, GitHub repository
- Platform
- Web
- Content type
- Code
- Agent readiness
- Structured documentation, Readable open source
- Accessibility
- Built on accessible primitives, Focus management and visible focus, Accessible
- Maturity
- Beta
- GitHub stars
- 37
- Package
- coachmark
Components it ships
14 totalHelps you build
3Notable for
- Built on Base UI Popover
- Detached triggers reposition one popup across steps
- Motion states as data attributes
- Completely unstyled
- Docs pages offer View as Markdown
Provenance
Verified 2026-08-15. HTTP 200. https://sglza.xyz/coachmark (WebFetch + raw HTML via curl), https://github.com/sglza/coachmark
Also in Component Libraries
6- Ark UI · 49 headless components with one API across React, Vue, Solid and Svelte
- Astryx · Meta's open-source React + StyleX design system, 150+ components and 42 templates
- Chakra UI · 114 accessible React components with a token-driven styling system
- Coss UI · Cal.com's design system: 60 Base UI primitives shipped as a shadcn registry
- daisyUI · 68 pure-CSS Tailwind components as semantic class names, MIT, with 35 built-in themes
- GPUI Component · 60+ Rust desktop UI components for GPUI, with a 200K-line code editor and charts