How Expo Router Works
Expo Router is file-based routing for React Native and Expo. Every file inside your /app directory becomes a route. app/index.tsx becomes your home screen (/). app/profile.tsx becomes /profile. app/settings/index.tsx becomes /settings. No configuration file, no route array to maintain. The structure of your files IS your navigation.
- app/index.tsx → home screen
- app/profile.tsx → profile screen
- app/settings/index.tsx → settings screen
- app/[id].tsx → dynamic route, like app/post/42
- app/(tabs)/index.tsx → tab-wrapped home screen
Setting Up Layouts
The _layout.tsx file in any folder wraps all the routes inside that folder with a navigator. To make a tab bar, create app/(tabs)/_layout.tsx and export a Tabs component from it. To make a stack navigator (the back-arrow push pattern), export a Stack component. You can nest these: tabs at the outer level, stacks inside individual tabs.
Common Mistakes
The most common issue is forgetting to wrap your app in the Expo Router entry point. If you created your project with create-expo-app using the Expo Router template, this is handled. If you added it manually, make sure your entry point is correct in package.json. The second most common issue is mismatched file names - Expo Router is case-sensitive and uses the exact filename as the route.
Short, practical drops on app ideas, validating fast, store listings, and passing app review. No spam, unsubscribe anytime.
Frequently asked questions
Do I need to install anything extra to use Expo Router?
If you start a new project with create-expo-app --template, choose the Expo Router template and everything is set up. On an existing project, run npx expo install expo-router react-native-safe-area-context react-native-screens and update your entry point.
Can I mix Expo Router with React Navigation?
Not easily. Expo Router is built on React Navigation under the hood, but mixing them directly in the same project causes conflicts. Pick one and stick with it for a given project.
How do I add a bottom tab bar with Expo Router?
Create a folder called (tabs) inside your app directory. Inside it, create a _layout.tsx that exports a Tabs component. Each file you add in that folder becomes a tab.
Does Expo Router work on the web?
Yes. When you run npx expo start --web, Expo Router maps your file routes to web URLs automatically. This means your app can run on mobile and web from the same codebase.
Last reviewed by David on July 31, 2026


