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.