React Native를 사용해 모바일 애플리케이션 개발을 시작할 때,
개발자는 두 가지 주요 CLI(명령줄 인터페이스) 도구 중 하나를 선택해야 합니다.
Expo CLI와 React Native CLI가 그 주인공입니다.
두 CLI는 React Native 프로젝트 생성에 필요한 도구와 구성을 제공하지만,
각 도구가 가진 특징과 사용 방식이 다릅니다.
이 글에서는 두 CLI의 차이점과 장단점을 알아보고, 상황에 맞는 도구 선택에 대한 가이드를 제시하겠습니다.
Expo는 React Native 프레임워크 위에서 작동하는 툴킷으로,
빠르고 쉽게 프로젝트를 생성하고 개발할 수 있게 해주는 툴입니다.
Expo CLI는 특히 초보자에게 직관적이고 쉬운 환경을 제공하며,
다양한 기능과 서비스를 내장하고 있습니다.
1. 빠른 초기 설정:
Expo CLI는 기본적인 프로젝트 설정을 자동으로 제공해,
빠르게 프로젝트를 시작할 수 있습니다.
Node.js와 Expo만 설치하면 별도의 환경 설정 없이
바로 앱을 개발할 수 있습니다.
2. 간단한 빌드 및 배포:
Expo는 앱을 빌드하고 배포할 수 있는 Expo Go 앱을 제공하여,
기기에서 즉시 앱을 테스트할 수 있습니다.
복잡한 빌드 설정이 필요 없기 때문에,
실제 기기에서 코드 수정 사항을 빠르게 확인할 수 있습니다.
3. Cross-Platform 지원 강화:
iOS와 Android 플랫폼 간 코드의 일관성이 높아
플랫폼 간 문제를 줄일 수 있습니다.
4. 다양한 라이브러리 및 API 내장:
Expo SDK에는 카메라, 위치 서비스, 푸시 알림 등
다양한 기능이 내장되어 있어 별도의 설치 없이 사용할 수 있습니다.
5. OTA 업데이트:
Expo는 앱 스토어에 다시 제출할 필요 없이
OTA(Over-the-Air) 업데이트를 지원하여
코드 수정 시 앱을 바로 업데이트할 수 있습니다.
1. 네이티브 모듈 제한:
Expo는 자체 환경에서 지원하는 네이티브 모듈에 한해 사용할 수 있습니다.
특정 네이티브 기능(예: Bluetooth 또는 배터리 상태 모니터링 등)
을 필요로 하는 경우, Expo로는 제한이 있을 수 있습니다.
2. 앱 사이즈 증가:
Expo SDK가 포함된 상태로 앱이 빌드되므로,
앱 크기가 일반 React Native 앱보다 더 커질 수 있습니다.
3. Expo 관리에서 벗어나면 복잡성 증가:
Expo 환경을 벗어나 Ejected Mode로 전환하면,
Expo CLI의 단순한 장점이 사라지고
React Native CLI와 동일하게 환경 설정을 해야 합니다.
React Native CLI는 Expo 없이 순수한 React Native 프로젝트를 생성할 때 사용하는 기본 CLI입니다.
개발자가 iOS와 Android의 네이티브 코드를 직접 수정하거나, 특정 네이티브 모듈을 추가할 수 있습니다.
1. 네이티브 코드 접근 가능:
React Native CLI는 iOS와 Android의 네이티브 코드를 직접 수정할 수 있어,
앱을 보다 유연하게 커스터마이징할 수 있습니다.
Bluetooth, AR, 배터리 모니터링 등
다양한 네이티브 기능을 손쉽게 추가할 수 있습니다.
2. 네이티브 모듈 설치 자유로움:
Expo의 제약을 받지 않고 커뮤니티에서 제공하는
모든 React Native 패키지를 자유롭게 설치할 수 있습니다.
3. 프로젝트 사이즈 관리 가능:
필요하지 않은 패키지나 모듈을 제외하고 필요한 기능만 추가할 수 있어
앱의 최종 용량을 효율적으로 관리할 수 있습니다.
4. 개발 환경의 확장성:
React Native CLI는 Expo에 비해 복잡한 애플리케이션이나
고급 네이티브 기능을 필요로 하는 프로젝트에 적합합니다.
1. 복잡한 초기 설정:
React Native CLI는 iOS와 Android 네이티브 환경 설정이 필요하여,
초보자가 처음 설정할 때 어려움을 겪을 수 있습니다.
특히 iOS의 경우 macOS에서만 빌드 가능하여,
Mac이 없는 개발자에게는 불편할 수 있습니다.
2. 빌드 및 배포가 번거로움:
Expo의 간단한 빌드 기능과 달리, React Native CLI는
Xcode나 Android Studio를 통해 빌드하고 배포해야 합니다.
이러한 과정은 시간이 많이 걸릴 수 있습니다.
3. OTA 업데이트 미지원:
React Native CLI는 OTA 업데이트 기능이 없기 때문에,
앱 스토어에 재배포가 필요할 때마다 새 버전을 제출해야 합니다.
아래는 프로젝트 상황에 따라 어떤 CLI를 선택하면 좋을지에 대한 가이드입니다:
Expo CLI 추천:
• 프로젝트의 빠른 프로토타입이나 MVP를 제작할 때
• 기본적인 기능만으로 충분한 앱을 만들 때
• 다양한 빌드 환경에 익숙하지 않거나, 초기 개발자일 경우
• OTA 업데이트나 다양한 내장 기능을 간편하게 사용하고 싶을 때
• React Native CLI 추천:
• 앱에서 특정 네이티브 기능을 필요로 할 때
(예: Bluetooth, 네이티브 UI 커스터마이징 등)
• 프로젝트의 확장성이 중요하고, iOS와 Android 코드에 직접 접근하여 제어해야 할 때
• 앱의 최적화가 필요하고, 불필요한 기능을 제외해 앱 용량을 최소화하고자 할 때
• OTA 업데이트가 필수적이지 않고, 앱 스토어 재배포 과정이 문제되지 않을 때
Expo CLI와 React Native CLI는 각각의 장단점이 명확합니다.
Expo CLI는 빠른 설정과 간편한 배포를 지원하지만, 네이티브 모듈 사용에 제약이 있습니다.
반면, React Native CLI는 복잡한 설정을 요구하지만 네이티브 기능을 자유롭게 사용할 수 있어 고급 기능이 필요한 애플리케이션 개발에 적합합니다.
개발 목적과 프로젝트의 복잡성을 고려하여 적절한 CLI를 선택하는 것이 중요합니다.
이 글을 통해 Expo CLI와 React Native CLI의 차이점과 장단점을 이해하고, 자신의 프로젝트에 맞는 도구를 선택하는 데 도움이 되었기를 바랍니다.