Expo vs React Native CLI - 목적에 맞는 선택하기

Kimrotti,ReactReact NativeExpoMobileHybrid

회사에서 신규 프로젝트를 앱개발로 진행함에 따라 앱서비스가 필요해졌다. 세 프레임워크를 모두 이용해본 후 각각의 장단점에 따라 선택이 달라질 수 있어 정리해보았다. 우선 팀 내에 모든 인원이 웹개발자라 어떤 프레임워크를 이용하는 것이 가장 팀에 적합한지 판단해줄 사람이 필요하여 프레임워크를 이용해보고 적합한 선택지를 제안하기로 하였다. 현재 크게 3가지의 하이브리드 앱개발 프레임워크가 존재한다.

  1. flutter
  2. expo
  3. rn cli

결론적으로 flutter는 초기 러닝커브가 클 수 있고, 렌더링 엔진의 차이(dart vm)가 있어 앱 번들 사이즈가 크다. 또한 js 기반의 rn, expo 대비 커뮤니티의 크기가 작아 라이브러리의 다양성이나 정보의 격차가 체감될 정도이다.

따라서 요즘 급부상하는 expo와 rn-cli 중 선택하고자 하였다. expo는 zero conifg의 빠른 셋팅과 expo go를 통한 디버깅의 편리함 eas build를 통한 별도의 빌드 파이프라인 없이 자동화가 가능하였다. 다만 rn의 브릿지와 native 코드를 전부 고정하고 javascript만 컨트롤 할 수 있기에 native 기능에 굉장히 제한적인 단점이 있었다. 반면 react-native-cli를 사용하는 경우, ios의 podfile, java의 gradle등 원하는 버전관리 및 네이티브 기능의 사용이 자유롭다. 초기 설정이 매우 번거롭고, expo에 비해 관리의 리소스가 많이 들어간다.

결국 목적은 명확하다 (expo vs rn-cli)

현재 RN 공식 docs에 가면 공식적으로 expo 사용을 권장하고 있다. 과거 expo에 비해 네이티브 기능의 지원도 확대되었으며 사용성 또한 굉장히 만족스럽게 변경되었다. 그러나 큰 서비스를 만들고자 한다면 여전히 rn-cli가 자율성이 높으며, 이는 초기 서비스 시작 시, 고려해야할 요소이다. 이하는 두 플랫폼을 비교해보고 목적에 맞는 선택을 위한 정보를 제공한다.

1) 개발 속도 및 접근성

2) 네이티브 코드 접근성

3) 빌드 및 배포

4) 성능 및 최적화

선택 가이드

기준ExpoReact Native CLI
설치 및 설정간단하고 빠르다다소 복잡하나 자유도가 높다
네이티브 코드제한적 (Eject 필요)자유로운 접근이 가능하다
빌드 및 배포Expo 서버에 의존하다로컬 빌드 및 배포가 가능하다
앱 크기 및 성능기본 SDK 오버헤드로 다소 무거울 수 있다모듈 선택을 통해 최적화할 수 있다
사용 용도빠른 프로토타입, 간단한 앱고급 기능이 필요한 복잡한 앱

둘 다 써보고 나니..

결론

Expo는 빠르고 간편한 개발 환경을 제공하여 입문자나 간단한 애플리케이션을 만들고자 할 때 이상적이다. 반면, React Native CLI는 고급 기능과 최적화가 필요한 프로젝트에서 탁월한 선택이다. 특히 네이티브 기능을 자유롭게 추가하고 싶다면 React Native CLI가 더 유리하다.

따라서, 간단한 프로젝트나 빠른 프로토타입을 원한다면 Expo를 추천하며, 복잡한 기능이 요구되거나 성능 최적화가 중요한 프로젝트에는 React Native CLI가 더 적합하다. (Expo에서 시작하여 필요에 따라 Eject하는 방법도 고려해볼 만하다.)