@@ -2,7 +2,13 @@ import { Tabs, TabsContent } from "@radix-ui/react-tabs";
22import { useNavigate , useRouter , useSearch } from "@tanstack/react-router" ;
33import { DatabaseZapIcon , XIcon } from "lucide-react" ;
44import { AnimatePresence , motion } from "motion/react" ;
5- import { useCallback , useEffect , useRef , useState } from "react" ;
5+ import {
6+ useCallback ,
7+ useEffect ,
8+ useLayoutEffect ,
9+ useRef ,
10+ useState ,
11+ } from "react" ;
612import { steps } from "@/data/tutorial" ;
713import { useScrollShadow } from "@/hooks/use-scroll-shadow" ;
814import { cn } from "@/lib/utils" ;
@@ -188,15 +194,15 @@ function FloatingWindow({
188194 ] ,
189195 ) ;
190196
191- // Restore scroll position on mount
192- useEffect ( ( ) => {
193- if ( tutorialData . tutorialStep ) {
194- const saved = tutorialData . scrollPositions [ tutorialData . tutorialStep ] ;
197+ // Restore scroll position on step change (useLayoutEffect to avoid flicker)
198+ useLayoutEffect ( ( ) => {
199+ if ( activeStep ) {
200+ const saved = tutorialData . scrollPositions [ activeStep ] ;
195201 if ( saved && scrollRef . current ) {
196202 scrollRef . current . scrollTop = saved ;
197203 }
198204 }
199- } , [ tutorialData ] ) ;
205+ } , [ activeStep , tutorialData . scrollPositions ] ) ;
200206
201207 // Save scroll position on scroll
202208 const handleScroll = async ( ) => {
0 commit comments