[React Native] Expo와 React Native CLI 무엇을 써야할까?

Jiiker·2025년 5월 18일
post-thumbnail

React Native란?

React Native는 Meta에서 개발한 오픈소스 프레임워크로, JavaScript 또는 TypeScript를 사용하여 iOS와 Android 앱을 동시에 개발할 수 있는 기술이다.

React Native는 React를 기반으로, 브라우저가 아닌 모바일 플랫폼의 네이티브 컴포넌트(View, Text, Button 등)를 사용해 UI를 렌더링한다고 한다. 즉, 웹 기술을 기반으로 하면서도 실제 모바일 앱과 같은 성능과 사용자 경험을 제공할 수 있도록 설계된 것이 특징이다.

또한, React Native는 하나의 코드베이스로 여러 플랫폼에서 앱을 개발할 수 있어 개발 효율성과 유지보수 측면에서 강점을 가진다고 한다. 필요한 경우, 플랫폼별로 다른 컴포넌트를 렌더링하거나 네이티브 코드와 직접 통신할 수 있는 확장성도 제공한다고 한다.


Expo와 React Native CLI

React Native를 사용할 때는 두 가지 방식 중 하나를 선택할 수 있다. 하나는 Expo이고, 다른 하나는 React Native CLI이다.

  • Expo는 설정이 간편하고 빠르게 시작할 수 있도록 도와주는 상위 툴킷이다. (실제로 React Native 공식문서에서 권장하고 있는 방식)

  • React Native CLI는 순정 React Native 환경으로, 더 많은 유연성과 네이티브 접근성을 제공한다.

개발 환경 세팅

항목ExpoReact Native CLI
설치 난이도매우 쉬운 편상대적으로 복잡함
실행 방식Expo Go 앱을 통한 QR 실행Android Studio, Xcode 필요
네이티브 기능 접근Expo SDK로 대부분 제공직접 모듈 설치 및 네이티브 설정 필요
빌드 방식EAS Build를 통한 클라우드 빌드로컬 빌드 또는 CI 파이프라인 구성 필요

Expo 장단점

장점

  • 초기 설정이 거의 필요하지 않아 빠르게 앱을 실행할 수 있다.
  • Expo Go 앱으로 QR 코드를 스캔하여 바로 실기기 테스트가 가능하다.
  • 카메라, 위치, 알림 등 자주 사용하는 네이티브 기능을 Expo SDK가 기본적으로 제공한다.
  • EAS Build를 활용하면 mac 없이도 iOS 앱을 빌드할 수 있다고 한다.

단점

  • Expo에서 지원하지 않는 네이티브 기능은 사용할 수 없다.
  • 직접 만든 Swift 또는 Java 기반의 네이티브 모듈을 연동하기 어렵다.
  • Expo SDK 전체가 포함되어 앱 용량이 커질 수 있다는 단점이 있다.
  • 일부 네이티브 관련 오류는 디버깅이 어렵다고 한다.

React Native CLI 장단점

장점

  • 모든 네이티브 기능을 제약 없이 사용할 수 있다.
  • 외부 네이티브 라이브러리나 커스텀 모듈을 자유롭게 설치하고 연동할 수 있다.
  • 필요한 라이브러리만 포함시켜 앱의 용량을 최적화할 수 있다.
  • 기업이나 대규모 프로젝트에서는 실무 환경과 가장 유사한 방식이라고 할 수 있다.

단점

  • Android Studio, Xcode 등의 설정이 필요해 진입 장벽이 높은 편이다.
  • 초보자가 처음부터 설정하기에는 어려움이 있다.
  • 네이티브 코드를 수정할 경우 빌드 시간이 길어지고, 설정 충돌이 발생할 가능성도 존재한다.

결론

React Native를 처음 접하거나 빠르게 프로토타입을 만들고 싶다면 Expo를 사용하는 것이 적합하다. 반면 카메라 제어, 화면 공유, 블루투스 등 고급 네이티브 기능이 필요한 경우에는 React Native CLI를 사용하는 것이 바람직하다. 이번에 내가 만들어보고자 하는 앱에서는 모바일 화면을 공유하는 기능이 꼭 필요했기 때문에 나는 React Native CLI 방식으로 개발하려고 한다.

profile
Hello, world!

0개의 댓글