GlowTour.js
Get started

An open-source Shepherd.js alternative

GlowTour.js vs Shepherd.js

Shepherd.js is a mature, framework-agnostic tour library; GlowTour.js is a newer one built around native framework adapters. They differ most in how they integrate with frameworks, how you customize the tour UI, how tours are defined, and how they are licensed.

Feature comparison

GlowTour.js vs Shepherd.js: feature-by-feature comparison
FeatureGlowTour.jsShepherd.js
Vanilla JSNative (custom elements)Native
ReactNative integrationOfficial wrapper
VueNative integrationOfficial wrapper
AngularNative integrationOfficial wrapper
SolidNative integrationGeneric JS API
Framework-agnostic coreYesYes
SSR & hydrationVerified in Next.js, Nuxt, SolidStart, AngularSafe to import, client-side only
TypeScriptYesYes
CSS customizationYesYes
Custom/composable UIFirst-class (composable components)Step options + CSS classes
Custom layoutsYesWithin the step template
Chainable builder APIYes (chainable)No (imperative addStep)
Accessibility (ARIA, focus, keyboard)YesYes
Automated screen reader testsVoiceOver + NVDA, in CINone in its repository
LicenseMITAGPL-3.0 or commercial
  • Built in
  • Possible, with caveats
  • Not supported

Checked in September 2026 against Shepherd.js 15.3.0 and the current GlowTour.js docs. "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.

Framework integrations: official wrappers vs native adapters

Shepherd.js supports React, Vue and Angular through official wrappers maintained by the Shepherd team, which the project describes as wrappers around its core library. A community wrapper exists for Ember.

GlowTour.js ships one adapter per framework that renders the tour with that framework's own components: React, Vue, Angular, Solid, and vanilla custom elements.

Customization model: step options vs composable components

Shepherd steps are configured with options such as title, text, buttons, classes and attachTo, and render into Shepherd's dialog structure (header, text, footer). Its default styles are minimal and meant to be themed with your own CSS classes, per tour or per step.

GlowTour.js exposes those dialog pieces as components you can reorder, replace or wrap, and themes them through --glow-tour-* CSS custom properties.

API ergonomics: addStep() vs a builder

Shepherd builds a tour imperatively: create a Tour, call addStep() for each step, then control it with methods such as start(), next() and back().

GlowTour.js chains steps and step actions in a builder that returns an immutable workflow definition any adapter can run, and accepts a JSON config for tours stored outside your code.

Accessibility and licensing

Both document keyboard navigation, focus trapping and ARIA attributes. Licensing is the sharper difference: Shepherd.js is available under AGPL-3.0 for open source and non-commercial use, with a commercial license required for commercial products and revenue-generating companies. GlowTour.js is MIT licensed.

Should you choose GlowTour.js or Shepherd.js?

  • 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 GlowTour.js if you want native framework adapters, a popover you compose from components, a builder-style API, and an MIT license.

GlowTour.js is newer than Shepherd.js and ships as ESM only. Server rendering is verified for its React, Vue, Solid and Angular adapters; check the compatibility page for the exact versions before adopting it. For every library side by side, see the best open-source product tour libraries.

Sources

GlowTour.js
CompatibilityBuilder APIAccessibility guideSSR guideGitHub
Shepherd.js
WebsiteGitHub