Codebase Tour Checklist
A tiered checklist for where routes, features, native config, and CI live in an Expo SDK 57 app - use on day two with a buddy, not as a solo scavenger hunt.
Search across all documentation pages
A tiered checklist for where routes, features, native config, and CI live in an Expo SDK 57 app - use on day two with a buddy, not as a solo scavenger hunt.
features/orders/) with your repo's real names - grep if README is stale.✗ to platform lead.You can run Metro and find the home screen without asking Slack.
Repository entry README - clone command, Node version, npm ci vs pnpm, link to Slack channels.
engines.node, #mobile or #app channel, link to EAS projectpackage.json scripts - how lint, typecheck, test, and start are invoked.
expo start, typecheck, lint, test - same scripts CI callsSDK pin - expo, react, react-native versions match SDK 57 matrix.
"expo": "~57.0.4", "react": "19.2.3", "react-native": "0.86.0"npx expo-doctor passes on clean cloneapp/ directory - file-based routes (Expo Router).
_layout.tsx, index.tsx, (tabs)/ or route groupsRoot layout app/_layout.tsx - providers, fonts, splash, root navigator.
Stack / Tabs from expo-routerapp.config.ts or app.json - bundle IDs, icons, plugins, extra for env.
ios.bundleIdentifier, android.package, plugins: [], extra.eas.projectIdEnvironment template - .env.example with EXPO_PUBLIC_* vars documented.
EXPO_PUBLIC_CONTRIBUTING.md - branch flow, commit style, PR template, preview build label.
needs-preview label rules, CODEOWNERS mention, conventional commitsYou can trace one user action from tap to network.
Feature folder convention - where screen logic lives outside app/.
features/<name>/screens|hooks|api|components/src/modules/, FSD entities/ + features/Shared API client - single HTTP wrapper with auth headers and base URL.
shared/api/client.ts, lib/api.ts, or createApiClient() factoryordersApi.getById → client.getAuth/session gate - how signed-out users are redirected.
Redirect in app/_layout.tsx, (auth)/ route group, or useAuth() guardexpo-secure-store pattern)State strategy - what lives in TanStack Query vs Zustand vs context.
useQuery for server data; store only for UI session statefetch inside Zustand actions duplicating query cacheDesign system entry - buttons, typography, theme tokens.
shared/ui/, @/components, or external package importeas.json build profiles - development, preview, production.
developmentClient, distribution: internal, channel per profileTypeScript paths - @/ alias mapping in tsconfig.json.
"paths": { "@/*": ["./*"] }" or monorepo package namesTest colocation - *.test.tsx beside components or __tests__ folder policy.
jest.config.js, jest.setup.ts, jest-expo presetnpm test -- --listTests | headYou can reason about native behavior and debug production-shaped builds.
Config plugins - native changes without hand-editing ios/ / android/.
plugins: ["expo-router", "./plugins/withCustom"] in app confignpx expo prebuild and is CNG adopted?ios/ and android/ presence - managed vs bare vs generated native dirs.
pod install requiredDeep linking config - scheme, universal links, intent filters.
scheme in app config, apple-app-site-association, Android intent filtersPush notifications wiring - token registration and cold-start route.
expo-notifications setup, app/_layout.tsx notification response listenerAnalytics and error reporting - Sentry, Datadog, Amplitude, etc.
AppProviders, captureException usage patternOTA updates - channels and runtimeVersion policy.
expo-updates config, eas update channel names in docsMaestro / E2E folder - smoke flows and when CI runs them.
.maestro/smoke.yml, appId matching bundle identifierInternationalization - locale files and date/number formatting.
i18n/, locales/, expo-localization usageYou know how code becomes a store binary and who to ping when it breaks.
CI workflow location - GitHub Actions, GitLab CI, or EAS Workflows.
.github/workflows/pr-checks.yml, .eas/workflows/PR vs release pipelines - separate triggers and secrets.
pull_request for lint/tsc/test; tags: v* for eas buildEXPO_TOKEN and secrets docs - where robot credentials live (not in repo).
Store submission path - who runs eas submit and TestFlight / Play tracks.
submit profile in eas.json, internal testing doc linksMonorepo boundaries - if applicable, which workspace is the mobile app.
apps/mobile/, packages/ui, turbo.json pipeline filtersCODEOWNERS and on-call - who must approve app/, native, or release changes.
.github/CODEOWNERS, PagerDuty / on-call schedule linkUse this 60-minute agenda with a buddy:
## Codebase tour - <hire> + <buddy> - <date>
### Tier 1 (20m)
- [ ] README clone path verified
- [ ] app/_layout.tsx walked
- [ ] app.config.ts bundle IDs noted
### Tier 2 (25m)
- [ ] Traced: <pick one feature> tap → API
- [ ] eas.json profiles explained
- [ ] Test command run together
### Tier 3–4 (15m sketch)
- [ ] CI PR checks named
- [ ] Preview build label demonstrated
- [ ] Open questions logged below
### Open questions → doc PRs
1.
2.Update your team wiki with a path map table. Send a doc PR adding a ## Repository map section to README linking real folders.
Awareness only in week one - "PR checks live here, releases tagged there." Hands-on release duty comes after first preview build.
Add items for host app entry point, RN bundle URL, and bridge modules - see Brownfield Basics.
app/ routingStack versions: This page was written for React 19.2.3, React Native 0.86.0, and Expo SDK 57 (
expo~57.0.4).
Reviewed by Chris St. John·Last updated Jul 16, 2026