웹 프로젝트는 npm install만으로 모든 의존성이 해결된다. 자바스크립트만 빌드하면 되기 때문이다.
반면 React Native는 JS 위에 네이티브 코드(Swift / Objective-C / Kotlin / Java)가 얹힌 구조이므로, JS 패키지 설치 이후 네이티브 빌드 단계가 반드시 필요하다.
과거에는 이 네이티브 의존성 연결 과정을 개발자가 직접 관리했지만, 현재의 React Native는 대부분의 과정을 CLI가 자동으로 처리한다. 단, 자동화되었을 뿐 네이티브 빌드 시스템 자체가 사라진 것은 아니다.
CocoaPods는 React Native iOS의 공식 의존성 관리 도구다. pod install 은 필수 개념이지만, 현재는 직접 실행해서 설치하는 명령어가 아니게되었다. (deprecated) React Native CLI가 빌드 시점에 pod install을 자동으로 실행하므로, 개발자가 매번 직접 실행할 필요는 없어졌다.
npm install {library} 실행npx react-native run-ios 실행pnpm install 라이브러리명
pnpm run ios # 네이티브 코드 변경이 있으므로 전체 리빌드
안드로이드는 빌드 도구인 Gradle이 의존성 관리까지 담당한다.
동작 원리 : iOS의 pod install 같은 수동 명령어가 거의 필요 없다. Gradle이 빌드 시점에 자동으로 package.json에 있는 라이브러리를 감지하고 안드로이드 모듈로 포함시킨다.
주의점 : 자동으로 되지만, 설정 충돌이 잦다. 특히 라이브러리마다 요구하는 Kotlin 버전이나 Android SDK 버전이 다를 때 빌드 에러가 터진다. 이때는 android/build.gradle 파일을 열어 버전을 수동으로 맞춰줘야 한다.
웹 개발은 크롬 개발자 도구(F12) 하나로 [로그 - 요소 검사 - 네트워크 - 성능]을 모두 해결한다. 하지만 RN은 이 기능들이 여러 도구로 쪼개져 있다.
console.log를 찍으면 기본적으로 터미널에 텍스트로 출력된다. 객체(Object)나 배열(Array)이 복잡하게 중첩된 경우 터미널에서는 확인이 어렵다. 이럴 때 전용 디버거를 연결해야 한다.props 와 state의 변화를 실시간으로 추적할 수 있다. 컴포넌트 렌더링 최적화를 할 때 참고하면 좋다.