Solid-native components
Use Solid components and a Context-scoped tour instance without adding a wrapper around another framework.
Solid
@glowhop/solid-tour is the Solid adapter of GlowTour.js, an open-source product tour library for building onboarding tours, feature walkthroughs and guided tours in Solid.
Solid 1.8+ components with a Context-scoped tour instance, verified for real server rendering and hydration in a SolidStart app.
npm i @glowhop/solid-tour @glowhop/styles-tour25.1 KiB gzipped in total: 0.3 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 Solid lifecycle API. See the full guide for additional setup and customization.
import { Show } from "solid-js";
import { render } from "solid-js/web";
import "@glowhop/styles-tour/default.css";
import { GlowTourDefault, useGlowTour } from "@glowhop/solid-tour";
function TourApp() {
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();
return (
<>
<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>
<Show
when={status() === "active"}
fallback={<button onClick={() => void start(workflow)}>Start tour</button>}
>
<p>
Step {currentStepIndex() + 1} of {totalSteps()} <button onClick={() => void cancel()}>Stop</button>
</p>
</Show>
</main>
<GlowTourDefault tour={tour} />
</>
);
}
render(() => <TourApp />, document.getElementById("app")!);Install the adapter and the default theme with npm i @glowhop/solid-tour @glowhop/styles-tour, then import "@glowhop/styles-tour/default.css" once, in your app entry or the component that renders the tour.
Call useGlowTour() inside a Solid component. It returns the tour instance plus create, start, cancel and the current status as accessors.
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 <GlowTourDefault tour={tour} /> once and call start(workflow) from an event handler. In SolidStart, start it after the targets have mounted in the browser.
Use Solid components and a Context-scoped tour instance without adding a wrapper around another framework.
Use the adapter in server-rendered applications with real render, hydration, and end-to-end coverage.
Choose the ready-made GlowTourDefault UI or compose lower-level primitives with Solid's reactivity.
Install @glowhop/solid-tour and @glowhop/styles-tour, call useGlowTour() inside a Solid component, build a workflow with create(), render GlowTourDefault with the returned tour, then call start() from an event handler.
Yes. The Solid adapter is verified with server rendering and hydration in a SolidStart application. Start the workflow after the target elements have mounted in the browser.
Yes. You can replace the default CSS theme or compose the Solid adapter's lower-level components for complete control over presentation.
25.1 KiB gzipped in total: 0.3 KiB for @glowhop/solid-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 Solid integration guide.