Skip to content

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 lint

Expo 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:4010

app.config.ts derives the app name, URL scheme, and bundle identifier from EXPO_PUBLIC_ENV:

EXPO_PUBLIC_ENVApp nameScheme
developmentPlayPalz Devplaypalz-dev
stagingPlayPalz Stagingplaypalz-staging
productionPlayPalzplaypalz

Key dependencies

AreaPackage
Navigationexpo-router 6
Server state@tanstack/react-query 5
HTTPaxios
Realtime@playpals/socket-client (wraps socket.io-client)
Voice@livekit/react-native, @livekit/react-native-webrtc
Lists@shopify/flash-list
Sheets@gorhom/bottom-sheet
Mediaexpo-image, expo-av, expo-image-picker
Storage@react-native-async-storage/async-storage, expo-secure-store
Notificationsexpo-notifications
Purchasesreact-native-purchases (RevenueCat)
Crash reporting@bugsnag/expo
FontsChakra 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 config

Deployment

Distributed through EAS Build to TestFlight and Google Play — not through the Kubernetes cluster. See Builds & Releases.

Internal documentation — PlayPalz platform