Boba contrasts hand-built navigation, which requires managing views and state, with React Navigation’s ready-made navigators, including stacks, tabs, and drawers. React Navigation uses React Native Screens to connect its API to native screen components.
Native Navigation in JavaScript World
Speaker
Tymoteusz Boba of Software Mansion explains how React Native Screens powers native navigation in JavaScript, at a React Universe Meetup hosted by Callstack.
With the native stack, iOS and Android controllers handle screen changes, animations, and orientation. A JavaScript stack still uses React Native Screens: inactive screens are detached to save memory while their React component state remains preserved. Screens also provides primitives such as Screen, ScreenContainer, and ScreenStack.
Boba traces the flow from navigator routes through Native Stack View and Route View, which apply screen options, context, and header configuration. Codegen components then pass Screen, ScreenStack, and Header Config calls to native code.
Expo Router maps files in an app directory to routes, supports dynamic paths, and uses React Navigation underneath, so it also uses React Native Screens. Boba sees Expo Router’s automatic deep linking and type safety as useful for new projects, while React Navigation remains straightforward and well supported for existing apps. He says a full rewrite is not necessary.
Boba describes React Navigation v7’s planned static configuration API for simpler TypeScript checking and deep linking. React Native Screens work included Android Material 3 support, collapsible headers, form sheets, and a split-screen proof of concept. In the Q&A, he explains that React Freeze can prevent hidden screens from triggering native renders and can be enabled with the Screens `enableFreeze` option.
Takeaways
- Use React Native Screens to detach inactive screens and reduce memory use while preserving React state.
- Choose a native stack when OS controllers should manage screen transitions; a JavaScript stack gives more control over navigation behavior.
- Expo Router adds file-based routes on top of React Navigation, so existing apps do not need a full rewrite to try it.
- Consider enabling React Freeze to avoid native renders from screens that are not visible.
Mentioned in this talk
Search inside this talk
What was claimed 16
- uses
“I maintain React Native Screens”
YouTube Unverified1 source· Talk
- role atTymoteusz Boba is maintainer of React Native Screens at Software Mansion
“I maintain React Native Screens”
YouTube Unverified1 source· Talk
- works atTymoteusz Boba works at Software Mansion
“I work at Software Mansion.”
YouTube Unverified1 source· Talk
- featureRadon IDE: VS Code extension for debugging and inspecting React Native applications
“a brand-new VS Code extension that helps you debug and inspect your React Native application”
YouTube Unverified1 source· Talk
- builtcreated in collaboration
“created in collaboration with Expensify”
YouTube Unverified1 source· Talk
- featureReact Navigation: Provides screen based application structure and multiple navigator types
“It lets you define a screen-based application structure and offers many different types of navigators”
YouTube Unverified1 source· Talk
- uses
“React Navigation uses React Native Screens.”
YouTube Verified3 sources· Talk
- featureReact Native Screens: Provides native screen primitives and manages visible screen content to save device memory
“React Native Screens keeps only the components visible to the user, which saves device memory.”
YouTube Unverified1 source· Talk





