In a browser you get navigation for free: every page has a URL, the history stack remembers where you have been, and Back works. React Native 36,878 gives you only views. A native app's navigation needs code for each of these:
A history stack per navigator. Leaving the cart and coming back finds the catalog scrolled where you left it.
Platform transitions and gestures. Android pops screens with the system Back gesture (predictive back on Android 16, BackHandler); iOS slides screens in from the right and lets you swipe back from the left edge.
Screen lifecycle. A covered screen stays mounted, so it needs focus and blur events to know when to refresh.
Headers, tab bars and drawers that match each platform, including safe-area insets.
Deep links. booknest://book/3 must become a stack with the catalog underneath book 3, so Back makes sense.
React Native once shipped Navigator in core; it was removed in 0.44 (2017), and the community's React Navigation 407,918 took over. Three libraries matter today, all MIT-licensed. Expo Router 6,418 57.0.23 turns files in src/app/ into screens and URLs; it is the default for new Expo 6,418 projects and BookNest's choice. React Navigation 7.4.1 declares navigators in components and fills most existing apps. Wix 630 's react-native-navigation (https://github.com/wix/react-native-navigation 13,176 ) 8.9.0 makes every screen a native root, with its own native setup and no Expo Go 6,418 support. The first two build stacks on react-native-screens 3,732 (https://github.com/software-mansion/react-native-screens 3,732 ), which makes each screen a native container.