
프론트엔드
해외숙소 홈 개편기
두줄요약
해외숙소 홈을 웹에서 네이티브로 개편하며 성능과 사용성을 개선했습니다. 또한 State 관리와 탭 전환 응답 처리 문제를 분리·정리해 유지보수성을 높였습니다.
문제 상황
- 해외숙소 홈이 웹 기반으로 운영되며 화면 관리, 오프라인 미지원, 사파리 엔진 의존성, 성능 저하 문제가 존재
- 최저가 보상 숙소의 도시 혼재, 도시 정보 부재, 최근 검색 시 ATF 아래로 밀리는 사용성 이슈 발생
- ReactorKit State 변수의 무분별한 증가로 역할 파악과 코드 이해 비용이 커지는 문제 발생
- pageSheet 전환 후 Dismiss 시 부모 viewWillAppear 미호출, 탭 전환 시 API 응답 지연으로 이전 리스트가 노출되는 문제 발생
해결 방법
- 해외숙소 홈을 네이티브 화면으로 개편해 성능과 사용성 개선
- State 변수를 역할별로 분리하고 AppModel을 화면 요소와 1:1로 매칭해 계층적으로 관리
- pageSheet 화면에서는 viewDidDisappear 시점에 부모 생명주기 메서드를 직접 호출해 갱신 처리
- RxSwift takeUntil로 이전 API 응답을 무시해 탭 전환 시 데이터 불일치 완화
트레이드오프
- AppModel 구조를 먼저 설계해야 해서 UI 구현 전 고민 시간이 증가
- 부모 생명주기 직접 호출 방식은 수정 범위와 QA 범위를 줄였지만 의존성과 예기치 않은 호출 가능성 존재
- 이전 요청 취소 대신 응답 무시를 택해 구현 단순성은 확보했지만 이상적 해법은 아님
