GlowTour.js
Get started

Vue

Vue product tour & onboarding library

@glowhop/vue-tour is the Vue adapter of GlowTour.js, an open-source product tour library for building onboarding tours, feature walkthroughs and guided tours in Vue.

Vue 3.3+ components with a provide/inject-scoped tour instance. GlowTourDefault drops straight into your template - no manual mounting required.

Install

npm i @glowhop/vue-tour @glowhop/styles-tour

24.9 KiB gzipped in total: 0.1 KiB of adapter over the shared 23.5 KiB engine, plus 1.3 KiB of theme CSS you can replace with your own.

@glowhop/vue-tour on npm · @glowhop/styles-tour on npm

Quick start

A component-scoped integration using the Vue lifecycle API. See the full guide for additional setup and customization.

<script setup lang="ts">
import "@glowhop/styles-tour/default.css";
import { GlowTourDefault, useGlowTour } from "@glowhop/vue-tour";

const { tour, create, start, cancel, status, currentStepIndex, totalSteps } = useGlowTour();

const workflow = create("product-tour")
  .step({
    id: "features",
    target: '[data-tour="features"]',
    title: "Explore features",
    content: "Learn about all the capabilities.",
  })
  .step({
    id: "pricing",
    target: '[data-tour="pricing"]',
    title: "Check pricing",
    content: "See plans that fit your needs.",
  })
  .build();
</script>

<template>
  <main>
    <section data-tour="features">
      <h2>Features</h2>
      <p>We offer guided tours, SSR support, and full keyboard navigation.</p>
    </section>
    <section data-tour="pricing">
      <h2>Pricing</h2>
      <p>Open source and free.</p>
    </section>
    <p v-if="status === 'active'">
      Step {{ currentStepIndex + 1 }} of {{ totalSteps }}
      <button @click="cancel()">Stop</button>
    </p>
    <button v-else @click="start(workflow)">Start tour</button>
  </main>
  <GlowTourDefault :tour="tour" />
</template>

How to build a Vue onboarding tour

  1. Install the adapter and the default theme with npm i @glowhop/vue-tour @glowhop/styles-tour, then import "@glowhop/styles-tour/default.css" once, in your app entry or the component that renders the tour.

  2. Call useGlowTour() in <script setup>. It returns the tour instance plus create, start, cancel and the current status as refs.

  3. Describe the onboarding tour with the builder: create("product-tour").step({ id, target, title, content }).build(), one step per element you want to highlight.

  4. Render <GlowTourDefault :tour="tour" /> once in your template and call start(workflow) from an event handler. In Nuxt, start it on the client once the targets are mounted.

Why use GlowTour.js for Vue product tours?

Native Vue components

Use Vue 3 components and a provide/inject-scoped tour instance that fits the Composition API.

Nuxt-ready integration

Render tours safely in SSR applications and start them after the target UI is available on the client.

Flexible presentation

Start with GlowTourDefault, customize the theme, or compose the Vue primitives for a bespoke experience.

Vue product tour FAQ

How do I create a product tour in Vue?

Install @glowhop/vue-tour and @glowhop/styles-tour, call useGlowTour() in script setup, build a workflow with create(), render GlowTourDefault with the returned tour, then call start() from a Vue event handler.

Does GlowTour.js work with Nuxt?

Yes. Render GlowTourDefault from a client-side component and start workflows only after their target elements are mounted. The Vue adapter is tested against server rendering and hydration in Nuxt.

Can I customize the Vue tour UI?

Yes. Replace the default theme with your own CSS or compose the Vue adapter's primitives when you need to control the popover, overlay, pointer, and navigation.

Is GlowTour.js a vue-tour alternative for Vue 3?

Yes. vue-tour depends on Vue 2 and its latest release is from 2021. GlowTour.js is built for Vue 3.3+ with the Composition API, is verified with Nuxt server rendering, and is actively maintained.

How big is the Vue product tour library?

24.9 KiB gzipped in total: 0.1 KiB for @glowhop/vue-tour, 23.5 KiB for the shared core engine, and 1.3 KiB for the default theme CSS, which you can replace with your own. The core has no runtime dependencies.

Is @glowhop/vue-tour free for commercial use?

Yes. Every GlowTour.js package is MIT-licensed: free for commercial and closed-source products, with no paid tier and no attribution requirement.

Need the complete API and framework-specific setup? Read the Vue integration guide.