Merged
Conversation
- update tsconfig "jsx" to react-jsx - update tests
- refactor store
Co-authored-by: Gil Barbara <gilbarbara@gmail.com>
- fix lint errors
- add Vite config for local fixture development - update test-utils
- create deepMerge in modules/helpers
- add tests
- split useJoyrideData into useLifecycleEffect, usePropSync and useScrollEffect - refactor Store to plain object state with frozen snapshots and subscribe
- reorder beacon inner and outer spans for correct rendering
- add sortObjectKeys to helpers
- add scrolling state to the store to coordinate scroll-aware rendering - hide tooltip and spotlight during scroll transitions - pre-scroll document to center custom scroll parents before scrolling within them - fix scroll position calculation for elements in scroll containers - move scroll decision earlier in the lifecycle (READY transition)
- update e2e specs and Playwright config - reorganize snapshot directories from spec-name.spec.tsx/ to spec-name/
- fix hydration warning when tour is not running
- add useTargetPosition hook for the spotlight positioning - automatically disable overlay clicks if spotlightClicks - removes mousemove mechanism for spotlightClicks
- make it stable with useMemoDeepCompare
- step.target accepts RefObject<HTMLElement> and () => HTMLElement | null - add polling in INIT lifecycle (targetWaitTimeout, loaderDelay) - add Loader component + loaderComponent prop shown while waiting
- update Loader to be self-contained
- add tests for Beacon, Loader, Portal and Tooltip - remove controlled tour test - update custom-options test
- migrated from react-joyride-demo
- replace @playwright/experimental-ct-react with @playwright/test
- the step can set any "options" directly
- decouple waiting state from loaderDelay - add beforeTimeout option
- remove codesandbox ci config
- rename BaseProps to SharedProps - move it to types/props
- step:before_hook was being sent before tour:start
- accepts close (default), next and false - rename closeAction to closeButtonAction - rename overlayClickBehavior to overlayClickAction
- add "controls" to onEvent API - replace all individual onEvent call
- add on(eventType, handler) to the hook return
- disableBeacon > skipBeacon - disableOverlay > hideOverlay - disableScroll > skipScroll - disableTargetInteraction > blockTargetInteraction
- fix styles bug with SSR
- replace tsup with tsdown - remove fix-cjs - upgrade dependencies
- add ConfigPanel for live experimentation - update e2e tests to hide the Header
- add docs/architecture.md - add CLAUDE.md
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
V3 is a complete rewrite focused on modern React patterns, smaller bundle size, and a more intuitive API.
Highlights
useJoyridehook — replacesgetHelperswith a proper hook returning controls, state, current step, failures, and event subscriptionstour:start,step:before,tooltip, etc.) withonEvent(data, controls)and selective subscription viaon()before/aftercallbacks for per-step logic@floating-ui/react-domintegrationscrollTargetandspotlightTargetfor independent positioning; targets acceptRefObject, callbacks, and CSS selectorsarrowComponent,loaderComponentBreaking changes
import { Joyride } from 'react-joyride'callbackreplaced byonEventproprundefaults tofalsegetHelpersreplaced byuseJoyride()hookoptions(set globally or per-step)styles.optionstheming moved tooptionspropbuttonsarray (['back', 'close', 'primary'])disableBeacon→skipBeacon,disableCloseOnEsc→dismissKeyAction,floaterProps→floatingOptions, etc.)disableScrollParentFix,styles.spotlight, legacy overlay stylesFull migration guide: https://react-joyride.com/docs/migration
What's new: https://react-joyride.com/docs/new-in-v3
We'd love your feedback! If you run into issues, have questions about migrating, or want to share ideas, join the discussion: #1196