Sahoo explains that navigation libraries organize pages, connect them, pass data, and manage navigation state and events. React Navigation separates its core routers from primitives such as stack, tab, and drawer views, which are combined into navigators. The modular approach lets teams replace or improve parts independently and adopt community solutions.
Component First Navigation In React Native
Speakers
Satyajit Sahoo, who works at Callstack, and Michał Osadnik, who works with Sahoo on React Navigation, present at React Native EU 2019 on a component first navigation API.
Sahoo says the existing API defines navigators and routes in static configuration outside component rendering. That leaves configuration without access to props, state, or context, making dynamic choices such as an initial route or a set of tabs from server data difficult. Static screen options also make it awkward to connect a header button to a component method.
Sahoo announces React Navigation 5 alpha, where navigators render as components and screens are declared as children. Because configuration runs during render, apps can conditionally choose routes, set an initial route from props, or map fetched tasks into tabs. Michał Osadnik notes that conditional routes make onboarding flows declarative, without manually resetting the stack after login.
Sahoo describes a hooks first design intended to improve type safety and remove higher order component wrappers. Examples include `useNavigation`, `useFocusEffect`, and checking whether a screen is focused. The new TypeScript support offers autocomplete for navigation methods, route names, and parameters, while experimental Redux DevTools integration shows navigation actions and state and supports time travel debugging.
The team planned to maintain the previous React Navigation version and release bug fixes, while offering a compatibility layer to ease migration to the new architecture. Sahoo directs users to reactnavigation.org/next to try the alpha and asks them to report bugs and suggestions.
Takeaways
- Keep navigation state management separate from the views and behaviors that implement stack, tab, and drawer patterns.
- Declare routes inside component rendering when they depend on props, state, context, or fetched data.
- Use conditional screen declarations to express onboarding access rules declaratively.
- Hooks can expose navigation and focus behavior without adding wrapper components.
- For a major navigation rewrite, provide migration support while maintaining fixes for the previous version.
Mentioned in this talk
Search inside this talk
What was claimed 12
- role atSatyajit Sahoo is lead maintainer at React Navigation
“Michał and I work on React Navigation”
YouTube Verified3 sources· Talk
- role atMichał Osadnik is contributor at React Navigation
“Michał and I work on React Navigation”
YouTube Unverified1 source· Talk
- works atSatyajit Sahoo works at
Callstack“I work at Callstack.”
YouTube Unverified1 source· Talk
- featureReact Navigation: Organizes pages, links between them, and passes data between them
“helpers to organize those pages, link between them, pass data between them”
YouTube Unverified1 source· Talk
- featureReact Navigation: Modular architecture separates state management from navigation behavior and primitives
“decoupling state and behavior in a navigation library”
YouTube Unverified1 source· Talk
- featureReact Navigation: core API and state management are implemented in the core packagecore API and state management are implemented in the core package
“The core API is implemented by React Navigation Core.”
YouTube Unverified1 source· Talk
- launchedReact Navigation launched React Navigation 5 alphaalpha
“Today, we’re announcing React Navigation 5 alpha.”
YouTube Unverified1 source· Talk
- featureReact Navigation 5 alpha: Defines navigators and route configuration as components inside render, allowing dynamic configuration from props, state, and context
“all of this is done inside render, which means you have access to props, state, and context”
YouTube Unverified1 source· Talk





