mobile — Expo App
@playpals/mobile · apps/mobile
The product. Expo SDK 54, React Native, expo-router, TanStack Query.
This page is the service-level summary. The mobile section covers it in depth: Overview · Navigation & Routes · Data Layer · Design System · Builds & Releases.
Running it
bash
pnpm --filter @playpals/mobile ios # expo start --ios
pnpm --filter @playpals/mobile android
pnpm --filter @playpals/mobile start # Metro only
pnpm --filter @playpals/mobile lintExpo Go will not work
The app depends on native modules — LiveKit / react-native-webrtc, expo-notifications, Bugsnag — that Expo Go does not bundle. You need a development build installed on your simulator or device.
Configuration
apps/mobile/.env, read through lib/env.ts:
bash
EXPO_PUBLIC_ENV=development
EXPO_PUBLIC_API_URL=http://localhost:4000/api/v1
EXPO_PUBLIC_REALTIME_URL=http://localhost:4010app.config.ts derives the app name, URL scheme, and bundle identifier from EXPO_PUBLIC_ENV:
EXPO_PUBLIC_ENV | App name | Scheme |
|---|---|---|
development | PlayPalz Dev | playpalz-dev |
staging | PlayPalz Staging | playpalz-staging |
production | PlayPalz | playpalz |
Key dependencies
| Area | Package |
|---|---|
| Navigation | expo-router 6 |
| Server state | @tanstack/react-query 5 |
| HTTP | axios |
| Realtime | @playpals/socket-client (wraps socket.io-client) |
| Voice | @livekit/react-native, @livekit/react-native-webrtc |
| Lists | @shopify/flash-list |
| Sheets | @gorhom/bottom-sheet |
| Media | expo-image, expo-av, expo-image-picker |
| Storage | @react-native-async-storage/async-storage, expo-secure-store |
| Notifications | expo-notifications |
| Purchases | react-native-purchases (RevenueCat) |
| Crash reporting | @bugsnag/expo |
| Fonts | Chakra Petch (display), Outfit (body) |
Structure
apps/mobile/
├── app/ expo-router screens — routing is the file tree
├── api/ one axios module per domain
├── hooks/ TanStack Query hooks, grouped by domain
├── components/ shared UI
├── context/ auth, chat UI
├── theme/ colors, typography, tokens, ThemeContext
├── constants/ colors, spacing, typography (older; prefer theme/)
├── lib/ axios, env, query-client, navigation, revenueCat, snackbar
├── plugins/ Expo config plugins
└── app.config.ts dynamic Expo configDeployment
Distributed through EAS Build to TestFlight and Google Play — not through the Kubernetes cluster. See Builds & Releases.
