T
TechInsights
목록으로
FrontEnd•2025. 12. 22.

복잡한 검색 홈, 구조는 유연하게 화면은 부드럽게 개선하기

여기어때
여기어때 Engineering Team
여기어때

핵심요약

원문 보기

여기어때 앱의 복잡한 검색 화면 구조를 모듈 분리 및 SwiftUI 전환을 통해 개선했습니다. PageTransitionView를 개발하여 탭 이동 시 중간 페이지를 건너뛰는 부드러운 화면 전환을 구현하고, 데이터 변환 로직 분리 등으로 유지보수성을 높였습니다.

여기어때 앱 검색 화면 구조 개선: 모듈 분리 및 SwiftUI 전환

문제점 및 요구사항

  • 기존 문제: 검색 홈과 결과 화면이 단일 모듈에 묶여 책임 모호, 빌드 범위 증가, 의존성 꼬임 발생.
  • 요구사항: 4개의 탭(국내숙소, 해외숙소, 항공, 레저티켓)별 도메인 특성 반영, 공통 기능(최근 검색, 에러 처리 등) 관리, 사용자 경험 개선.

모듈 분리 및 구조 재설계

  • 모듈 분리: GCSearch 모듈을 GCSearchHome, GCSearchResult로 분리하여 책임 명확화 및 빌드 효율성 증대.
  • GCSearchHome 내부 구조: 컨테이너, 공용 컴포넌트, 탭(도메인) 레벨로 계층화하여 확장성 및 독립성 확보.
  • 탭 상태 관리: TabInfoAppModel 프로토콜을 정의하여 각 탭의 상태 모델을 추상화하고, SwiftUI View에서 일관되게 처리.
  • 데이터 변환: 도메인별 Converter를 분리하여 데이터 변환 로직을 위임, 코드 복잡성 및 유지보수 용이성 증대.
  • 단방향 데이터 흐름: SwiftUI 환경에서 ReactorKit 패턴을 유지하여 상태 변경 추적 용이성 및 안정성 확보.

중간 페이지 건너뛰는 페이지 전환 구현 (PageTransitionView)

  • 문제점: 기본 TabView 사용 시 탭 이동 시 중간 페이지가 노출되어 부자연스러운 전환 발생.
  • 해결 방안: PageTransitionView 개발하여 중간 페이지 없이 목표 페이지로 즉시 전환 구현.
  • 주요 기능: 제네릭 View 기반, currentIndex, targetIndex 관리, 슬라이드 및 페이드 전환 애니메이션, 사용자 터치 방지, 콜백 기능.
  • 구현 방식: ZStack을 활용하여 현재 및 목표 페이지만 화면에 노출시키고, offset, opacity 조절을 통해 전환 애니메이션 구현.

결과 및 기대 효과

  • 구조적 개선: 모듈 분리와 계층적 구조 설계를 통해 유지보수성 및 확장성 향상.
  • UX 향상: 부드럽고 빠른 탭 전환으로 사용자 경험 개선.
  • 개발 생산성: SwiftUI 전환 및 단방향 데이터 흐름 적용으로 개발 생산성 및 안정성 증대.
#FrontEnd#Architecture#All
여기어때
여기어때

여기어때 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
아이지에이웍스 AI 에이전트 클레어: Amazon Bedrock 기반 Text-to-SQL/Chart 에이전트로 이룬 데이터 분석 혁신

아이지에이웍스 AI 에이전트 클레어: Amazon Bedrock 기반 Text-to-SQL/Chart 에이전트로 이룬 데이터 분석 혁신

100년 가는 프론트엔드 코드, SDK

100년 가는 프론트엔드 코드, SDK