Monorepos and Platform Teams
When React Native adoption grows beyond one squad and one app, the organization needs an explicit platform model. A monorepo can help, but only if ownership, dependency boundaries, and release rules are clear.
Why teams move to a monorepo
Common drivers:
- shared design system packages
- shared authentication and analytics contracts
- multiple mobile apps with overlapping platform logic
- consistent CI/CD and release tooling
- stronger code ownership and reuse patterns
A practical monorepo shape
apps/
consumer-mobile/
internal-mobile/
packages/
mobile-ui/
mobile-navigation/
mobile-analytics/
mobile-auth/
api-clients/
tooling/
ci/
scripts/
docs/
The goal is not maximal sharing. The goal is stable, intentional sharing.
Platform team responsibilities
A mobile platform team usually owns:
- repo-wide tooling and build defaults
- shared design tokens and UI primitives
- navigation conventions
- observability contracts
- native SDK wrappers
- upgrade planning and dependency governance
Product squads should consume the platform, not rebuild it feature by feature.
Package design rules
- Shared packages should have stable public contracts.
- Product-specific code should remain in app space.
- Internal packages should publish ownership and breaking-change rules.
- Native integrations should be wrapped once and reused.
Failure modes
- "Shared" packages that mirror unstable screen logic.
- Every team modifying the platform layer directly without review boundaries.
- Too many cross-package dependencies and circular imports.
- Monorepo adoption without a real platform owner.
Decision rule
Use a monorepo when multiple apps or teams genuinely share stable mobile foundations. Do not adopt it just because it sounds more scalable.