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
