Magiera frames navigation as an early, consequential choice for React Native developers: switching libraries later can mean rewriting much of an app. He reviews the field’s evolution and says the range of solutions reflects how difficult navigation is, with more changes likely ahead.
It all starts with navigation
Speaker
Krzysztof Magiera, a React Native engineer at Callstack who previously worked on Facebook’s React Native team, traces the evolution of React Native navigation and explains how native gestures and screens address performance and resource issues.
NavigatorIOS wrapped iOS’s UINavigationController, but offered limited customization and did not suit Android’s different navigation patterns. The cross-platform Navigator used route configuration and push, pop, and reset commands, but its JavaScript-driven animations could stutter while screens rendered or loaded data. NavigatorExperimental used Animated’s native driver to move transitions off the JavaScript thread, though its name made adoption harder.
Wix’s React Native Navigation created native view controllers for screens, while placing the navigation bar outside the app made some customizations and gestures difficult. Magiera describes React Native Gesture Handler as a way to recognize gestures on the UI thread and connect their results to native-driven animations. React Navigation offers extension points for custom behavior and can use native transitions and back-swipe gestures.
Magiera compares view hierarchies and explains that screens kept in memory can retain images, location tracking, camera sessions, and rendering loops even when they are offscreen. Those views may miss native window lifecycle events that would let them release resources. Native Screens provides screen containers with an active state, keeping only the screens needed for a tab or stack transition active.
Magiera says Native Screens can be integrated with React Navigation by replacing some views with native screen components, without changing app code. He also says it would be included in Expo SDK 30. In his comparison, an Android app pushing many image-heavy screens slows down without Screens, while the version using Screens transitions faster because image views can release resources.
Takeaways
- Compare navigation libraries by their customization needs and migration costs before choosing one.
- Move animation and gesture work to the UI thread when JavaScript activity causes stutters.
- Treat navigation as a lifecycle boundary: offscreen screens may still hold memory, CPU, or system resources.
- Use native screen containers when apps need inactive screens to release resources.
- Check the tradeoffs of native navigation bars, especially when custom bars or interactive dismissal gestures matter.
Mentioned in this talk
Search inside this talk
What was claimed 13
- role atKrzysztof Magiera is member of the React Native team at
Meta
“I got very lucky to be part of the React Native team since the early days of the project.”
YouTube Unverified1 source· Talk
- previously atKrzysztof Magiera previously at
Meta
“Before that, I used to work at Facebook.”
YouTube Unverified1 source· Talk
- uses
“Another thing we did was incorporate Gesture Handler and Reanimated.”
1:49inChanges in React Navigation 5YouTube Verified3 sources· Talk
- integrates withNavigatorIOS integrates with UINavigationController
“NavigatorIOS is: a wrapper around the UINavigationController.”
YouTube Unverified1 source· Talk
- feature
Navigator: Cross-platform implementation with route configuration and imperative push, pop, and reset methods“It was the first cross-platform implementation.”
YouTube Unverified1 source· Talk
- featureAnimated API: Declarative animated values can be run natively instead of in JavaScript
“run it natively instead of in JavaScript.”
YouTube Unverified1 source· Talk
- built
Wix built React Native Navigation
“porting native modules into React Native, like you did with React Native Navigation”
9:00inBackstage InterviewsYouTube Verified2 sources· Talk
- uses
“it used the native driver.”
YouTube Unverified1 source· Talk
- featureReact Native Navigation: Wraps each app container in a native view controller
“our app container is wrapped inside what we call a view controller.”
YouTube Unverified1 source· Talk
- featureReact Navigation: Customizable through extension points that can override default behavior
“giving you a way to override the default behavior if you want.”
YouTube Unverified1 source· Talk
- featureReact Native Screens: Inactive screens can be removed after transitions so views can release resources
“Once the transition is over, we remove the other one.”
YouTube Unverified1 source· Talk
- integrates withReact Native Screens integrates with React Navigation
“You can use it with React Navigation.”
YouTube Unverified1 source· Talk
- featureReact Native Screens: Included in Expo release version 30
“it's also going to be in Expo release version 30”
YouTube Unverified1 source· Talk






