Navigation
사용자가 원하는 작업을 진행하기 위한 화면 간 이동을 의미합니다.
Types of navigation
Lateral navigation
같은 레벨의 화면 간 이동
Forward navigation
하위 레벨 화면으로의 이동
Reverse navigation
시간순 또는 hierarchy 반대 방향 화면으로의 이동
Lateral navigation
Lateral navigation은 같은 레벨의 화면 간 이동입니다. 앱에서는 최상위 레벨의 모든 화면에 접근할 수 있는 주요 navigation component가 반드시 있어야합니다.

이러한 navigation component는 lateral navigation은 navigation drawer, bottom navigation bar, tabs 이며, 도달하려는 화면의 레벨이나 개수에 맞추어 적용합니다.
Component
화면 종류
화면 개수
Navigation drawer
탑 레벨
5 이상
Bottom navigation bar
탑 레벨
3-5
Tabs
모든 레벨
2 이상
Forward navigation
Forward navigation은 다음 세 가지 이동 중 하나의 형태를 따릅니다.
-
Downward : 상위 레벨의 화면에서 하위 레벨의 화면으로 이동 (e.g. List, 링크)
-
Sequential : 앱 탐색 flow 상에서 일련의 순서에 따른 화면이동 (e.g. 구매 후 체크아웃 프로세스)
-
Direct : 한 화면에서 링크 등을 통해 다른 화면으로 바로 이동 (e.g. 검색, 링크)
Reverse navigation
화면 간 반대 방향으로 이동하는 것을 의미합니다. 사용자가 이동한 순으로 이전 화면으로 이동하거나, 앱 구조 상에서 상위 레벨의 화면으로 이동할 수 있습니다. 

Reverse chronological navigation (back navigation)
사용자가 최근 본 화면 history의 역방향으로 이동하는 것을 의미합니다.
device back button은 항상 reverse chronological navigation으로 이동합니다.
Upward navigation (up navigation)
홈이나 최상위 레벨의 화면에 이를 때까지 앱 구조 상에서 한단계 윗 레벨로 이동하는 것을 의미합니다. 
Downward forward navigation 진입 후 상단 navigation bar의 back button 선택 시, upward navigation으로 이동합니다.
Considerations
Reverse navigation 구현 시에는 사용자 경험을 최적화 하기위해 다음과 같은 사항을 고려하여 디자인합니다.
- 이전 화면으로 돌아갈 때에는, 기존에 스크롤 되어있는 위치를 유지합니다.
- 이전으로 돌아갈 화면에 더이상 존재하지 않는 경우에는, 사용자에게 상황을 명확하게 메시지로 알려줍니다.
- 상위 레벨 화면으로 이동하려고 할 경우에는 어떤 화면으로 돌아가게 될 사용자가 인지할 수 있어야합니다.