02 · Mobile · Scale · Companion
Expo with custom dev client in the platform monorepo
The companion app stays cross-platform, adds the native capabilities enterprise customers ask for, and is owned by a mobile team.
Agent fit4/5 Scale · Run it for many Reviewed
The stack
- Framework
- Expo with a custom development client and config plugins
- Data
- The platform API, versioned and generated
- Auth
- Enterprise SSO through the platform's OIDC provider, device attestation
- Hosting
- EAS with per-tenant or per-environment channels
- Also
-
- MDM and enterprise distribution where required
- Shared design tokens and schema packages
- Detox or Maestro on device farms
Why agents do well here
4/5- Config plugins keep native configuration as code the agent can read and diff, instead of Xcode and Gradle changes it cannot see.
- The platform's generated client and schema packages keep the mobile app honest with a backend owned by other teams.
- Expo's conventions remain strong at this size, so agent-written screens match the ones a mobile team wrote.
Avoid at this tier
- Forking the app per enterprise customer; use configuration and feature flags.
- Native code outside config plugins and isolated modules.
- A mobile-only data model; the platform schema is still the source of truth.
How it fits together
The companion app is now a product in its own right, with a team, enterprise requirements and native capabilities. Expo with a custom dev client keeps those capabilities as code while the app stays cross-platform and inside the platform monorepo.
Folder layout
apps/mobile/ app/, src/features/, plugins/ (config plugins), modules/
packages/schema/ packages/api-client/ packages/tokens/ First five decisions
Lock these in before the agent writes the second feature. Each one removes a choice it would otherwise make differently every time.
- 01 Custom dev client not a bare workflow
- 02 Config plugins for every native change
- 03 Enterprise SSO through the shared provider
- 04 Feature flags over forks
- 05 Device-farm tests per release
When to move on
This is the top tier. From here the work is keeping the boundaries explicit, not changing the stack. The Mobile Scale page lists what stays the same.