Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Before building screens, map each destination to a URL, decide which screens share navigation behavior, and place layout boundaries only where they provide a real function. In Expo Router, files in the app directory form the route map: file and folder names determine paths, while _layout.tsx files establish the navigation and shared UI for routes beneath them. A planned tree is therefore both a filesystem design and a decision about links, entry points, and back behavior.

Start with destinations and URLs, not components

Write down the places a user can go before choosing folders. Include screens reached by tapping through the app and destinations users may open from a web link, message, notification, or other external entry point. Expo Router turns page files in src/app—or the project’s configured app directory—into routes; the file structure determines URL paths that can also support native deep links. Keep reusable components, hooks, and utilities outside that route directory so they are not treated as routes. See Expo’s core concepts and introduction.

For each destination, record its intended path and expected entry context. For example, a product detail may be opened from a product list or directly from a shared link. That distinction matters: the same page may need to appear inside a tab’s stack when reached in-app, but a deep link must also land in a sensible navigation context.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read the route tree as URL notation

Expo Router’s naming conventions carry meaning. A simple planning sketch might look like this:

src/app/
  _layout.tsx
  index.tsx
  (tabs)/
    _layout.tsx
    index.tsx
    search.tsx
    saved.tsx
    products/
      [productId].tsx
  account/
    _layout.tsx
    index.tsx
    settings.tsx
  modal.tsx

This is only a starting shape; the right tree depends on the paths and flows your app needs. The key notation rules are:

  • A plain file or folder name creates a static path segment. For example, search.tsx corresponds to /search.
  • A name in square brackets is a dynamic parameter. A file named [productId].tsx under products represents a path such as /products/123.
  • A name in parentheses is a route group. It organizes routes and can establish a layout or navigator without adding that group name to the URL. Thus (tabs) is not itself a public path segment.
  • index.tsx is the default route for its directory: the root index serves /, while an index inside a section is that section’s default route.
  • _layout.tsx defines the layout or navigator for routes beneath that directory; it is not a page URL.

Expo documents these conventions in its notation guide. Check the path you intend to expose against the tree before implementation, especially when groups or nested directories make the visible URL less obvious.

Rank #2
Sale
HTML and CSS: Design and Build Websites
  • HTML CSS Design and Build Web Sites
  • Comes with secure packaging
  • It can be a gift option

Choose layout boundaries by navigation behavior

A layout is more than a visual wrapper. It can define a stack, tabs, drawer, or another navigator, and it can host shared providers or app initialization. Give each nested layout a specific job: persistent tabs, a detail stack, a modal flow, a shared header, or another behavior users can recognize. Expo advises against nesting navigators when a parent already provides the needed relationship; extra layers can complicate transitions and back behavior without adding value. See navigation layouts.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Before adding a _layout.tsx, answer two questions: which routes does it own, and what does it contribute that its parent does not? If the answer is only “these files are related,” a route group may be enough; add a navigator only when the relationship needs navigation behavior.

Match navigation patterns to real flows

Many apps use tabs for their primary sections and place a stack inside a tab when that section has multiple levels, such as a list followed by detail pages. That is a useful pattern, not a requirement. Decide what should happen when a person selects a section, opens a detail, follows a link, or presses Back.

Choice Useful when Planning question
Stack A flow moves through pages, such as a list and its details, with a meaningful push/back relationship. Should opening this destination preserve the prior page beneath it?
Tabs Users switch among primary sections that remain available as peers. Which destinations are top-level sections, and what should each tab retain?
JavaScript tabs You want a tab navigator with its available customization and behavior. Does its presentation suit the platforms and interaction model you need?
Native tabs You want platform-native tab presentation where supported by the project’s Expo SDK and guide. Does the installed SDK support the documented import and behavior?
Custom navigator The built-in navigation patterns do not express the needed interaction. Is the specialized behavior worth the additional implementation responsibility?

These options should be selected by URL shape, transitions, shared UI, and platform presentation—not by adding the largest possible navigator hierarchy. Expo’s guides cover common navigation patterns, stacks, JavaScript tabs, and custom navigators.

Rank #4
Sale
Web Design with HTML, CSS, JavaScript and jQuery Set
  • Brand: Wiley
  • Set of 2 Volumes
  • A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers

Native-tab guidance is version-sensitive: the current Expo guide says expo-router/native-tabs is available in SDK 58 and later, while SDK 54–57 use expo-router/unstable-native-tabs. Confirm the project’s SDK and the current native-tabs guide before choosing an import; do not copy an example from a different SDK without checking it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Make shared routes deliberate

Route groups can let a route participate in different layouts or tabs without changing its URL. That can be useful when a shared screen should retain the context of the section from which it was opened, but it creates an important deep-link question: when an external URL arrives without that in-app history, which group and layout should render?

Expo documents group selection behavior for shared routes, including alphabetic selection in one shared-route pattern. Do not assume the context that feels natural during in-app navigation will also be selected for a direct link. Review the shared routes guide, then test the actual entry path and subsequent Back behavior for each shared destination.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Set default routes and entry behavior

Decide what should open at / and at the default of each major section. Use an index.tsx in the appropriate directory, with a route group where a default needs to belong to a particular layout without appearing in the URL. Also decide what should happen when a route is opened directly rather than reached through a button. Expo’s navigation guide explains how routes can be navigated to and linked.

For each externally reachable URL, walk through the expected first screen, active tabs or layout, and behavior of Back. If the destination normally depends on prior in-app state, specify a fallback instead of leaving the direct-entry experience ambiguous.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a route-planning checklist

  1. List destinations. Include in-app screens and pages users may enter through links.
  2. Assign intended URLs. Mark static segments and dynamic identifiers, such as /products/[productId].
  3. Group by shared behavior. Identify screens that share tabs, headers, providers, or a stack; use route groups for organization that should not alter the URL.
  4. Draw the root layout. Decide what the app-wide layout initializes or provides.
  5. Add nested layouts at actual boundaries. State what each one contributes, such as tabs, a detail stack, or a modal flow.
  6. Choose defaults. Define the route for / and section defaults with index routes.
  7. Walk important flows. Check direct URL entry, in-app navigation, and Back, especially where routes are shared across groups.
  8. Keep implementation support files outside the route directory. Once the tree’s URLs and relationships make sense, build screen contents against it.

This sequence is a practical way to apply Expo’s route, notation, layout, and navigation guidance; it is not an Expo-mandated process. The useful outcome is a tree in which every file has a clear route or layout role, and every important URL has an expected entry and navigation context.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.