목록 보기
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 등 보조 계층 도입

적용해볼 점

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

다음 읽기

#Android 주제를 이어서 읽기

키친보드 안드로이드 앱 Jetpack Compose 도입기

키친보드 안드로이드 앱에 Jetpack Compose를 도입한 배경과 장단점을 정리했습니다. 실무 적용 팁으로 MVI, Modifier 확장, 테스트 자동화 방법도 함께 공유했습니다.

spoqa
spoqa
프론트엔드

댓글 0개

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

댓글을 불러오는 중...