
React Native는 Meta에서 개발한 오픈소스 프레임워크로, JavaScript 또는 TypeScript를 사용하여 iOS와 Android 앱을 동시에 개발할 수 있는 기술이다.
React Native는 React를 기반으로, 브라우저가 아닌 모바일 플랫폼의 네이티브 컴포넌트(View, Text, Button 등)를 사용해 UI를 렌더링한다고 한다. 즉, 웹 기술을 기반으로 하면서도 실제 모바일 앱과 같은 성능과 사용자 경험을 제공할 수 있도록 설계된 것이 특징이다.
또한, React Native는 하나의 코드베이스로 여러 플랫폼에서 앱을 개발할 수 있어 개발 효율성과 유지보수 측면에서 강점을 가진다고 한다. 필요한 경우, 플랫폼별로 다른 컴포넌트를 렌더링하거나 네이티브 코드와 직접 통신할 수 있는 확장성도 제공한다고 한다.
React Native를 사용할 때는 두 가지 방식 중 하나를 선택할 수 있다. 하나는 Expo이고, 다른 하나는 React Native CLI이다.
Expo는 설정이 간편하고 빠르게 시작할 수 있도록 도와주는 상위 툴킷이다. (실제로 React Native 공식문서에서 권장하고 있는 방식)
React Native CLI는 순정 React Native 환경으로, 더 많은 유연성과 네이티브 접근성을 제공한다.
| 항목 | Expo | React Native CLI |
|---|---|---|
| 설치 난이도 | 매우 쉬운 편 | 상대적으로 복잡함 |
| 실행 방식 | Expo Go 앱을 통한 QR 실행 | Android Studio, Xcode 필요 |
| 네이티브 기능 접근 | Expo SDK로 대부분 제공 | 직접 모듈 설치 및 네이티브 설정 필요 |
| 빌드 방식 | EAS Build를 통한 클라우드 빌드 | 로컬 빌드 또는 CI 파이프라인 구성 필요 |
React Native를 처음 접하거나 빠르게 프로토타입을 만들고 싶다면 Expo를 사용하는 것이 적합하다. 반면 카메라 제어, 화면 공유, 블루투스 등 고급 네이티브 기능이 필요한 경우에는 React Native CLI를 사용하는 것이 바람직하다. 이번에 내가 만들어보고자 하는 앱에서는 모바일 화면을 공유하는 기능이 꼭 필요했기 때문에 나는 React Native CLI 방식으로 개발하려고 한다.