
React Native는 크로스 플랫폼으로 페이스북이 개발한 오픈소스 모바일 애플리케이션 프레임워크로 JavaScript하나로 Android, iOS, Web 대응이 가능하다.

이러한 크로스 플랫폼이 가능한 이유는 JavaScript로 작성된 코드를 Bridge를 통해서 각 플랫폼에 맞는 Native UI 요소에 접근하는 인터페이스를 제공하여 Native 변환을 해주는 것이다.
React Native 앱을 쉽고 빠르게 구축할 수 있도록 해준다. 그 이유는 기본적으로 제공되는 API와 라이브러리가 많기 때문에 초반 개발은 단순화시켜 편리하다. 그리고 Expo Go 어플만 있다면 기기에 상관없이 프로젝트를 실행할 수 있다. 즉, 컴퓨터에 기기를 연결할 필요가 없다. 하지만 제공되는 API만 사용해야해서 기능 구현의 자유도가 낮다.
고도화된 기능 개발을 가능하게 하고 개발의 높은 자유도를 제공해준다. 그 이유는 네이티브 모듈을 연결 가능해서 다양한 라이브러리 사용할 수 있다. 단점으로는 기본적으로 제공되는 라이브러리가 적어서 필요한 것이 있다면 직접 설치해야한다. 그리고 Android와 Xcode를 설치해야하고 아이폰 출시를 위해서는 Mac을 통한 개발이 필수적이다. 왜냐하면 Xcode가 맥에서만 설치가 되기 때문이다. 그리고 Android와 iOS에 대한 기본적인 폴더 구조에 대한 이해가 필요하다.
정리해보면 무엇을 구현할지에 따라서 무엇을 선택할지 달라질 것이다. 구현할려고 하는 기능이 Expo에서 지원이 가능한지 살펴보면 어떤 Cli를 사용해야할지 결론이 나올 것이다.
React Native Cli를 통해서 개발해야하는데 Mac가 없다면 우선은 Android로 먼저 개발하고 성공적이면 Mac으로 개발해도 좋다. 그리고 이젝트 작업을 통해서 Expo Cli에서 탈출해서 React Native로 넘어가도 문제가 없다.