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