728x90
728x90

Expo CLI vs. React Native CLI

들어가며

  • 리액트 네이티브(React Native) 프로젝트 생성 방법으로 Expo CLI 와 React Native CLI 방법 2가지가 있다.
  • 이 두 방법의 차이점을 간단하게 정리해본다.

 

Expo CLI

개념

  • 리액트 네이티브로 앱을 개발할 때 사용되는 도구
  • 프로젝트 생성, 관리, 실행을 간단하게 해주는 명령줄 인터페이스(Command Line Interface)
  • 리액트 네이티브 프로젝트를 생성할 때 기본적으로 권장되는 접근 방식

 

새 프로젝트 생성하기

$ npx create-expo-app@latest <프로젝트명>    # 새 프로젝트 생성

 

주요 특징

  • 기본 템플릿을 제공하여 초기 설정 없이 바로 앱 개발 시작 가능
  • 카메라, 위치 정보, 푸시 알림 등 네이티브 기능을 쉽게 사용할 수 있도록 지원
  • 코드 수정 후 앱을 즉시 업데이트하여 개발 속도 향상 (Live ReloadHot Reload 기능)
  • 실제 기기에서 앱을 테스트할 수 있도록 도와주는 Expo Go 앱 지원
    • 앱을 빌드하지 않고도, QR 코드를 스캔해 코드 실행 가능
  • Eject 기능을 이용하여 프로젝트를 React Native CLI로 전환 가능

 

장단점

장점

  • 초보자에게 적합하며 프로젝트 생성 및 관리가 쉽다.
  • 네이티브 디바이스 기능 접근이 간단하다. (예: 카메라)
  • 추가적인 설정 작업 없이 바로 시작할 수 있는 관리형 앱 개발(Managed App Development) 워크플로우를 제공한다.
  • 무료로 사용할 수 있으며, 추가적인 유료 기능도 제공하지만 필수는 아니다.
  • 개발 편의성을 높여주는 다양한 패키지와 도구를 지원한다.
  • Expo 사용 중 언제든 React Native CLI 로 전환할 수 있다.

 

단점

  • 네이티브 코드(Java, Swift 등)를 직접 작성해야 할 경우 제한적이다.
  • Expo 라이브러리가 포함되어 앱 크기가 커질 수 있다.
  • Expo의 기본 워크플로우로 구현 불가능한 경우 React Native CLI로 전환(Eject) 작업이 필요하다.

 

React Native CLI

개념

  • 리액트 네이티브 공식 개발팀에서 제공하는 공식 도구
  • 리액트 네이티브 프로젝트를 생성하고 실행할 수 있는 명령줄 인터페이스(Command Line Interface)
  • Expo와는 달리, 네이티브(Android 및 iOS) 환경에 대한 직접적인 제어를 제공하며, 네이티브 코드(Java, Swift 등)와의 통합이 필요할 때 주로 사용한다.

 

주요 특징

  • Java, Kotlin, Swift, Objective-C 등으로 작성된 네이티브 코드와 쉽게 통합할 수 있다.
    • 리액트 네이티브에서 제공하지 않는 기능을 직접 구현할 수 있다.
  • 프로젝트 환경을 직접 설정하며 개발 유연성이 높다.
  • Android Studio와 Xcode를 활용하여 빌드 및 배포 작업을 수행할 수 있다.
  • 플랫폼(Android/iOS)마다 필요한 설정을 세밀하게 조정할 수 있다.
  • Expo의 제한 없이, 모든 네이티브 기능외부 라이브러리를 자유롭게 사용할 수 있다.

 

새 프로젝트 생성하기

$ npx @react-native-community/cli@latest init <프로젝트명>

 

장단점

장점

  • Expo CLI 이전에 개발된 공식 도구로, React Native 팀과 커뮤니티에서 관리한다.
  • 네이티브 언어(Java, Kotlin, Swift, Objective-C)와의 통합이 더 용이하다.
  • Expo 없이 순수 React Native 개발 환경을 구축할 수 있다.

 

단점

  • Expo에 비해 더 많은 설정 및 구성 작업이 필요하다.
  • Android Studio와 Xcode를 포함한 개발 환경 설정이 까다롭다.
  • 네이티브 디바이스 기능 접근 시 작업이 더 복잡해진다.
    • 네이티브 코드(Java, Swift 등)에 대한 지식이 필요할 수 있다.
  • Expo처럼 간단한 명령으로 프로젝트를 관리하기 어렵다.

 

정리

특징 Expo CLI React Native CLI
초기 설정 간단하고 빠르다. 복잡하고 설정 작업이 많다.
편의성 높은 편 낮은 편
네이티브 기능 접근성 쉬움 다소 복잡
네이티브 기능 통합 일부 제한 있음. 완벽하게 통합 가능
에뮬레이터 실행 Expo Go 앱으로 간단 실행 가능 Android Studio / XCode 필요
프로젝트 관리 Expo의 관리형 워크플로우 제공 수동 관리
유연성 Expo에서 CLI로 전환 가능 CLI에서 Expo로 전환 어려움.

 

Expo CLI는 초보자와 빠른 개발을 원하는 사람들에게 적합하다. React Native CLI는 네이티브 코드와의 통합이 필수적인 고급 개발자에게 적합하다.

 

참고 사이트

 

Get Started with React Native · React Native

React Native allows developers who know React to create native apps. At the same time, native developers can use React Native to gain parity between native platforms by writing common features once.

reactnative.dev

 

728x90
728x90