Skip to main content

Overview

The mobile app uses one codebase with two config modes controlled by EXPO_CONFIG_MODE.
ModeValuePurpose
Expo Go developmentdevelopmentLocal development with Expo Go
EAS buildsproductionDev client, preview, production, and submission builds

How It Works

apps/mobile/app.config.js reads EXPO_CONFIG_MODE and transforms the base config from apps/mobile/app.json. In development mode it removes EAS-only settings that Expo Go cannot use:
  • updates
  • runtimeVersion
  • extra.eas
In production mode it keeps the full EAS configuration and sets extra.isExpoGo to false.

What Sets The Mode

  • pnpm dev
  • pnpm dev:lan
  • pnpm dev:tunnel
These run with EXPO_CONFIG_MODE=development.
  • pnpm start:eas
  • all pnpm eas:* build and submit commands
  • EAS cloud builds via apps/mobile/eas.json
These run with EXPO_CONFIG_MODE=production.

Metro

apps/mobile/metro.config.js is shared across both modes. The app does not use separate Metro configs for Expo Go and EAS builds.

Build Commands

The current build and submission commands are documented in Mobile Build Workflow. Use that page as the source of truth for the supported apps/mobile commands.