feat: Guided Tours Custom Navigation#2340
Draft
camielvs wants to merge 1 commit into
Draft
Conversation
🎩 PreviewA preview build has been created at: |
This was referenced May 29, 2026
Collaborator
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
7f83eb8 to
9899ee2
Compare
84f39e0 to
d6d13ae
Compare
9899ee2 to
a773cce
Compare
d6d13ae to
e97b036
Compare
a773cce to
b9acf61
Compare
3 tasks
e97b036 to
d308ae7
Compare
9b16f8f to
fadf84a
Compare
95b9b2a to
01da4c7
Compare
fadf84a to
5cd15ef
Compare
01da4c7 to
d9c0e95
Compare
5699235 to
607e516
Compare
700a951 to
a9d6f6c
Compare
This was referenced Jun 3, 2026
607e516 to
9db5395
Compare
9e7059e to
7753fca
Compare
07b002a to
2262436
Compare
7753fca to
89a72fe
Compare
2262436 to
d83a715
Compare
89a72fe to
aa3fba7
Compare
d83a715 to
dd40a33
Compare
aa3fba7 to
febd689
Compare
dd40a33 to
47cfe52
Compare
febd689 to
68175d1
Compare
47cfe52 to
606887b
Compare
68175d1 to
aaa1a46
Compare
606887b to
d29cf67
Compare
6b7ed93 to
af8b204
Compare
d29cf67 to
5455cd2
Compare
af8b204 to
7938fe4
Compare
This was referenced Jun 10, 2026
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.

Description
Replaces reactour's default Prev/Next with a custom tour navigation and the interactive-step UX layer that sits on top of it: progress dots, a completion-gated "Next", an action checklist in the popover, and auto-progress. Visible behavior becomes observable once the registry has tours (#2306 onwards).
What's in it
Custom navigation
current/visited/unvisited). Non-clickable — bouncing between arbitrary steps would leave reactour inconsistent on tours with interaction gates.setSteps.Step completion + gated "Next"
TourProgressContexttracks per-step completion (aSetof completed step indices), reset whenever a tour opens.Action checklist
TourStepChecklistrenders the step's required action in the popover and ticks it off —Circle→CircleCheckwith a check animation and strike-through — when complete.tourActionLabeland may embed bold targets (e.g. "Select the Greet task"), rendered viarenderInline(exported fromTourContent). Each interaction's label is authored in the PR that introduces that interaction (feat: Guided Tours Framework (Navigating the Editor) #2299 / feat: Guided Tours Framework (First Pipeline) #2347 / feat: Guided Tours Framework (Subgraphs) #2365).Auto-progress
TourAutoAdvanceadvances ~800ms after a fresh completion — long enough to see the tick register. Steps already complete on arrival (e.g. revisited via Back) stay on a manual click; clicking "Next" advances immediately and cancels the pending auto-advance.File layout
TourNavigation.tsx(TourNavigation,NavButton,GatedNextButton/renderNextButton,TourStepChecklist,TourAutoAdvance, and the module-level visit-tracking helpers).TourPopover.tsxkeeps popover styling/positioning, the viewport clamp bridge, and the completion actions.TourProgressContext.tsxholds the completion state +useTourProgresshook. Tests:TourNavigation.test.tsxandTourProgressContext.test.tsx.Popover polish
Related Issue and Pull requests
Progresses https://github.com/Shopify/oasis-frontend/issues/583
Depends on #2348 (foundation). The interaction detection that drives completion lands in #2299; interaction-specific checklist labels are authored in #2299 / #2347 / #2365.
Type of Change
Checklist
Test Instructions
With a tour registered (use this branch with #2306 on top):
Dots
Checklist + gated Next
Visit-aware Next + revisits
Reset between tours
/learn/tours, start a different one. Completion + visited-max reset for the new tour.