GlowTour.js
Get started

An open-source Driver.js alternative

GlowTour.js vs Driver.js

Driver.js and GlowTour.js both have a framework-agnostic JavaScript core. Driver.js stops there, while GlowTour.js adds native React, Vue, Angular, Solid and vanilla adapters on top. The main differences are framework integration, how you customize the popover UI, and how tours are defined.

Feature comparison

GlowTour.js vs Driver.js: feature-by-feature comparison
FeatureGlowTour.jsDriver.js
Vanilla JSNative (custom elements)Native
ReactNative integrationCompatible, no native adapter
VueNative integrationCompatible, no native adapter
AngularNative integrationCompatible, no native adapter
SolidNative integrationCompatible, no native adapter
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)CSS + DOM hooks
Custom layoutsYesVia onPopoverRender
Chainable builder APIYes (chainable)No (config object)
Accessibility (ARIA, focus, keyboard)YesKeyboard + focus trap, open ARIA issues
Automated screen reader testsVoiceOver + NVDA, in CINone in its repository
LicenseMITMIT
  • Built in
  • Possible, with caveats
  • Not supported

Checked in September 2026 against Driver.js 1.8.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 integration: no native adapters vs native adapters

Driver.js has no dependency on React, Vue or Angular and can be used alongside any of them, but it ships no native adapter for those frameworks. In a framework app you call driver() by hand from effects or lifecycle hooks, and it manages its own popover DOM outside the framework's rendering.

GlowTour.js ships a native integration for each: React components, Vue components and Angular standalone components, plus Solid and vanilla custom elements, all driven by the same core engine.

UI customization: CSS and DOM hooks vs composable components

Driver.js is highly customizable. Its popover exposes stable CSS classes such as .driver-popover-title and .driver-popover-footer, the popoverClass option adds your own classes globally or per step, and the onPopoverRender hook hands you the popover's DOM (title, description, footer, buttons) to add custom buttons or markup.

GlowTour.js takes a composition approach: the popover is assembled from primitives such as Root, Popover, Header, Content, Footer and trigger components, so a custom layout is ordinary component code rather than DOM changes after render. Theming goes through the CSS custom properties prefixed --glow-tour-*.

Defining tours: config object vs builder API

Driver.js tours are a configuration object with a steps array, controlled with methods such as drive(), moveNext() and highlight().

GlowTour.js uses a chainable builder (tour.create().step().do().wait().build()) that can also sequence work between steps, such as waiting for an element or a condition. The same tour can come from a JSON config when it is stored outside your code.

Accessibility and licensing

Both render the popover as a dialog, trap focus inside it and support keyboard navigation. Driver.js still has open accessibility issues, though, including reports of a duplicate banner landmark, popover content without an ARIA label and ARIA attributes removed at runtime. GlowTour.js documents the same ARIA semantics, keyboard shortcuts and focus restoration in every adapter. Both are open source under the MIT license.

Should you choose GlowTour.js or Driver.js?

  • 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 GlowTour.js if you want first-party React, Vue and Angular integrations, a popover you compose from components, and a builder-style API.

GlowTour.js is newer than Driver.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
Driver.js
Theming docsGitHubOpen accessibility issue #434