React Native Screens is a native navigation library that exposes platform-specific navigation container components to React Native applications.
The library solves the problem of inefficient navigation in React Native by providing native navigation primitives rather than JavaScript-based solutions. Instead of implementing navigation containers in JavaScript, it leverages the underlying platform's native navigation capabilities on iOS, Android, tvOS, visionOS, Windows, and Web. This approach delivers better performance and more native-feeling navigation experiences. The library is designed as a foundational dependency for full-featured navigation libraries rather than for direct standalone use, with React Navigation being its primary consumer.
Developers should adopt this library if they are building React Native applications that require performant navigation and are willing to use it through an established navigation framework. The tool suits projects targeting multiple platforms, as it provides consistent native navigation primitives across iOS, Android, tvOS, visionOS, Windows, and Web. On Android, developers need to be aware of a specific implementation requirement: the native View state is not persisted consistently across Activity restarts, which can cause crashes. The README recommends overriding the native Android Activity restart method in MainActivity to discard persisted state and prevent these inconsistencies. iOS installation is handled automatically through auto-linking. The library supports custom Kotlin versions on Android, with a minimum requirement of Kotlin 1.3.50. It also provides dedicated support for React Native's Fabric architecture, with separate documentation and example projects available.
The project maintains active support across multiple React Native versions with documented compatibility tables for both the current and previous major versions. Development includes ongoing Fabric architecture support, reflecting alignment with React Native's default rendering system. The codebase is written in TypeScript, providing type safety for consumers and maintainers.