Stack Navigator: điều hướng kiểu push/pop — màn hình mới đè lên màn cũ. Có hai bản: @react-navigation/native-stack dùng UINavigationController (iOS) và Fragment (Android) nên animation, gesture do platform xử lý — nên chọn mặc định; @react-navigation/stack viết bằng JS, tuỳ biến animation được nhiều hơn nhưng nặng hơn. Dùng cho: detail flow, wizard, checkout. Mỗi navigate('X') push thêm screen vào stack, goBack() pop ra.
Tab Navigator (bottom-tabs / material-top-tabs): chuyển ngang giữa các "section" của app — Home / Search / Profile. State của mỗi tab được giữ độc lập (chuyển tab không reset scroll). Dùng cho: navigation chính của app, không phải sub-flow.
Drawer Navigator (drawer): menu trượt từ cạnh — phổ biến trên Android, ít dùng iOS. Dùng cho: app có 5+ section chính không vừa tab bar. iOS HIG khuyến nghị tab bar hơn drawer.
Pattern lồng (nested): thường có Tab navigator chứa các Stack navigator con — ví dụ Home tab có HomeStack với Home screen → Detail screen → Comments screen. Màn cần che cả tab bar (checkout, đăng nhập) nên đặt ở stack gốc bên ngoài Tab navigator.
Lưu ý: lồng quá nhiều tầng navigator làm tăng số lần render và khó cấu hình deep link. v7 có thêm static API (khai báo navigator bằng object) giúp tự sinh type và cấu hình linking. Nếu dùng Expo, Expo Router dựng route theo cấu trúc file nhưng bên dưới vẫn là React Navigation.