목록 보기
KMP/CMP 마이그레이션, 정말 프로덕션에서 가능할까? - 키친보드 앱 마이그레이션 도전기
프론트엔드

KMP/CMP 마이그레이션, 정말 프로덕션에서 가능할까? - 키친보드 앱 마이그레이션 도전기

spoqa
spoqa
2026년 3월 12일

두줄요약

KMP/CMP 마이그레이션에서 Compose Navigation의 WebView 상태 유실 문제를 커스텀 네비게이션으로 해결했습니다. FragmentManager와 UINavigationController로 상태 유지와 결과 전달을 구현하며 프로덕션 적용 가능성을 확보했습니다.

문제 상황

  • 키친보드 Android 앱을 KMP/CMP로 마이그레이션하는 과정에서 프로덕션 적용 가능성 검토
  • Compose Navigation 사용 시 WebView 화면 재구성으로 상태 유실, 폼 데이터 손실, 스크롤 초기화, 불필요한 네트워크 요청 발생
  • 주소 검색, 문서 스캔, 화면별 트랜지션 등 프로덕션 UX 요구사항을 함께 충족해야 하는 제약

원인 분석

  • Compose Navigation의 destination 재구성 특성으로 WebView가 백스택 복귀 시 초기화
  • 단순 화면 전환이 아니라 결과 전달, 상태 유지, 플랫폼별 네이티브 기능 호환까지 필요
  • KMP/CMP의 미성숙한 생태계와 기존 네이티브 구조 차이로 기본 해법만으로는 한계 발생

해결 방법

  • Compose Navigation 대신 Android FragmentManager, iOS UINavigationController 기반 커스텀 네비게이션 아키텍처 설계
  • 각 Fragment/ViewController가 독립적인 Compose 트리를 소유하도록 하여 백스택 상태 유지
  • NavDestination, NavScreen, Navigator 인터페이스, ScreenResult, overridePendingTransition 등 보조 계층 도입

적용해볼 점

  • 기술 스택의 정석보다 실제 사용자 경험을 우선하는 판단
  • 플랫폼 제약이 있을 때 다른 네이티브 해법을 찾아보는 접근
  • 결과 전달, 상태 유지, 동적 트랜지션을 위한 작은 유틸리티 계층의 중요성

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...