The Unreleased section lists changes merged for the next release. Once it ships, these entries move under a versioned heading.
<dialog> with a transform or filter now stay next to their element, also after the dialog reopens. (#627)divs instead of header and footer landmarks, and the centered dummy element gets no aria attributes. (#434)launcher: false on checklists drops the floating launcher, for pages that open the panel from their own button with open() or toggle(). Closing the panel hands focus back to whatever opened it.<dialog> now render inside that dialog, so they show above a modal opened with showModal() instead of behind it. (#625)driver.js/checklist entry (with dist/checklist.css). Items start a tour, follow a link or run an action, and are ticked when the user finishes the tour, or by completeWhen and complete(), or by the user with allowManualComplete. Progress comes in through completed and goes out through onProgress; onEvent reports everything for analytics. It sits in any corner of the screen (position, offset), adapts to phones, and can show a different title and launcher text once everything is done. See the Checklists guide, and Checklist Themes for ready-made themes.reason in the options of onDestroyStarted, onDestroyed and the onDeselected that runs on destroy, telling apart a finished tour ("done") from one that was closed ("close", "escape", "overlay"), replaced by another instance ("replaced") or ended from code ("api"). A destroy() called from a hook keeps the reason of the user action that started it. The DestroyReason and HookOpts types are exported.:focus-visible), so it no longer opens dark after a tour is started with a mouse click.closeBtnLabel (driver and step level) to set the close button’s aria-label, for translated tours. Defaults to Close. (#623)overlayClickBehavior: "none" to ignore overlay clicks while Escape and the close button still close the tour. (#435)waitForElement waits for the next step’s element, so a stale step no longer stays on screen. (#578)onDeselected and onDestroyed but not onDestroyStarted.destroy() on an instance that is not active is now a no-op instead of tearing down another instance’s tour. (#504)aria-controls, aria-expanded and aria-haspopup are restored when the highlight moves on or the tour ends, instead of being removed. (#495)onDeselected now fires when moving between two steps on the same element, or between two steps without an element.disableButtons now applies to tour steps. It used to be ignored during a tour. A step’s own disableButtons still replaces it.driver.js/hints, ~5KB gzip. Guide. (#363)advanceOnClick (driver and step level) to advance the tour by clicking the highlighted element itself. (#606)waitForElement (driver and step level) to wait up to N ms for a step’s element before treating it as missing. (#606)sideEffects field in package.json for better tree-shaking.skipMissingElement: the last reachable step now shows Done and runs onDoneClick; step queries like isLastStep() account for skips. (#616)skipMissingElement option (driver and step level) to skip a step whose target element is specified but not in the DOM, instead of showing the centered fallback popover. Element-less steps are never skipped. (#489, #395)index on the options passed to every hook, holding the currently active step index (same value as driverObj.getActiveIndex()). (#490)--driver-popover-font-family CSS variable to set the popover font in one place, without overriding each text element individually. (#607)"Helvetica Neue", …) instead of the browser’s default sans-serif. An internal rule had been shadowing the intended font. Set --driver-popover-font-family to use your own.driver() call keeps its own config, steps and state, so creating a second instance no longer overwrites the first. (#571)animationDuration config to control how long the highlight transition takes. (#104)allowScroll config to lock body scroll while a tour is active.onDoneClick hook, fired when the done button on the final step is clicked. (#500)data property on a step for passing arbitrary data, accessible from hooks for custom per-step logic. (#539)driver-popover-footer-btn class instead of the .driver-popover-footer button selector. Buttons you add through onPopoverRender no longer inherit the default styling automatically. Add the driver-popover-footer-btn class to opt in, or leave it off to apply your own styles. The built-in next/previous buttons carry the class out of the box. (#555)onPopoverRender now receive their own click events. Only the built-in next, previous, and close buttons have their default action intercepted by the library.driver-popover-side-* and driver-popover-align-* classes so you can target its position from CSS, and the arrow positioning was rewritten for more accurate placement.onDriverClick that left handlers attached after the tour was destroyed. (#452):has() selector for broader browser compatibility. (#586)removeChild DOMException when re-rendering a popover whose wrapper was already detached from the DOM. (#572)highlight() popover did nothing when clicked. It now closes the popover by default, respecting allowClose and any custom onCloseClick. (#444)getNextStep method on the driver API. (#420)driver-popover-done-btn class on the next button when it acts as the done button on the final step. (#610)onDestroyed hook now receives the final tour state. (#553)onNextClick now fires when advancing the tour through an overlay click. (#576)For the release notes of other versions, see the GitHub releases page.
Driver.js 1.x is a major release with a new API and architecture. See the Migrate to 1.x guide for a step-by-step walkthrough of the import, configuration, and API changes.