Framer Motion 전환과 scrollRestoration 충돌 문제 해결 fix : Double rAF 기반 스크롤 복원
브라우저는 최적의 사용자 UX 위해, 상세 페이지에서 '뒤로 가기'를 했을 때 이전 스크롤 위치를 자동으로 복원하는 기능을 갖추고 있다. 덕분에 사용자는 리스트의 탐색 흐름을 끊김 없이 이어갈 수 있으며, 이를 기술적으로 지원하기 위해 history.scrollRestoration API를 지원한다.페이지 간 경계가 명확한 SSR환경이면 모르겠지만 SPA은 구조적으로 브라우저가 스크롤을 복구하려는 시점과 리액트가 화면을 그리는 시점이 어긋나서 race Condition이 발생하는지 스크롤이 엉뚱한 곳으로 튀는 현상이 있다. 때문에 SPA 환경에서는 스크롤 복구 로직을 따로 구하는 경우가 많다.내가 쓰는 스크롤 복구 방법우선 브라우저의 복구 Api를 안쓰겠다고 설정해준다. 복구 값은 auto가 기본 값이기 때문에 manual로 수동으로 변경하겠다고 설정해둔다. if ("scrollRestoration" in window.history) { window.history.s