Blog
ExpoReact NativeArchitecture

Expo Router: file routes without a maze of underscores

Jafrix System 2026-01-27 7 min read

How we lay out app/, auth, and tabs so new devs find screens in under a minute.

Expo Router rewards convention. The app directory is your route tree. _layout.tsx files define stacks and tabs; use them to group navigation, not to hide logic.

We use route groups like (auth) and (app) so sign-in screens don't share a header with the main product. Shared layouts get nested layouts instead of one giant stack for everything.

Dynamic routes like [id].tsx are for detail screens. Keep data loading in one place: either a loader pattern or a focused hook per screen. Avoid fetching in three parent layouts for the same visit.

Deep links should match the file path. If marketing sends users to /promo/summer, make sure that route exists or redirects cleanly. Nothing worse than a 404 inside the app shell.

Rename files when you rename flows. Git history matters less than a new hire opening app/ and understanding the product map.

“Good systems are mostly boring parts wired together so they don’t fall over on a Tuesday night.”

Jafrix System

JS

Jafrix System

Director of Product Architecture

Designing deterministic systems in a non-deterministic world. Specialists in high-frequency trading engines and global SaaS infrastructure.