GlowTour.js
Get started

Angular

Angular product tour & onboarding library

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

Standalone Angular 18 components with a DI-scoped root, distributed in Angular Package Format with partial compilation. Drop GlowTourDefault into any standalone component template.

Install

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

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

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

Quick start

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

import { Component } from "@angular/core";
import "@glowhop/styles-tour/default.css";
import { GlowTourDefault, injectGlowTour } from "@glowhop/angular-tour";

@Component({
  standalone: true,
  imports: [GlowTourDefault],
  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>
      @if (glow.status() === "active") {
        <p>
          Step {{ glow.currentStepIndex() + 1 }} of {{ glow.totalSteps() }}
          <button (click)="glow.cancel()">Stop</button>
        </p>
      } @else {
        <button (click)="startTour()">Start tour</button>
      }
    </main>
    <glow-tour-default [tour]="glow.tour" />
  `,
})
export class TourComponent {
  readonly glow = injectGlowTour();

  private readonly workflow = this.glow
    .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();

  startTour() {
    void this.glow.start(this.workflow);
  }
}

How to build a Angular onboarding tour

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

  2. Add GlowTourDefault to the imports array of a standalone component and call injectGlowTour() in a field initializer. No NgModule is needed.

  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 <glow-tour-default> in the template and call start(workflow) from a template event, such as a "Take the tour" button.

Why use GlowTour.js for Angular product tours?

Standalone Angular components

Import GlowTourDefault directly into a standalone component without creating a dedicated NgModule.

Angular-native packaging

Use an adapter distributed in Angular Package Format with partial compilation for Angular 18 applications.

Typed workflow builder

Define reusable tours in TypeScript and start them from normal Angular template events.

Angular product tour FAQ

How do I create a product tour in Angular?

Install @glowhop/angular-tour and @glowhop/styles-tour, import GlowTourDefault in a standalone component, call injectGlowTour() in a field initializer, build a workflow with create(), render glow-tour-default, then call start() from a template event.

Does GlowTour.js support standalone Angular components?

Yes. GlowTourDefault is imported directly in the component imports array, so no NgModule is required.

Can I customize the Angular tour UI?

Yes. Replace the default theme with your own CSS or use the adapter primitives to control the tour presentation while keeping the shared workflow engine.

Is GlowTour.js an alternative to ngx-joyride or ngx-ui-tour?

Yes. ngx-joyride's latest release is from January 2022. ngx-ui-tour is maintained and ships separate packages per UI kit. GlowTour.js uses standalone components, does not depend on the Angular router or a UI kit, and is verified with Angular SSR.

Does GlowTour.js work with Angular SSR?

Yes. The Angular adapter is tested against server rendering and hydration in an Angular SSR production app. Start the tour in the browser once its target elements are rendered.

How big is the Angular product tour library?

28.6 KiB gzipped in total: 3.8 KiB for @glowhop/angular-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/angular-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 Angular integration guide.