리액트 네이티브(React Native, 이하 RN)를 선택할 때 가장 먼저 고민하게 되는 것이 “CLI로 갈 것인가, Expo로 갈 것인가”입니다. 최근 Expo는 단순히 ‘입문용 도구’를 넘어 Prebuild와 EAS라는 강력한 무기로 무장하여 엔터프라이즈급 앱 개발에도 널리 쓰이고 있습니다.
이번 포스팅에서는 Expo의 내부 동작 원리와 핵심 서비스인 EAS에 대해 디테일하게 파헤쳐 보겠습니다.
1. Expo의 두 가지 심장: Managed vs Bare (그리고 Prebuild)
Expo를 이해하기 위해서는 Workflow의 차이를 아는 것이 중요합니다.
- Managed Workflow: 개발자는 JavaScript/TypeScript 코드만 작성합니다. 네이티브 프로젝트 폴더(
android,ios)를 직접 노출하지 않으며, Expo가 빌드 환경과 라이브러리 설정을 모두 관리합니다. - Continuous Native Generation (CNG): 최신 Expo의 핵심입니다.
npx expo prebuild명령어를 통해 작성된 코드를 바탕으로 네이티브 프로젝트를 실시간 생성합니다. 덕분에 네이티브 설정(Config Plugins)을 코드로 관리할 수 있어 유지보수가 매우 편리합니다.
2. EAS(Expo Application Services): 배포의 혁명
많은 개발자가 Expo를 선택하는 결정적인 이유는 바로 EAS 때문입니다. 클라우드 기반의 이 서비스는 개발자의 로컬 환경 의존성을 완전히 제거합니다.
- EAS Build: 내 컴퓨터에 안드로이드 스튜디오나 Xcode가 없어도 클라우드 서버에서
.apk,.aab,.ipa파일을 빌드합니다. (M1/M2 맥이 없어도 iOS 빌드가 가능해지는 마법이죠!) - EAS Submit: 빌드된 바이너리를 구글 플레이 스토어나 애플 앱스토어에 명령줄 하나로 직접 제출합니다.
- EAS Update: 앱 스토어의 긴 심사 대기 시간을 우회하여, 자바스크립트 코드 수정사항을 사용자 기기에 즉시 동기화하는 OTA(Over-the-Air) 업데이트를 구현합니다.
3. 디테일 비교: 기술적 관점의 CLI vs Expo
| 기술 항목 | Expo (Managed + EAS) | React Native CLI |
| 네이티브 모듈 연동 | Config Plugins를 통해 대부분 지원 | 직접 네이티브 코드 수정 및 링크 필요 |
| 빌드 환경 | 클라우드(EAS) 또는 로컬 모두 가능 | 무조건 로컬 환경 세팅 필수 |
| Push 알림 | Expo Push 서비스로 통합 관리 (매우 쉬움) | FCM, APNs를 직접 구현 및 연동 |
| 앱 용량 | 필요한 라이브러리만 포함하도록 최적화됨 | 초기부터 필요한 것만 넣으므로 최소화 유리 |
| Runtime | Expo Go 또는 Custom Dev Client 사용 | 기본 네이티브 런타임 사용 |
4. 실무자를 위한 핵심 팁: “Custom Dev Client”
Expo Go 앱은 편리하지만, 특정 네이티브 라이브러리(예: 커스텀 블루투스 스택, 특수 보안 모듈)를 추가하면 더 이상 Expo Go를 사용할 수 없습니다. 이때 Development Client를 직접 빌드하여 사용하면, Expo의 편리함을 그대로 유지하면서도 CLI의 자유도를 누릴 수 있습니다.
Pro Tip: SEO와 웹 성능에 민감한 프로젝트라면, Expo Router를 사용해 보세요. 파일 기반 라우팅을 통해 앱과 웹 모두에서 일관된 사용자 경험과 검색 최적화(SEO) 대응이 훨씬 수월해집니다.
5. 결론: 어떤 선택이 옳은가?
현재의 Expo는 더 이상 “네이티브 수정을 못 하는 반쪽짜리 프레임워크”가 아닙니다.
- 빠른 출시와 운영 자동화가 우선이라면 Expo는 독보적인 효율을 제공합니다.
- 반면, 초경량 앱 용량이 절대적이거나 독자적인 네이티브 엔진을 임베딩해야 한다면 여전히 CLI가 유리할 수 있습니다.
서버 사이드 로직(Spring Boot 등)과 연동하여 강력한 데이터를 처리하는 앱을 구상 중이라면, 클라이언트 단의 복잡도를 낮춰주는 Expo는 백엔드 개발자에게 최고의 파트너가 될 것입니다.
💡 관련 태그: #Expo #ReactNative #EAS #ManagedWorkflow #앱배포자동화 #모바일앱개발 #IT기술블로그 #프론트엔드엔지니어링


