How to Use Expo Router for App Navigation (Without Getting Lost)

DavidDavid July 31, 2026 7 min read
A laptop screen showing a React Native navigation file structure with Expo Router
Original image, App Store Launch Club

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.

Free app-building tips, straight to your inbox

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

David

Written by

David

Founder and app builder

Keep reading

App StoreLaunch

App Store Phased Release: How the 7-Day Rollout Works, How to Pause It, and When to Skip It

App Store phased release rolls a version update out to a random sample of users with automatic updates on over 7 days: 1 percent on day one, then 2, 5, 10, 20, 50 and 100. You can pause it for up to 30 days in total, or release to everyone with one button. Here is exactly what Apple says it does, what it does not do, and how I decide when an Expo app update should use it.

David 8 min
Read article
ExpoClaude Code

How to Add Haptic Feedback to Your Expo App

How to add haptic feedback to your Expo app: install expo-haptics, then call the right method for the moment - selectionAsync for pickers, impactAsync for taps and gestures, notificationAsync for outcomes. Here is the exact mapping, the reason the simulator stays silent, and the one rule that keeps haptics from feeling cheap.

David 8 min
Read article

Ready to build it yourself?

Join App Store Launch Club, the #1 community for building and launching apps, for $9/month.

← Back to the blog