첫 페이지 진입 시 push 1회, 이후 모든 전환은 navigate({ replace: true })로 처리해서 히스토리 스택을 항상 [/, /현재페이지](최대 2개)로 유지합니다. 웹뷰에서 history.clear()가 불가능하다 보니, 뒤로가기 한 번에 홈으로 돌아가는 앱다운 흐름을 만들려면 replace가 유일한 방법이었습니다.
React Router 등 SPA 프레임워크에서 흔히 쓰이는 패턴이라 다른 앱에서도 동일 증상이 발생할 수 있을 것 같습니다. 혹시 WebView 환경에서 히스토리 스택을 관리하면서 네이티브 종료 얼럿을 유지할 수 있는 권장 패턴이 있을까요? 현재는 워크어라운드로 useBackEvent + closeView()로 직접 종료를 처리하고 있습니다.
홈버튼 제안을 검토해봤는데, 저희 서비스 구조상 홈버튼만으로는 해결이 어려운 상황이라 공유드립니다.
all-replace가 필요한 이유
저희 서비스는 다단계 퍼널 구조라 push를 사용하면 히스토리 스택이 10개 이상으로 깊어집니다.
이때 Android 하단 시스템 백버튼이 문제입니다. iOS는 setIosSwipeGestureEnabled(false)로 스와이프를 막을 수 있지만, Android 시스템 백버튼은 비활성화가 불가능합니다. 스택이 깊은 상태에서 백버튼을 누르면 이미 완료된 중간 단계 화면들을 다시 거치게 되어 UX가 깨집니다.
홈버튼을 추가해도 "홈으로 가는 추가 경로"가 생길 뿐, Android 백버튼으로 스택을 역주행하는 문제는 그대로 남습니다.
현재 워크어라운드
진입 페이지에서 useBackEvent + closeView()로 종료를 직접 처리하고 있습니다. 동작에는 문제가 없지만, 네이티브 종료 얼럿의 문구나 동작이 변경될 경우 불일치가 생길 수 있다는 점이 아쉽습니다.
요청사항
replaceState() 호출이 네이티브 종료 얼럿 상태를 깨뜨리는 현상은, 다단계 SPA 미니앱에서 흔히 사용하는 패턴에 영향을 주는 플랫폼 이슈로 보입니다. 이 부분에 대한 수정 계획이 있는지 확인 부탁드려도 될까요?