Mac 없이 iOS 앱 출시하기: Expo와 EAS 가이드
글: Mehdi Azizi
업데이트, 9분
Windows PC에서도 Expo와 EAS로 iOS 앱을 빌드하고 Apple에 보낼 수 있어요. Mac 없이 되는 것, 막히는 것, 그리고 iPhone이 꼭 필요한 이유를 정리했어요.
Mac 없이 iOS 앱을 출시할 수 있을까요?
네, 할 수 있어요. Expo와 React Native로 만든 앱이라면 Mac 없이 iOS 앱을 출시할 수 있어요. EAS Build가 Expo가 클라우드에서 운영하는 Mac에서 앱을 컴파일하고, EAS Submit이 그 빌드를 App Store Connect로 보내요. Expo 문서에도 분명히 나와 있어요. EAS Submit은 macOS, Linux, Windows에서 모두 동작하니까 iOS 빌드를 제출하는 데 Mac이 필요 없어요.
대신 무엇으로도 대체할 수 없는 세 가지가 필요해요. 유료 Apple Developer 계정, 앱을 실제로 테스트할 iPhone, 그리고 App Store Connect에서 앱 정보를 입력할 브라우저예요. 이 가이드의 나머지 부분에서는 Windows PC에서 되는 것, 막히는 것, 그리고 단계별 순서를 자세히 설명할게요.
제 iOS 앱은 전부 Expo, EAS Build, EAS Submit 순서로 이어지는 같은 흐름을 거쳐요. Solys와 TradaZen도 이렇게 App Store에 올라갔어요. 저는 Mac으로 작업하지만, 출시 과정 중 Mac이 꼭 필요한 단계는 하나도 없어요. 빌드는 Expo 클라우드에서 이루어지고, Apple로의 전송은 커맨드 라인으로 처리하거든요.
Expo와 EAS가 Mac을 대신하는 방식
무엇이 가능한지 이해하려면 왜 Mac이 필수였는지부터 알아야 해요. iOS 앱은 Apple의 도구인 Xcode로 컴파일해야 하는데, Xcode는 macOS에서만 돌아가요. 그것도 ITMS-90725 거절을 피할 만큼 최신 버전이어야 해요. 그다음 개발자 계정에 연결된 인증서로 서명하고 App Store Connect로 보내야 해요.
Expo는 이 작업을 세 가지 도구로 나눠요.
- Expo와 React Native: 어떤 컴퓨터에서든 JavaScript나 TypeScript로 앱을 작성해요.
- EAS Build: PC에서 명령어를 실행하면 코드가 Expo의 Mac으로 가서 앱을 컴파일하고 서명해 줘요. 설치하거나 제출할 수 있는 파일을 받게 돼요.
- EAS Submit: 이 빌드를 가져가 App Store Connect로 보내요. Apple이 처리 과정에서 아이콘 같은 것을 검사하고(ITMS-90717), 그게 끝나면 TestFlight에 나타나요.
이 흐름에도 Mac은 여전히 있어요. 다만 그게 여러분의 Mac이 아닐 뿐이에요. 제가 초보자에게 왜 이 스택을 추천하는지 궁금하다면 모바일 앱을 위한 React Native와 Expo 페이지를 읽어 보세요.
Windows PC에서 할 수 있는 것
앱 코딩하기
개발은 Windows에서 아무 제약 없이 전부 할 수 있어요. 에디터(VS Code, Cursor), Node.js, 터미널이면 돼요. Claude나 ChatGPT의 도움을 받아 코딩한다면 그것도 똑같아요. 이 주제는 AI로 iOS 앱 만들기를 읽어 보세요.
코딩하면서 iPhone에서 앱 확인하기
처음에는 iPhone에 설치한 Expo Go 앱으로 터미널에 표시된 QR 코드를 스캔하면 프로젝트가 로드돼요. 수정할 때마다 몇 초 만에 휴대폰에 반영돼요. 첫 화면들을 만들 때 딱 좋아요. 2026년 5월부터 App Store 버전의 Expo Go는 SDK 54에 머물러 있어요. 프로젝트를 만들 때 이 버전과 호환되도록 선택하거나, 더 최신 SDK가 필요하면 eas go와 TestFlight를 이용하세요.
Expo Go에는 한계가 있어요. Expo가 제공하는 네이티브 모듈만 들어 있다는 점이에요. 구독 기능을 위한 RevenueCat SDK처럼 Expo Go에 없는 네이티브 라이브러리를 쓰기 시작하면 개발 빌드가 필요해요. EAS Build로 컴파일해서 iPhone에 설치하는, 여러분만의 앱 버전이에요.
App Store를 거치지 않고 iPhone에 빌드 설치하기
EAS는 내부 배포(internal distribution)를 지원해요. eas device:create 명령어로 iPhone을 등록한 다음 internal 배포 방식으로 빌드를 실행하면 설치 링크를 받을 수 있어요. Apple은 이 방식에 제한을 둬요. 한 계정이 이렇게 배포할 수 있는 iPhone은 1년에 최대 100대이고, 새 기기를 추가할 때마다 새 빌드나 새 서명이 필요해요. 나 혼자 쓰거나 지인 몇 명과 쓰기에는 충분하고도 남아요.
Xcode 없이 인증서 관리하기
Mac에서도 초보자를 가장 많이 막는 게 서명이에요. 제출할 때 ITMS-90034 오류까지 나오기도 하죠. EAS를 쓰면 커맨드 라인에서 Apple 계정에 로그인하고, 도구가 배포 인증서와 프로비저닝 프로파일을 직접 생성해 줄 수 있어요. 키체인 접근을 열 일이 전혀 없어요.
Apple에 앱 보내고 출시하기
eas submit --platform ios로 빌드를 App Store Connect에 보내요. eas build의 --auto-submit 옵션으로 두 단계를 한 번에 이어서 할 수도 있어요. 나머지는 전부 브라우저에서 해요. App Store 앱 정보, 스크린샷, 개인정보 보호 항목, 구독, TestFlight, 심사 제출까지요. App Store Connect는 웹 앱이라 Windows에서도 아주 잘 돌아가요.
Mac 없이 안 되는 것(또는 더 어려운 것)
로컬 iOS 시뮬레이터
iOS 시뮬레이터는 Xcode의 일부라서 Windows에서는 실행되지 않아요. 실제로는 큰 문제가 아니에요. 테스트에는 시뮬레이터보다 iPhone이 더 나으니까요. Expo는 2026년 9월에 클라우드 iOS 시뮬레이터인 EAS Simulator를 발표했는데, 이 글을 쓰는 시점에는 아직 제한된 사용자만 쓸 수 있어요. 모두에게 공개되기 전까지는 작업 방식을 여기에 맞춰 짜지 마세요.
네이티브 코드 디버깅
크래시가 네이티브 코드(Swift, Objective-C, 잘못 설정된 라이브러리)에서 생긴다면, Apple의 진단 도구는 Xcode 안에 있어요. Mac이 없으면 EAS 빌드 로그와, 설치된 앱의 크래시를 수집해 주는 Sentry 같은 도구에 의존해야 해요. 할 수는 있지만 더 느려요. 그래서 첫 앱이라면 Expo와 호환되고 꾸준히 관리되는 라이브러리만 쓰는 게 좋아요. 제출할 때 ITMS-90338 거절을 피하는 데도 도움이 돼요.
네이티브 확장 기능 직접 작성하기
위젯, 알림 확장, 특정 네이티브 타깃 같은 것들은 Expo의 config plugin으로 만들 수는 있어요. 하지만 생성된 프로젝트를 들여다볼 Xcode가 없으면 오류 하나마다 빌드를 한 번 더 돌려야 해요. 첫 앱이라면 이런 기능은 나중으로 미뤄 두세요.
로컬 컴파일
EAS 로컬 빌드(--local 옵션)는 Windows에서 지원되지 않아요. 그래서 PC에서는 iOS 빌드가 Expo 클라우드를 거쳐요. EAS 무료 플랜에는 월별 빌드 횟수 제한과 대기열이 있어요. 빡빡한 작업 일주일을 계획하기 전에 Expo 요금 페이지에서 현재 조건을 확인하세요.
Apple Developer 계정: 예외 없이 필수예요
어떤 꼼수로도 이건 피할 수 없어요. 대기업의 사내 앱 전용인 Apple Developer Enterprise Program도 마찬가지예요. Apple Developer Program 가입 없이는 App Store Connect도, TestFlight도, 내부 배포도, App Store 제출도 없어요. 가입비는 연 99달러이고, 여러분 나라의 통화로 결제돼요.
가입 전에 두 가지 조언을 드릴게요.
- 개인 계정과 조직 계정 중 신중하게 고르세요. 개인 계정이면 App Store에 판매자로 내 이름이 표시돼요. 조직 계정이면 회사 이름이 표시되지만, Apple이 D-U-N-S 번호를 요구하고 인증도 더 오래 걸려요.
- 며칠 여유를 두세요. 계정 승인이 항상 바로 되는 건 아니에요. 출시할 거라는 확신이 들면 바로 가입하세요. 제출 전날 하지 말고요.
테스트용 iPhone이 정말 필요한 이유
기술적으로는 한 번도 손에 들어 보지 않은 iOS 앱을 출시할 수도 있어요. 하지만 저는 강력히 말리고 싶고, Apple도 마찬가지예요. Apple의 심사 지침(guideline 2.1)은 제출 전에 버그와 안정성을 기기에서 테스트하라고 요구해요. 사용자들에게는 결국 그것뿐이에요. 진짜 iPhone이요.
진짜 iPhone에서만 확인할 수 있는 것들이에요.
- 개발 서버 없이 이루어지는 실제 첫 실행: 시작할 때 생기는 크래시는 여기에 숨어 있어요.
- 테스트 환경의 인앱 구매: 페이월에 올바른 가격이 뜨는지, 구독하면 앱이 제대로 잠금 해제되는지 확인할 수 있어요.
- 알림, 카메라, 진동, 권한: 다른 환경에서는 다르게 동작하거나 아예 동작하지 않아요.
- 실제 레이아웃: 노치나 Dynamic Island, 홈 바, 입력 필드를 가리는 키보드 같은 것들이요.
- 부드러움: 성능 좋은 컴퓨터에서는 잘 드러나지 않아요.
최근 모델의 중고 iPhone이면 충분해요. 단, 사용하는 Expo SDK 버전이 지원하는 iOS 버전을 돌릴 수 있어야 해요. 가능하면 크기가 다른 iPhone도 빌려 보세요. 큰 화면에서는 멀쩡한 앱이 작은 화면에서는 잘릴 수 있거든요. 제가 Solys에서 거절당한 이유가 바로 이거였어요. Apple이 앱을 거절하는 이유에 그 이야기를 써 두었어요.
Mac은 없어도 돼요. iPhone이 없으면, 한 번도 작동하는 걸 본 적 없는 앱을 Apple에 보내는 셈이에요.
Windows에서 진행하는 단계, 순서대로
npx create-expo-app으로 프로젝트를 만들고, Expo Go로 첫 화면들을 테스트하세요.npm install -g eas-cli로 EAS CLI를 설치하고,eas login과eas build:configure를 실행하세요.- 프로젝트가 모양을 갖추기 시작하면 바로 Apple Developer Program에 가입하세요.
eas device:create로 iPhone을 등록하고 개발 빌드를 실행하세요.- App Store Connect에서 Expo 설정과 같은 번들 ID로 앱 정보를 만드세요.
eas build --platform ios로 프로덕션 빌드를 실행하세요.eas submit --platform ios로 빌드를 보내고, TestFlight에서 테스트하세요. 이 단계는 TestFlight로 앱 테스트하기 가이드에 자세히 나와 있어요.- 브라우저에서 앱 정보를 채우고 심사에 제출하세요. 프로모션 텍스트는 나중에 새 버전 없이도 바꿀 수 있어요.
이 단계에서 자주 빠지는 함정이 세 가지 있어요. 빌드 번호는 제출할 때마다 올라가야 해요. EAS의 자동 증가 기능을 켜 두면 신경 쓸 필요가 없어요. 암호화 관련 질문에 답하지 않으면 빌드마다 막혀요. 앱 설정에서 한 번에 선언해 둘 수 있어요. 그리고 번들 ID는 모든 곳에서 똑같아야 해요. 안 그러면 EAS Submit이 앱을 찾지 못해요. 앱 정보 작성부터 승인까지 그다음 과정은 App Store에 앱 출시하기 페이지에서 단계별로 다루고 있어요.
Mac 없이, 헤매지 않고 첫 앱 출시하기
이제 Mac은 진짜 걸림돌이 아니에요. 진짜 걸림돌은 다른 데 있어요. 수익을 낼 가능성이 있는 앱을 고르는 것, 제대로 동작하는 구독을 연결하는 것, Apple이 통과시켜 줄 제출 자료를 준비하는 것이요. iOS Kit의 4단계 과정이 바로 이걸 다루고, 자기 속도에 맞춰 따라가면 돼요. 제출 자료는 Apple Review Kit에 제가 제출 전에 쓰는 체크리스트와 심사자용 메모를 모아 두었어요. 홈페이지에서는 Mac이 있든 없든 Expo와 Claude Code로 처음부터 시작하지 않고 모바일 앱을 만드는 방법을 보여 드려요.
앱 출시에 대한 최종 결정은 Apple이 내리고, 어떤 키트도 그걸 보장할 수 없어요. 제가 드릴 수 있는 건 제 앱에 직접 적용하는 방법이에요.
자주 묻는 질문
Mac 없이 iOS 앱을 어떻게 출시하나요?
Expo와 React Native를 쓰면 Expo가 운영하는 Mac이 여러분의 Mac을 대신해요. 어떤 컴퓨터에서든 코딩하고, EAS Build가 클라우드에서 앱을 컴파일하고 서명한 뒤, EAS Submit이 App Store Connect로 보내요. 그 밖에 유료 Apple Developer 계정, 앱 정보를 입력할 브라우저, 앱을 실제로 테스트할 iPhone이 필요해요.
Windows에서 iOS 앱을 출시하는 단계는 무엇인가요?
Expo로 프로젝트를 만들고, EAS CLI를 설치하고, Apple Developer Program에 가입하세요. iPhone을 등록하고 개발 빌드를 실행한 다음, Expo 설정과 같은 번들 ID로 App Store Connect에 앱 정보를 만드세요. 그다음 프로덕션 빌드를 실행하고 EAS Submit으로 보낸 뒤 TestFlight에서 테스트하고, 브라우저에서 앱 정보를 채워 심사에 제출하면 돼요.
App Store에 앱을 출시하는 데 비용은 얼마인가요?
Apple Developer Program 가입비는 연 99달러이고, 여러분 나라의 통화로 결제돼요. 가입은 필수예요. 가입하지 않으면 App Store Connect도, TestFlight도, 내부 배포도, App Store 제출도 없어요. Expo 쪽에서는 EAS 무료 플랜에 월별 빌드 횟수 제한과 대기열이 있어요. Expo 요금 페이지에서 현재 조건을 확인하세요.
Mac 없이 iOS 앱을 출시하려면 iPhone이 꼭 필요한가요?
기술적으로는 아니에요. 하지만 저는 강력히 말리고 싶고, Apple도 마찬가지예요. Apple의 심사 지침(guideline 2.1)은 제출 전에 버그와 안정성을 기기에서 테스트하라고 요구해요. 최근 모델의 중고 iPhone이면 충분해요. 단, 사용하는 Expo SDK 버전이 지원하는 iOS 버전을 돌릴 수 있어야 해요.
Mac 없이 iOS 앱을 어떻게 테스트하나요?
iPhone에 Expo Go 앱을 설치하세요. 터미널에 표시된 QR 코드를 스캔하면 프로젝트가 로드되고, 수정할 때마다 몇 초 만에 반영돼요. Expo Go에는 Expo가 제공하는 네이티브 모듈만 들어 있어요. RevenueCat SDK처럼 없는 네이티브 라이브러리를 쓰기 시작하면 EAS Build로 컴파일한 개발 빌드가 필요해요. 최종 빌드 테스트는 TestFlight로 앱 테스트하기를 읽어 보세요.
Mac 없이 iOS를 개발할 때 한계는 무엇인가요?
로컬 iOS 시뮬레이터는 쓸 수 없어요. Xcode의 일부라서 Windows에서는 실행되지 않거든요. EAS 로컬 빌드(--local)도 Windows에서는 지원되지 않아서, iOS 빌드는 Expo 클라우드를 거쳐요. 네이티브 코드 디버깅과 네이티브 확장 기능 직접 작성은 가능하지만 더 어려워요. Apple의 도구가 Xcode 안에 있기 때문이에요.