React Native 개발을 할 때, Expo는 개발 속도를 높여주는 강력한 도구입니다.
하지만 Expo를 사용할 때 Managed Workflow와 Bare Workflow 중 어떤 것을 선택해야 할지 고민이 될 수 있습니다.
이 글에서는 두 가지 워크플로우의 차이점과 각각 언제 사용하는 것이 좋은지 정리해보겠습니다.
✅ Expo가 네이티브 설정을 자동으로 관리해 줌
✅ expo start, expo build 같은 명령어로 간편하게 개발 가능
✅ Xcode, Android Studio 없이도 실행 가능
✅ Expo Go 앱에서 실행 가능
❌ 네이티브 코드(android/, ios/ 폴더) 수정 불가능
❌ Expo에서 지원하는 라이브러리만 사용 가능
✅ 네이티브 코드(android/, ios/ 폴더) 수정 가능
✅ Expo가 자동으로 설정해 주지 않음 → 개발자가 직접 Xcode, Android Studio 설정 필요
✅ Expo의 일부 기능 사용 가능하지만, Expo Go에서는 실행 불가능
✅ Custom Dev Client(expo-dev-client)를 빌드해서 실행해야 함
✅ 네이티브 모듈을 자유롭게 설치 가능 (예: 백그라운드 서비스, BLE, 푸시 알림 등)
❌ Xcode, Android Studio 필요 → 설정이 복잡해질 수 있음
| Managed Workflow | Bare Workflow | |
|---|---|---|
| 설정 관리 | Expo가 자동으로 관리 | 개발자가 직접 관리 |
| Expo Go 사용 가능? | ✅ 가능 | ❌ 불가능 (Custom Dev Client 필요) |
| 네이티브 코드 수정 가능? | ❌ 불가능 | ✅ 가능 |
| Xcode / Android Studio 필요? | ❌ 필요 없음 (EAS Build 사용) | ✅ 필요함 |
| 네이티브 모듈 설치 가능? | 제한적 (Expo 지원 범위 내) | ✅ 자유롭게 설치 가능 |
Expo의 Managed Workflow를 유지하면서도 expo-dev-client를 설치하면, Expo Go 대신 커스텀 개발용 앱에서 실행할 수 있습니다.
설치 방법:
npx expo install expo-dev-client
npx expo run:android # or npx expo run:ios
이 방식은 Bare Workflow로 완전히 넘어가는 것은 아니지만, 일부 네이티브 기능을 활용할 수 있는 절충안이 될 수 있습니다.
만약 Expo 환경에서 Firebase를 설정하는 경우, Managed Workflow에서 expo install firebase를 사용하면 Firebase를 간단하게 설치할 수 있습니다. 하지만 Firebase SDK에서 네이티브 모듈이 필요한 기능을 사용해야 한다면 expo-dev-client를 추가하거나 Bare Workflow로 전환해야 할 수도 있습니다.