Standalone Angular components
Import GlowTourDefault directly into a standalone component without creating a dedicated NgModule.
Angular
@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.
npm i @glowhop/angular-tour @glowhop/styles-tour28.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.
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);
}
}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.
Add GlowTourDefault to the imports array of a standalone component and call injectGlowTour() in a field initializer. No NgModule is needed.
Describe the onboarding tour with the builder: create("product-tour").step({ id, target, title, content }).build(), one step per element you want to highlight.
Render <glow-tour-default> in the template and call start(workflow) from a template event, such as a "Take the tour" button.
Import GlowTourDefault directly into a standalone component without creating a dedicated NgModule.
Use an adapter distributed in Angular Package Format with partial compilation for Angular 18 applications.
Define reusable tours in TypeScript and start them from normal Angular template events.
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.
Yes. GlowTourDefault is imported directly in the component imports array, so no NgModule is required.
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.
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.
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.
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.
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.