Expo managed (npx create-expo-app):
- Xcode/Android Studio không cần cài (build qua EAS Cloud).
- Native config qua app.json + Expo plugins, không động ios//android/ folder.
- Hot reload và OTA update mặc định.
- Hạn chế: chỉ dùng module trong Expo SDK + module có Expo plugin. Native module custom phải eject hoặc dùng dev client.
Expo bare workflow (npx expo prebuild từ managed, hoặc npx create-expo-app --template bare-minimum):
- Có folder ios/ và android/ thật, edit native code tự do.
- Vẫn dùng Expo modules ecosystem (expo-image, expo-router, expo-updates, ...).
- EAS Build vẫn hoạt động.
- "Best of both worlds" — recommend cho đa số dự án 2026.
Vanilla RN CLI (npx @react-native-community/cli@latest init):
- Pure RN, không Expo dependency.
- Toàn quyền kiểm soát, nhưng phải tự setup nhiều thứ (linking, config, splash screen, icons).
- Dùng khi: team đã có infrastructure native lớn, hoặc lib core cần feature pre-Expo.
Quyết định 2026:
- App mới, MVP → Expo managed, prebuild khi cần.
- App production scale, team mid-large → Expo bare.
- App enterprise có CI/CD native riêng, không muốn EAS lock-in → Vanilla CLI.
Expo SDK 52 (RN 0.76, cuối 2024) đặt New Architecture làm default — không còn lý do tránh Expo vì "performance" như trước. SDK <52 vẫn dùng Old Arch nếu chưa migrate.
Expo managed (npx create-expo-app):
- No Xcode/Android Studio install needed (build via EAS Cloud).
- Native config via app.json + Expo plugins, no editing of ios//android/.
- Hot reload and OTA updates by default.
- Limit: only modules in the Expo SDK or those with an Expo plugin. Custom native modules require eject or dev clients.
Expo bare workflow (npx expo prebuild from managed, or npx create-expo-app --template bare-minimum):
- Real ios//android/ folders, free to edit native code.
- Still uses the Expo modules ecosystem (expo-image, expo-router, expo-updates, ...).
- EAS Build still works.
- "Best of both worlds" — recommended for most 2026 projects.
Vanilla RN CLI (npx @react-native-community/cli@latest init):
- Pure RN, no Expo dependency.
- Full control, but you set up linking, splash, icons, etc. yourself.
- Pick when: an existing large native infrastructure, or core libs need pre-Expo features.
Decision in 2026:
- New apps, MVP → Expo managed, prebuild when needed.
- Production-scale app, mid-large team → Expo bare.
- Enterprise app with its own native CI/CD, avoiding EAS lock-in → Vanilla CLI.
Expo SDK 52 (RN 0.76, late 2024) makes the New Architecture default — there is no longer a "performance" reason to avoid Expo. SDK versions before 52 still run Old Arch unless migrated.