GlowTour.js
Get started

Product tour library comparison

The best open-source product tour libraries, compared

The most used open-source product tour libraries for JavaScript are Intro.js, Driver.js, Shepherd.js and React Joyride. GlowTour.js is a newer, MIT-licensed alternative: one TypeScript engine with first-party integrations for React, Vue, Angular, Solid and vanilla JavaScript. This page compares all five on framework support, server rendering, customization, accessibility and license, using each project's official documentation and source code. We maintain GlowTour.js, so every claim links to its source.

What is a product tour library?

A product tour library highlights elements of your interface one step at a time, usually with an overlay that dims the rest of the page and a popover that explains the highlighted element. It is how you build onboarding tours for new users, feature announcements, walkthroughs of a complex form, or in-app help, without a hosted onboarding platform. The differences that matter between libraries are which frameworks they integrate with, whether they survive server rendering, how far you can restyle the popover, how accessible it is to keyboard and screen reader users, and whether the license fits a commercial product.

Feature comparison

GlowTour.js, Intro.js, Driver.js, Shepherd.js and React Joyride compared feature by feature
FeatureGlowTour.jsIntro.jsDriver.jsShepherd.jsReact Joyride
Vanilla JSNative (custom elements)NativeNativeNativeNo
ReactNative integrationCommunity wrapperCompatible, no native adapterOfficial wrapperNative (React-only)
VueNative integrationCompatible, no official adapterCompatible, no native adapterOfficial wrapperNo
AngularNative integrationCompatible, no official adapterCompatible, no native adapterOfficial wrapperNo
SolidNative integrationGeneric JS APICompatible, no native adapterGeneric JS APINo
Framework-agnostic coreYesYesYesYesNo
SSR & hydrationVerified in Next.js, Nuxt, SolidStart, AngularClient-side only, import needs a DOMSafe to import, client-side onlySafe to import, client-side onlySSR-safe, renders client-side only
TypeScriptYesYesYesYesYes
CSS customizationYesYesYesYesYes
Custom/composable UIFirst-class (composable components)Step options + CSS classesCSS + DOM hooksStep options + CSS classesCustom React components
Custom layoutsYesHTML inside the step templateVia onPopoverRenderWithin the step templateYes (custom tooltip)
Chainable builder APIYes (chainable)No (steps option)No (config object)No (imperative addStep)No (steps prop)
Accessibility (ARIA, focus, keyboard)YesDialog role + keyboard, no focus trapKeyboard + focus trap, open ARIA issuesYesYes
Automated screen reader testsVoiceOver + NVDA, in CINone (jest-axe checks only)None in its repositoryNone in its repositoryNone in its repository
LicenseMITAGPL-3.0 or paid commercialMITAGPL-3.0 or commercialMIT
  • Built in
  • Possible, with caveats
  • Not supported

Checked in September 2026 against Intro.js 8.6.0, Driver.js 1.8.0, Shepherd.js 15.3.0, React Joyride 3.2.0. "Native integration" means components shipped by the project for that framework; "Official wrapper" means a project-maintained package around the core library; "Generic JS API" means the library is called from framework code directly. Projects change, so confirm details in the sources below.

Which product tour library should you choose?

All five are open source, but two of them (Intro.js and Shepherd.js) are licensed under AGPL-3.0 with a paid commercial license for closed-source products. The right choice depends on your stack, how far you need to take the UI, and your licensing constraints.

  • Choose GlowTour.js if you want first-party React, Vue and Angular integrations, deep UI composition and a builder-style API, under the MIT license.

  • Choose Intro.js if you want the most widely used vanilla JavaScript tour library, with hints and a large community, and a paid commercial license (or AGPL-3.0) fits your project.

  • Choose Driver.js if you want a lightweight, dependency-free library you can call from any stack and customize through CSS and DOM hooks.

  • Choose Shepherd.js if you want a mature framework-agnostic solution with official framework wrappers, and AGPL-3.0 or a commercial license fits your project.

  • Choose React Joyride if your application is React-only and you want a React-focused library, including support for React versions before 18.

GlowTour.js is newer than the other four and ships as ESM only. Server rendering is verified for its React, Vue, Solid and Angular adapters; see the compatibility page for the exact versions before adopting it.

Framework-specific tour libraries

Some libraries only target one framework. They can be a good fit for a single-framework app; check how recently they were released against the framework version you run.

Vue product tour libraries

  • vue-tour: Vue 2 only (depends on vue ^2.6); latest release 2.0.0, published March 2021.
  • v-onboarding: Vue 3 onboarding component, MIT, actively released (2.12.4, May 2026).
  • vue3-tour: A Vue 3 port of vue-tour; latest release 1.0.3, October 2024.

Angular product tour libraries

  • ngx-joyride: Latest release 2.5.0, published January 2022.
  • ngx-ui-tour: Actively released (17.0.0, June 2026), with separate packages per UI kit such as Angular Material; depends on @angular/router.

React product tour libraries

  • Reactour: @reactour/tour 3.8.0 (May 2025), MIT, React 16 to 19.
  • intro.js-react: Community wrapper around Intro.js (1.0.0, May 2023); Intro.js licensing still applies.

Versions and dates from npm, checked in September 2026. GlowTour.js covers these frameworks with one engine, so a tour behaves the same in each: see the Vue, Angular and React pages.

Sources

GlowTour.js
CompatibilityBuilder APIAccessibility guideSSR guideGitHub
Intro.js
WebsiteGitHubLicense
Driver.js
Theming docsGitHubOpen accessibility issue #434
Shepherd.js
WebsiteGitHub
React Joyride
GitHub