nav.navigate(HomeRoute){popUpTo<AuthGraph>{inclusive=true}// login graph 모두 pop
launchSingleTop=true// 같은 destination 재진입 안 함
}nav.popBackStack()nav.popBackStack(route=HomeRoute,inclusive=false)// 특정 destination 까지 pop
🤔 의사결정 기준
상황
권장
신규 Android Compose
navigation-compose 2.8+ + 타입 안전 routes
큰 앱 모듈화
nested graph per feature module
Deep link / 외부 호출
deepLinks block
Multi-platform (KMM)
Decompose / Voyager
Tab + per-tab back stack
rememberNavController 별 또는 BottomNav + saveState
❌ 안티패턴
String route + manual encoding: 옛 패턴. 2.8+ 의 typed routes.
모든 destination 한 NavGraphBuilder: 거대 파일. nested graph 로 모듈 분리.
navigate 후 popBackStack 잊음: 백스택 누적.
ViewModel 에 NavController 주입: lifecycle 불일치 + 테스트 어려움. Composable 에서 callback.
Activity 가 NavController 보유 + Fragment 가 별도: 동기화 깨짐.
deeplink path 안에 user id: 인증 안 된 사용자가 직접 호출 → 권한 검증 필수.
animation 무시: 기본 fade 만 — UX 평범. enterTransition / exitTransition.
🤖 LLM 활용 힌트
@Serializable data class destination + composable + entry.toRoute().