ConfigsApr 30, 2026·3 min read

Intro.js — Step-by-Step User Onboarding and Feature Tours

Intro.js provides lightweight step-by-step guided tours and contextual hints to onboard users and highlight features in any web application.

Introduction

First-time users often struggle to discover key features in complex web applications. Intro.js solves this by overlaying step-by-step guided tours that highlight UI elements one at a time with explanatory tooltips. It requires no framework dependency and works with any HTML page, making it a practical tool for onboarding flows, feature announcements, and contextual help systems.

What Intro.js Does

  • Creates multi-step guided tours that highlight elements sequentially
  • Displays contextual hints as persistent floating tooltips on page elements
  • Dims the rest of the page to focus attention on the highlighted element
  • Supports keyboard navigation, progress indicators, and custom buttons
  • Works with dynamically rendered content and single-page applications

Architecture Overview

Intro.js creates an overlay layer that covers the page and cuts out a highlight window around the target element using CSS box-shadow or SVG masking. A tooltip is positioned relative to the highlighted element using computed bounding rectangles. Step transitions scroll the target into view, reposition the overlay, and animate the tooltip. The library maintains an internal step index and fires callbacks at each lifecycle point: before change, after change, complete, and exit.

Self-Hosting & Configuration

  • Install from npm or include via CDN and import the CSS file
  • Define steps inline in JavaScript or as data-intro attributes on HTML elements
  • Customize tooltip position with position: top | bottom | left | right | auto
  • Use onbeforechange and onafterchange callbacks for analytics or conditional logic
  • Theme the appearance by overriding CSS classes or using built-in theme options

Key Features

  • Zero framework dependencies; works with React, Vue, Angular, or plain HTML
  • Floating hints mode for persistent contextual help without a full tour
  • Progress bar and step counter built into the tooltip
  • Skip, previous, next, and done buttons with customizable labels
  • Cross-browser support including mobile touch devices

Comparison with Similar Tools

  • Shepherd.js — similar tour library with Popper.js positioning; Intro.js has a simpler API and built-in hints
  • Driver.js — lightweight alternative focused on highlighting; Intro.js offers more step management features
  • React Joyride — React-specific tour component; Intro.js is framework-agnostic
  • WalkMe — enterprise SaaS onboarding platform; Intro.js is open-source and self-hosted
  • Appcues — no-code onboarding tool; Intro.js is developer-controlled via code

FAQ

Q: Can I trigger tours for specific user segments? A: Yes. Initialize Intro.js conditionally based on user state or feature flags, and store completion status in localStorage or your backend.

Q: Does Intro.js work with single-page applications? A: Yes. You can start tours programmatically after route changes. Use onbeforechange to navigate to the correct page before highlighting an element.

Q: How do I style the tooltips? A: Override the default CSS classes like .introjs-tooltip and .introjs-helperLayer, or apply a built-in theme via the theme option.

Q: Can I use Intro.js in a React or Vue project? A: Yes. Import it in your component and call introJs().start() in a lifecycle hook. Community wrappers like intro.js-react provide component-level integration.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets