--- name: react-native-navigation description: Master React Navigation - stacks, tabs, drawers, deep linking, and TypeScript integration sasmp_version: "1.3.0" bonded_agent: 02-react-native-navigation bond_type: PRIMARY_BOND version: "2.0.0" updated: "2025-01" --- # React Native Navigation Skill > Learn production-ready navigation patterns using React Navigation v6+ and Expo Router. ## Prerequisites - React Native basics (components, styling) - TypeScript fundamentals - Understanding of React context ## Learning Objectives After completing this skill, you will be able to: - [ ] Set up React Navigation with TypeScript - [ ] Implement Stack, Tab, and Drawer navigators - [ ] Configure deep linking and universal links - [ ] Handle authentication flows - [ ] Pass params between screens type-safely --- ## Topics Covered ### 1. Installation ```bash npm install @react-navigation/native @react-navigation/native-stack npm install react-native-screens react-native-safe-area-context # For tabs npm install @react-navigation/bottom-tabs # For drawers npm install @react-navigation/drawer react-native-gesture-handler react-native-reanimated ``` ### 2. Stack Navigator ```tsx import { createNativeStackNavigator } from '@react-navigation/native-stack'; type RootStackParamList = { Home: undefined; Details: { id: string }; }; const Stack = createNativeStackNavigator(); function RootNavigator() { return ( ); } ``` ### 3. Tab Navigator ```tsx import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'; const Tab = createBottomTabNavigator(); function MainTabs() { return ( ); } ``` ### 4. Deep Linking ```tsx const linking = { prefixes: ['myapp://', 'https://myapp.com'], config: { screens: { Home: 'home', Details: 'details/:id', }, }, }; {/* navigators */} ``` ### 5. Type-Safe Navigation ```tsx import { useNavigation } from '@react-navigation/native'; import type { NativeStackNavigationProp } from '@react-navigation/native-stack'; type NavigationProp = NativeStackNavigationProp; function HomeScreen() { const navigation = useNavigation(); return (