learn

src/app

File-based routes, launch gate to tabs to stacks.

Routes are files: the folder structure is the navigation. The root layout wraps everything in gesture, safe-area, account, and app providers; the tab layout owns the pager, the indicator, and the floating bar; stack screens open as cards and return to their originating tab.

What it owns

  • The launch gate routing first runs and returning users
  • Welcome and onboarding entry screens
  • The five-tab swipeable pager with its floating bar
  • Stack screens for details, history, achievements, search, settings

Files

File list and purposes from the folder README.

FilePurpose
src/app/index.tsxLaunch gate with loading and retry states.
src/app/_layout.tsxProvider stack and route declarations.
src/app/welcome.tsxFirst-run welcome screen.
src/app/onboarding.tsxPersonalization flow host.
src/app/(tabs)/Today, Habits, Tasks, Stats, and Profile tabs.
src/app/habit/[id].tsxHabit detail screen.
src/app/task/[id].tsxTask detail screen.
src/app/statistics/Per-habit summary and month history.
src/app/achievements.tsxAchievements screen.
src/app/search.tsxLocal search screen.
src/app/settings.tsxSettings, backup, export, notifications.

Dependencies

LibraryVersion rangeWhy it is used here
Expo UIDeclared but not used in source~57.0.22Declared but never referenced in any scanned source or config.
Expo vector icons^15.1.1Material community icons in the tab layout.
expo-glass-effectDeclared but not used in source~57.0.4Glass material views; declared but not imported in scanned sources.
expo-imageDeclared but not used in source~57.0.5Image component; declared but not imported in scanned sources.
expo-symbolsDeclared but not used in source~57.0.3Apple SF Symbols; declared but not imported, and iOS is not configured.
Expo Metro runtimeDeclared but not used in source~57.0.16Web runtime support; declared but not imported in scanned sources.
Expo~57.0.27Metro config plus the managed runtime underneath every screen.
expo-constantsDeclared but not used in source~57.0.21App metadata access; declared but not imported in scanned sources.
expo-dev-clientDeclared but not used in source~57.0.19Development build client; native-side, never imported in app sources.
expo-fontDeclared but not used in source~57.0.4Custom font loading; declared but not imported in scanned sources.
expo-splash-screenDeclared but not used in source~57.0.9Launch splash configured in app.json; never imported in app sources.
expo-status-bar~57.0.1StatusBar in the root layout.
expo-system-uiDeclared but not used in source~57.0.4System UI appearance control; declared but not imported in scanned sources.
React19.2.3All screens, providers, and components under src/.
React Native0.86.3Primitives in every screen plus AppState in cloud sync.
Expo Router~57.0.25Route table under src/app with typed route helpers.
react-native-gesture-handler~2.32.0Root view in the app layout plus the swipeable tabs.
react-native-safe-area-context~5.7.0Safe-area providers, hooks, and initial metrics in layouts.
react-native-screensDeclared but not used in source~4.26.0Native screen containers behind the router; never imported in app sources.
Async Storage2.2.0React Native auth persistence in the Firebase setup.
expo-sqlite~57.0.4Versioned schema, migrations, triggers, and per-account files.
expo-clipboard~57.0.2Copy action in settings, loaded on demand.
expo-deviceDeclared but not used in source~57.0.2Device info helpers; declared but not imported in scanned sources.
expo-file-system~57.0.7JSON and CSV export files in settings, loaded on demand.
expo-haptics~57.0.3Haptic cues in interactive components.
expo-linkingDeclared but not used in source~57.0.12Deep link handling; declared but not imported in scanned sources.
expo-notifications~57.0.22Scheduling, permission, and cancellation behind dynamic imports.
expo-sharing~57.0.22Share action in settings, loaded on demand.
expo-web-browserDeclared but not used in source~57.0.3In-app browser sessions; declared but not imported in scanned sources.
NativeWind5.0.0-rc.0Metro preset plus utility classes across screens.
react-native-cssDeclared but not used in source3.1.0-rc.0CSS support layer for NativeWind; declared but not directly imported in scanned sources.
Reanimated4.5.1Animated pager, indicator, and screen transitions.
react-native-workletsDeclared but not used in source0.10.1Worklet runtime behind Reanimated; declared but not directly imported in scanned sources.
NetInfo12.0.1Online detection in cloud sync and account bootstrap.
Google Sign-In^16.1.5Sign-in, reauthentication, and sign-out behind dynamic imports.
Firebase^12.19.0Auth, Firestore reads/writes/listeners, and deletion calls.
React DOMDeclared but not used in source19.2.3Web rendering companion; declared but not imported in scanned sources.
react-native-webDeclared but not used in source~0.21.0Web target support; declared but not imported in scanned sources.
Development and tooling (10)
LibraryVersion rangeWhy it is used here
@types/node^26.6.4Type declarations for Node.js built-ins.
@types/react~19.2.2Type declarations for React.
TypeScript~6.0.3Type checking for the whole codebase.
tsx^4.23.15Runs the node:test suites without a separate build step.
ESLint^9.39.5Lint script and flat config in eslint.config.js.
eslint-config-expo~57.0.2Base rules in eslint.config.js.
Tailwind PostCSS plugin4.1.12Plugin entry in postcss.config.mjs.
lightningcss1.30.1CSS transformer behind the Tailwind toolchain; declared but not directly imported in scanned sources.
PostCSS8.5.28Stylesheet pipeline runner; declared but not directly imported in scanned sources.
Tailwind CSS4.1.12Theme, preflight, and utilities imports in global.css.

Dependencies as of commit 99a2c3d.

Routes by purpose
ScreensFeaturesLocal dataDeviceCloudon-device datacloud sync

Talks to

Sources: src/app/index.tsx, src/app/_layout.tsx, src/app/(tabs)/_layout.tsx (documented at commit 99a2c3d)

On this page