# React Native Expo

Expo development discipline for React Native applications.

## Rules

1. **Expo Router for navigation.** File-based routing with typed routes. Don't mix navigation libraries without a clear reason.

2. **Native modules through Expo's ecosystem first.** Check if Expo or the community provides it before ejecting or writing custom native code.

3. **EAS Build for production binaries.** Local builds for development, EAS for store-ready artifacts. Credentials managed through EAS, not committed to the repo.

4. **OTA updates for JS-only changes.** `eas update` for JavaScript and asset changes between store releases. Native changes still require a new binary.

5. **Platform-specific code is explicit.** `.ios.tsx` and `.android.tsx` when behavior genuinely differs. `Platform.select` for small differences, not whole components.

6. **Test on real devices.** Simulators miss performance characteristics, push notifications, and camera behavior. Device testing before release.

## What This Replaces

Bare React Native patterns that fight Expo's conventions, manual credential management, and shipping without device testing.

## Official Source

Distilled from Expo's official agent skills.
Full upstream: https://officialskills.sh/expo/skills/building-native-ui
