CocoaPods 없이 React Native 개발하기
오진성 · 토스 · 토스 기술 블로그
소개
토스와 비슷하게 많은 회사들이 각자 다른 이유로 운영 중인 서비스를 크로스 플랫폼으로 확장하고자 React Native를 도입하려고 할 거예요. 이런 경우에 CocoaPods를 사용하지 않고 React Native를 도입하는 방법을 알려드릴게요.
AI 핵심 요약
운영 중인 iOS 앱에 React Native를 부분 도입할 때 CocoaPods를 기존 의존성 관리 도구와 함께 쓰면 의존성 중복이나 빌드 실패가 생길 수 있습니다. 이를 피하기 위해 React Native 라이브러리를 CocoaPods로 미리 빌드해 XCFramework로 만들고, 이를 binaryTarget으로 담은 Swift Package를 생성하는 Prebuild 방식을 제안합니다. 빌드 스크립트는 시뮬레이터와 기기용 아카이브를 만든 뒤 XCFramework와 Package.swift를 생성하며, 운영 프로젝트는 Swift Package Manager로 패키지를 추가합니다. 이 방식은 앱의 의존성 관리 도구를 하나로 유지하고 React Native 코드의 반복 빌드 부담을 줄이는 데 목적이 있습니다.
- 여러 의존성 관리 도구는 서로의 의존성 그래프를 알지 못해 같은 라이브러리가 중복되거나 빌드가 실패할 수 있습니다.
- 의존성 충돌을 피하려고 라이브러리를 포크해 podspec을 수정한다면, 변경 이력과 원본 대비 차이를 지속적으로 관리해야 합니다.
- React Native 의존성을 CocoaPods로 설치한 뒤 시뮬레이터와 기기용으로 각각 아카이브하고 XCFramework로 묶을 수 있습니다.
- 생성한 XCFramework를 Swift Package의 binaryTarget으로 등록하면 운영 앱에서는 Swift Package Manager로 React Native를 가져올 수 있습니다.
비슷한 학습 자료
토스ㅣSLASH 24 - 잃어버린 생산성을 찾아서, React Native로 알아보는 디버깅
SLASH · YouTube
토스ㅣSLASH 23 - 달리는 토스 앱에 React Native 엔진 더하기
SLASH · YouTube
토스ㅣSLASH 22 - 미친 생산성을 위한 React Native
SLASH · YouTube
ESBuild를 위한 HMR, 직접 만들기
이근혁 · 토스 기술 블로그
여러 프레임워크에서 사용할 수 있는 라이브러리 만들기
임지훈 · 토스 기술 블로그
토스가 꿈꾸는 React Native 기술의 미래
박서진 · 토스 기술 블로그