React Navigation

Routing and navigation for React Native and web apps, with stack, tab, and drawer navigators

Library
npm
v7.5.1
24,511 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
96 /100 Excellent
Development Activity 100
Maintenance 96
Community 88
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
84 /100 Excellent
Architecture 90
Code Quality 88
Innovation 84
Learning Curve 72

React Navigation is the de facto standard routing and navigation library for React Native applications, providing a component-based API for building stack, tab, and drawer navigation patterns that feel native on iOS, Android, and web. It is organized as a monorepo of composable packages (@react-navigation/native, native-stack, bottom-tabs, drawer, stack, and more) so apps only install the navigators they actually use.

The library handles deep linking, URL-based navigation on web, state persistence, and TypeScript-typed route params out of the box, making it the default choice recommended by Expo and the wider React Native ecosystem for anything beyond a single-screen app.

What You Get

  • Native-feeling stack navigation (native-stack) backed by platform APIs (UINavigationController/Fragment) for authentic transitions and performance
  • Bottom tab, material top tab, and drawer navigators that compose with any stack navigator
  • Deep linking and URL-based routing configuration shared between native and web builds
  • Full TypeScript support with typed navigation props and route params via generics
  • Static navigation API (createStaticNavigation) for declaring the entire navigation tree in one place with less boilerplate
  • DevTools package for inspecting and debugging navigation state during development

Common Use Cases

  • Building the primary tab-bar + stack navigation shell of a mobile app (e.g. Home/Search/Profile tabs, each pushing detail screens)
  • Implementing authentication flows that swap between an auth stack and an app stack based on login state
  • Supporting deep links and universal links that route directly to a specific screen and params
  • Sharing a single navigation structure between a React Native app and its React Native Web build

Under The Hood

Architecture — The repo is a pnpm/lerna monorepo under packages/, with @react-navigation/core implementing the framework-agnostic navigation state machine (routers, actions, state persistence) and @react-navigation/native layering React Native-specific concerns (linking, back-button handling, container component) on top via NavigationContainer. Navigator packages (native-stack, bottom-tabs, drawer, material-top-tabs, stack) each wrap either a native platform primitive (native-stack uses react-native-screens bindings to native view controllers) or a pure-JS/Reanimated implementation (stack), all consuming the shared @react-navigation/routers package for route-state transitions. Tech Stack — Written in TypeScript (98%+ of the codebase), built with a Babel-based build pipeline via Bob/lerna, tested with Jest and React Native Testing Library, and using react-native-screens/react-native-safe-area-context as peer dependencies for native-stack. The monorepo uses pnpm workspaces and lefthook for git hooks, with an example app under example/ used for manual and Detox-driven E2E testing. Code Quality — Each package carries a src/__tests__ directory with substantial unit test coverage (e.g. native’s tests cover linking, deep-link parsing, static navigation, and hooks like useLinkBuilder); the code favors small, well-named hooks (useLinkTo, useScrollToTop, useBackButton) and platform-specific file extensions (.native.tsx) to isolate platform branching cleanly. API Design — The public API is idiomatic React (components + hooks), with NavigationContainer as the single native-specific wrapper and everything else composed declaratively; TypeScript generics for typed params add some upfront learning curve but pay off with autocomplete and compile-time route safety, and the newer static API (createStaticNavigation) further reduces boilerplate for straightforward navigation trees.

Used by 45 apps in this directory

TypeScript
73%
Apache 2.0

Jitsi Meet

Collaboration · Team Chat · Video Conferencing

30,130

Open-source, end-to-end encrypted video conferencing you can self-host or embed into any web or mobile app.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
TypeScript 73%
Lua 11%
JavaScript 10%
Updated 6 days ago
TypeScript
73%
Apache 2.0

Jitsi Meet

Collaboration · Team Chat · Video Conferencing

30,130

Open-source, end-to-end encrypted video conferencing you can self-host or embed into any web or mobile app.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
TypeScript 73%
Lua 11%
JavaScript 10%
Updated 6 days ago
TypeScript
73%
Apache 2.0

Jitsi Meet

Collaboration · Team Chat · Video Conferencing

30,130

Open-source, end-to-end encrypted video conferencing you can self-host or embed into any web or mobile app.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
TypeScript 73%
Lua 11%
JavaScript 10%
Updated 6 days ago
Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 5 days ago
Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 5 days ago
Python
55%
MIT

LibrePhotos

File Storage

8,111

Self-hosted photo library with AI-powered face recognition, semantic search, and automatic event albums — no cloud required.

View details
84
Repo Health
78
Technical
66
Dependency
Built with
Python 55%
TypeScript 43%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

20,195

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
90
Repo Health
72
Technical
66
Dependency
Built with
TypeScript 93%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

20,195

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
90
Repo Health
72
Technical
66
Dependency
Built with
TypeScript 93%
Updated 5 days ago
TypeScript
53%
MIT

MentraOS

AI Development · Developer Tools

2,391

The open source operating system and SDK that lets developers build one app and run it across smart glasses from Even Realities, Vuzix, Mentra Live, and more.

View details
92
Repo Health
77
Technical
66
Dependency
Built with
TypeScript 53%
Java 16%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers