Native module은 React Native(JavaScript)가 JavaScript로 접근할 수 없는 네이티브 플랫폼 코드와 기능(iOS/Android)에 접근하게 해줍니다 — 네이티브 API, SDK, 또는 커스텀 네이티브 기능으로 연결(bridge)합니다. 이는 JS만으로 제공되는 것을 넘어 React Native를 확장합니다.
native module이 존재하는 이유
React Native의 JavaScript는 모든 네이티브 기능에 직접 접근할 수 없음. NATIVE MODULE이
JS를 네이티브 코드로 연결함 (iOS의 Swift/Objective-C, Android의 Kotlin/Java):
→ JS에 노출되지 않은 네이티브 API/SDK 접근
→ 기존 네이티브 라이브러리 사용
→ 성능 중요 또는 플랫폼별 기능을 네이티브 코드로 구현
→ React Native의 JS와 네이티브 플랫폼 사이의 bridge.
native module 사용 (대부분 라이브러리를 통해)
→ 대부분의 네이티브 기능은 기존 라이브러리를 통해 사용 가능 (native module을
포함한 npm 패키지): 카메라, 위치, 블루투스, 결제, 푸시 알림 등
→ 보통 직접 네이티브 코드를 작성하기보다 라이브러리를 설치함
→ EXPO는 네이티브 코드 작성 없이 많은 native API 제공 (managed module)
→ 필요에 맞는 라이브러리가 없을 때만 커스텀 native module을 작성함
