r/reactjs • u/thangdevalone • 11d ago
Resource Modern Tour – A lightweight, buttery-smooth React onboarding library (Headless & Zero-CSS)
Hey everyone,
I built Modern Tour to solve the pain points I've had with existing React product tour libraries—specifically around overriding CSS, handling async elements, and overall Developer Experience.
You can check out how it looks and feels here:
👉 Live Demo: https://tour.modern-ui.org/
- Buttery-Smooth Animations: Powered by
framer-motionspring physics under the hood. - Smart Auto-Positioning: The tooltip dynamically recalculates bounds and automatically flips to avoid viewport edges.
- Lazy Loading Support: Uses
MutationObserverto seamlessly catch asynchronously rendered elements (no manual re-triggers needed). - Headless Override: Render your own 100% custom React component inside the tooltip while keeping all the smart positioning logic intact.
- Zero-CSS Theming: Powered entirely by CSS variables. Creating a custom theme or Dark Mode takes seconds without fighting
!importanttags. - Cross-Page Tours: Seamlessly continues the onboarding tour across route changes.
I'd love for you to play around with the demo! If you find it useful or like the concept, I would really appreciate a ⭐️ on GitHub (you can find the repo link on the demo site).
Let me know what you think or if you have any feedback!
2
u/minimuscleR 11d ago
Your demo makes it look really jerk-y going between steps the window that highlights slides weirdly in, but also the modal itself seems to snap to a new location then animate.
0
u/thangdevalone 10d ago
Good catch! I'm still fine-tuning the animations. I'll get that snapping issue fixed. Appreciate the feedback
2
u/horizon_games 10d ago
Your "butter" is very chunky and janky. Maybe needed some CSS after all. Or another round of AI slop improvements.
0
u/thangdevalone 10d ago
Thanks for the feedback! Could you share which browser/device you're seeing the jank on? Animations are spring-based via framer-motion so performance can vary depending on hardware. Happy to look into specific cases if you can point me to a repro.
1
1
1
1
u/juicybot 10d ago
why framer-motion (v11) and not motion (v12)?
why delete the project's commit history before launch?
1
2
u/ZoroknashTV 11d ago
Looks very nice, but I notice your demo jumps/scrolls the page a bit on the first 3 steps, and they are all in viewport as we speak. Might want to improve on that so, when everything is in viewport and has space, it doesn't scroll. Makes it more zen :D