엘리시아가 앱 개발을 시작할 때 어떤 개발 환경을 골랐는지 정리한 글이다. 네이티브·모바일 웹·하이브리드 세 종류를 장단점으로 비교한 뒤 React Native 를 고른 이유를 설명하고, 마지막에 React Native CLI 와 Expo 중 Expo 를 택한 근거로 이어진다.
핵심 포인트- 하이브리드 앱은 비용과 시간이 절약되지만 결국 앱 형태의 웹 뷰에 불과하다는 단점이 있어, 소수 인원으로 빠르게 대응해야 하는 팀에는 맞지 않았다.
- React Native 는 웹 개발 기술로 개발하면서도 결과물이 네이티브 앱이 된다. 인스타그램·페이스북 애드 매니저·블룸버그·에어비앤비·우버이츠·디스코드가 이 방식이다.
- 핵심은 Native Bridge 다. 웹뷰가 아니라 브릿지를 써서 안드로이드·iOS 각각의 플랫폼에 맞게 렌더링한다.
- 작성한 코드는 View 와 JavaScript Code 로 나뉜다. View 는 네이티브 View 로 컴파일되고(`<View>` 가 iOS 의 UIView, 안드로이드의 android.view 로), JS 코드는 JavaScript 코어와 브릿지를 통해 네이티브 모듈·API 와 연동된다.
- 프로젝트 생성 방법은 React Native CLI 와 Expo 두 가지이며, 엘리시아는 Expo 를 쓴다.
상세 정리- 네이티브 앱: 안드로이드는 SDK 로 Java·Kotlin, iOS 는 Swift·Objective-C 로 만든다. OS 특화 기능 접근이 쉽고 속도와 안정성이 좋지만, 두 버전을 각각 개발해야 해 비용과 시간이 크다.
- 모바일 웹 앱: 브라우저에서 실행돼 설치가 필요 없고 모든 기기에서 접근 가능하지만, 카메라·푸시 같은 플랫폼 API 를 쓸 수 없고 웹 브라우저 API 만 쓸 수 있다.
- 하이브리드 앱: 웹 기술로 구현하고 패키징만 OS 별로 한다. 네이버·다음 같은 포털 앱이 대표적이며, 개발 비용은 아끼지만 UI 구성 요소가 네이티브보다 부족하다.
- React Native 의 장점 넷: iOS·안드로이드 동시 개발로 높은 생산성, React 개발자에게 낮은 진입 장벽, 웹 확장에 유리, 최신 프레임워크라 버전 업데이트와 이슈 대응이 빠름.
- 단점 셋도 솔직히 적는다. 한국어 자료가 부족하고, 개발 버전이 빠르게 올라가 외부 라이브러리 의존성 문제가 종종 생기며, 복잡한 UI 구현이 어렵다.
- 특히 의존성 문제는 개발 중 애를 먹을 수 있다며, 언제 deprecated 될지 모르니 오래된 외부 라이브러리 사용을 지양하라고 권한다.
- React Native CLI: 프로젝트 구성을 위한 기본 설정만 있어 순수 RN 으로 개발하게 된다. 모든 코드를 직접 쓰고 필요하면 Java·Kotlin·Objective-C·Swift 도 추가할 수 있어 자유도가 높지만, 환경 설정과 배포에 시간이 많이 든다.
- Expo 는 그 배포의 어려움을 해결하는 플랫폼이자 프레임워크로 여러 개발 툴을 제공한다.
- Expo 구성 셋: 프로젝트 실행·빌드·배포를 담당하는 Expo CLI, 모바일 기기에 설치해 개발 중인 프로젝트를 바로 테스트하는 Expo Go, 카메라·GPS 같은 네이티브 API 를 쓰게 해 주는 Expo SDK.
- Expo 의 가장 큰 장점으로 간편한 빌드와 배포를 꼽는다.
왜 읽나모바일 앱을 처음 시작하며 네이티브·하이브리드·RN 중 무엇을 고를지 정해야 하는 팀에게, 각 선택지의 대가와 RN 이 브릿지로 무엇을 하는지를 정리해 준다.