리액트 네이트브(React Native)는 리액트(React.js)를 사용하여 빠른 모바일 앱 개발을 할수 있도록 페이스북(Facebook)에서 만든 오픈소스이다.
모바일 앱을 만들기 위해서는 iOS(swift)와 Android(java) 두개의 플랫폼을 지원하는 앱을 각각 만들어야 한다. 이러한 방법은 빠르게 앱을 만들어 시장에 선보이고 대응 하기에는 개발 인력과 시간 소모가 크다.
PhoneGap(Cordova)과 같은 하이브리드 앱은 하나의 파일로 iOS, Android를 한번에 대응 할 수 있기에 모바일 앱을 각각 개발해야 하는 단점을 보완 할수 있어 관심을 받아 왔지만 많은 단점을 가지고 있다. 하이브리드 앱은 브라우저 위에서 모바일 웹을 실행하하기에 사용자 경험면에서 제약이 많고 속도도 느리다.
하이브리드 앱과는 달리 리액트 네이티브(React Native)는 리액트(React.js)로 개발하여 iOS, Android 네이티브 결과물을 만들어 낸다.
브릿지를 통한 동작
자바스크립트로 네이티브를 동작하게 하기 위해서는 네이티브 코드가 필요하다. 자바스크립트로 구현한 기능은 리액트 네이티브로 네이티브 코드가 만들어지고 브릿지를 통해서 네이티브를 동작하게 한다.
장점
깃헙(Github)에서 보면 많은 개발자들이 참여하였고 인정받는 오픈소스라는 것을 알수 있다. 국내 커뮤니티도 활발한 편이며 모바일 앱개발에 필요한 많은 레퍼런스와 서드파티 모듈들이 존재한다.
리액트(React.js), 즉 자바스크립트로 한번에 iOS, Android 네이티브 결과물을 얻을 수 있어 개발의 속도가 빠르며 하이브리드 앱보다 상대적으로 성능이 좋아 사용자에게 좋은 경험을 제공 할수 있다.
리액트 네이티브에서 비즈니스 로직 변경사항은 애플리케이션 컴파일 과정 없이 새로고침 만으로도 확인이 가능하다.
단점
완벽하게 네이티브(Native)를 대체 하기에는 부족하다. iOS, Android 플랫폼 별로 특징적인 것은 각각 다르게 반영해야 하거나 네이티브로 직접 구현해야 한다.
복잡도가 높은 비즈니스 로직에서 뷰스택이 많이 쌓일때 발생하는 성능(속도) 이슈와 브릿지를 통해 네이티브와 통신 할때 디버깅 하기 어려운 이슈가 존재한다.
React Native : https://facebook.github.io/react-native/
Github(React Native) : https://github.com/facebook/react-native