2025년 11월 3일에 작성되었고, 블로그를 이전하며 옮겨온 포스트입니다.
여기에서 원본을 확인할 수 있습니다.

들어가며
왜 React Native를 사용하게 되었나?
혼자 새로운 사이드 프로젝트를 시작하려 하는데, 앱을 한 번 만들어보고 싶었다. 하지만 어떤 기술 스택을 사용할지 고민하다가, Swift로 iOS 앱을 만드려고 했지만 그나마 친숙한 React Native(Expo)를 선택했다.
사실 선택지는 없었다
내가 아이폰을 쓰고 있고, 애플을 좋아하기 때문에.. iOS 앱을 만들고 싶었지만,, 군대 싸지방에서는 맥북도 없고 당연히 Xcode도 사용할 수 없기 때문에 크로스플랫폼 개발을 지원하는 RN을 선택하게 된 것이었다..ㅎ
앱 개발이 마무리 과정에 들어가며 앱 스토어에 배포를 하기 전, TestFlight로 배포를 해 직접 아이폰으로 테스트를 해보고 싶었다. Expo로 앱 스토어에 배포하는 방법을 찾아보고, 한 스탭씩 따라하며 배포를 해보았는데, 신선한 충격을 받게 되었다.
아니 좋은 컴퓨터가 필요 없겠는데?
iOS 개발이니까, Xcode로 배포를 해야겠지?라고 처음 생각했지만, Xcode 없이 ‘eas build’ 명령어 한 줄만으로도 인증서부터 배포까지 되는 것을 보게 되었다.. 그래서 생각이 든건..
“어? 그러면 내 컴퓨터 리소스를 하나도 안 쓰고, iOS 개발하는데 맥북도 필요 없고, 완전 럭키비키 아니야?”
그래서 작은 기능 추가, 조금의 수정에도 EAS 빌드 명령어로 빌드를 하고, 배포를 했고, 문제의 순간이 다가왔다.
세상에 공짜는 없었다
“EAS 빌드/배포는 무료가 아니였다는걸..”

위 사진과 같이 Free, Starter, Production, Enterprise 처럼 Plan이 나누어져 있었다.. 나는 당연히 결제하지 않고 사용했기에 Free 플랜이었고, 15번의 iOS 빌드 기회를 모두 소진한 것이었다.
(대학생 할인이라도 있었으면 했을텐데..)
근데 맥북으로 하면 안 돼?
Starter, Production으로 Plan을 업그레이드하면 빌드 횟수가 늘어나지만, 맥북을 쓰는 나로써는 ‘굳이..’ 싶었다. 그래서 EAS 빌드를 사용하는 대신에 Xcode로 빌드하는 방법을 찾아보기 시작했다.
Xcode로 빌드하기
1. Expo pre-build 진행하기
먼저, Expo 프로젝트를 Xcode로 가져오기 위해 아래 명령어를 통해 prebuild를 진행해 줍니다.

npx expo prebuild --platform ios
2. pod 설치하기
위 명령어를 실행하고 나면 ios폴더로 빌드된 모습을 확인할 수 있습니다. 이제, 아래 명령어를 이용해 pod을 설치해 줍니다.

cd ios
pod install
3. Xcode에서 프로젝트 열기
pod까지 설치하게 되면, ios 폴더 안에 app.xcworkspace 폴더가 생성됩니다. 이 폴더를 Xcode로 열어주고, Signing & Capabilities 설정에서 인증서를 등록해 줍니다. 만약에 인증서가 존재하지 않는다면 인증서를 발급하여 등록해 줍니다.

4. JavaScript 번들 생성
아래 명령어를 이용해 JavaScript 번들을 생성해 줍니다. --entry-file 부분에서 오류가 난다면, 앱의 진입 지점을 설정해 주면 됩니다. 저는 프로젝트 폴더 > app > index.tsx가 진입 지점이기 때문에 아래와 같이 명령어를 작성해 주었습니다.

npx expo export:embed --entry-file=app/index.tsx --bundle-output=./ios/main.jsbundle --dev=false --platform=ios
5. Xcode Build & Archive
위 명령어를 입력하여 JavaScript 번들을 생성하면 거의 모든 과정이 완료되었습니다. Xcode에서 Product > Archive 메뉴를 선택하여 빌드 및 Archive를 진행해 줍니다.


6. TestFlight 업로드
빌드와 Archive가 완료되면 Archive에 대한 창이 열립니다. 해당 창에서 TestFlight에 업로드를 진행하면 모든 과정이 완료됩니다.


