발견
직접 서비스를 쓰다가 앱 웹뷰의 무한스크롤 피드에서 뒤로가기가 어색하다는 걸 발견했습니다. 신고로 올라온 적 없는 문제였습니다.
처음엔 하나의 버그로 보고 고쳤는데 증상이 남았습니다. 재현 조건을 분리하니 원인이 서로 달랐습니다.
리스트가 최상단으로 튕기는 문제
스크롤할 때마다 위치를 저장하고 있었는데, 페이지를 떠날 때 라우터가 스크롤을 0으로 되돌리는 움직임까지 저장돼 직전 위치를 덮어썼습니다.
반면 복원 쪽은 "0이면 되돌릴 것 없음"으로 넘겼습니다. 저장은 0을 쓰는데 복원은 0을 무시하는 비대칭이 핵심이었습니다.
저장 시점을 스크롤마다가 아니라 이탈 직전 한 번으로 바꿔 해결했습니다.
스와이프 백 시 흰 배경
메모리 문제로 보고 두 차례 시도했습니다. 먼저 content-visibility, 이어서 화면 밖 아이템 언마운트. 둘 다 증상이 남았고, 가설을 기각했습니다.
실제 원인은 스크롤 복원 주체를 브라우저가 아닌 프레임워크로 넘긴 실험 옵션이었습니다. 시스템은 이전 화면 스냅샷을 놓을 위치를 브라우저 히스토리에서 읽는데, 프레임워크가 그 기록을 자기 쪽으로 가져가 참조할 값이 비어 있었던 것입니다.
실기기 콘솔에서 복원 주체만 브라우저로 되돌리자 즉시 해소됐습니다.