React Native 앱을 개발할 때 표준 React Native 프로젝트(Bare Workflow)와 Expo의 개발 빌드(Development Build) 두 가지 방법이 있다.
이 둘은 개발 방식, 네이티브 코드 접근성, 빌드 과정에서 차이가 있다.
npx react-native init MyApp로 프로젝트 생성react-native-firebase 같은 네이티브 라이브러리 자유롭게 추가 가능npx react-native run-android
npx react-native run-ios✅ 네이티브 코드 수정이 필요한 경우 (예: FCM 푸시 토큰 적용)
✅ Expo에서 지원하지 않는 네이티브 기능이 필요할 때
✅ 특정 네이티브 라이브러리가 Expo에서 동작하지 않을 때
npx create-expo-app로 프로젝트 생성 후 expo-dev-client 추가expo run:android, expo run:ios를 사용해 직접 빌드 후 테스트 가능npx expo run:android
npx expo run:iosreact-native-firebase 같은 네이티브 패키지 추가 가능✅ Expo 환경을 유지하면서 네이티브 패키지를 추가하고 싶을 때
✅ 빠른 개발 & 핫 리로딩이 필요할 때
✅ Expo 업데이트 관리를 계속하고 싶을 때
| 표준 React Native | Expo 개발 빌드 | |
|---|---|---|
| 설치 방식 | npx react-native init | npx create-expo-app 후 expo-dev-client 추가 |
| 네이티브 코드 수정 | ✅ 가능 | ❌ 제한적 |
| FCM 푸시 토큰 | ✅ 가능 | ❌ 기본적으로 불가능 (Bare로 전환 필요) |
| 네이티브 라이브러리 추가 | ✅ 자유롭게 가능 | 🔸 일부 가능 (expo-dev-client) |
| 빌드 과정 | Xcode/Android Studio 필요 | EAS(Build Service) 사용 가능 |
| 업데이트 관리 | 직접 관리 | Expo에서 지원 |
👉 현재 Expo로 개발 중인데 FCM 푸시 토큰이 필요하다면?
expo eject를 실행하여 Bare Workflow로 전환하는 것이 필요하다. 🚀