Як опублікувати iOS-застосунок без Mac: Expo і EAS
Автор: Mehdi Azizi
Оновлено , 9 хв
З Windows-ПК Expo та EAS збирають твій iOS-застосунок і надсилають його Apple. Що працює без Mac, що ні і навіщо тобі iPhone.
Чи можна опублікувати iOS-застосунок без Mac?
Так. Ти можеш опублікувати iOS-застосунок без Mac, якщо створюєш його на Expo і React Native. EAS Build компілює застосунок на Mac, які Expo тримає у хмарі, а EAS Submit потім надсилає його в App Store Connect. Документація Expo каже це прямо: EAS Submit працює на macOS, Linux і Windows, тож Mac тобі не потрібен, щоб відправити iOS-білд.
Зате тобі потрібні три речі, які нічим не заміниш: платний акаунт Apple Developer, iPhone, щоб протестувати застосунок по-справжньому, і браузер, щоб заповнити сторінку в App Store Connect. Далі в цьому гайді: що працює з Windows-ПК, де виникають складнощі і в якому порядку все робити.
Усі мої iOS-застосунки проходять через цей ланцюжок: Expo, EAS Build, потім EAS Submit. Solys і TradaZen потрапили в App Store саме так. Я працюю на Mac, але жоден крок публікації від нього не залежить: білди збираються в хмарі Expo, а відправка в Apple йде через командний рядок.
Як Expo і EAS замінюють Mac
Щоб зрозуміти, що можливо, треба знати, чому Mac був обов'язковим. iOS-застосунок має бути скомпільований у Xcode, інструменті Apple, який працює лише на macOS, і в достатньо свіжій версії, щоб уникнути відмови ITMS-90725. Потім його треба підписати сертифікатом, прив'язаним до твого акаунта розробника, і надіслати в App Store Connect.
Expo ділить цю роботу на три інструменти:
- Expo і React Native: ти пишеш застосунок на JavaScript або TypeScript, на будь-якому комп'ютері.
- EAS Build: ти запускаєш команду зі свого ПК, код їде на Mac від Expo, який компілює і підписує застосунок за тебе. Ти отримуєш файл, готовий до встановлення чи відправки.
- EAS Submit: бере цей білд і надсилає його в App Store Connect. Після обробки в Apple, яка перевіряє, наприклад, іконку (ITMS-90717), він з'являється в TestFlight.
Mac у ланцюжку нікуди не зник. Просто він більше не твій. Якщо хочеш зрозуміти, чому я раджу цей стек новачкам, почитай сторінку React Native і Expo для мобільного застосунку.
Що можна робити з Windows-ПК
Писати код застосунку
Уся розробка йде на Windows без обмежень: твій редактор (VS Code, Cursor), Node.js, термінал. Якщо пишеш код із допомогою Claude чи ChatGPT, теж нічого не змінюється. Про це почитай як створити iOS-застосунок зі ШІ.
Бачити застосунок на iPhone, поки пишеш код
Для старту застосунок Expo Go на твоєму iPhone сканує QR-код у терміналі і завантажує проєкт. Кожна зміна з'являється на телефоні за кілька секунд. Ідеально для перших екранів. З травня 2026 року версія Expo Go в App Store залишається на SDK 54: створюй проєкт із сумісністю з нею або використовуй eas go і TestFlight для новішого SDK.
У Expo Go є обмеження: він містить лише нативні модулі, які дає Expo. Щойно застосунок використовує нативну бібліотеку, якої там немає, як-от SDK RevenueCat для підписок, тобі потрібен development build: твоя власна версія застосунку, скомпільована EAS Build, яку ти встановлюєш на iPhone.
Встановити білд на iPhone без App Store
EAS пропонує внутрішню дистрибуцію. Ти реєструєш iPhone командою eas device:create, потім запускаєш білд із дистрибуцією internal. Отримуєш посилання на встановлення. Apple обмежує цей метод: один акаунт може так поширювати застосунок щонайбільше на 100 iPhone на рік, і кожен новий пристрій вимагає нового білда або нового підпису. Для тебе і кількох близьких цього з головою.
Керувати сертифікатами без Xcode
Підпис найбільше гальмує новачків навіть на Mac, аж до помилки ITMS-90034 під час відправки. З EAS ти входиш в акаунт Apple з командного рядка, а інструмент може сам згенерувати сертифікат дистрибуції і provisioning profile. Ти взагалі не відкриваєш Keychain Access.
Надіслати застосунок в Apple і опублікувати його
eas submit --platform ios надсилає білд в App Store Connect. Можна також об'єднати два кроки опцією --auto-submit у eas build. Усе інше відбувається в браузері: сторінка в App Store, скриншоти, декларації конфіденційності, підписки, TestFlight і відправка на рев'ю. App Store Connect це вебзастосунок, і на Windows він працює чудово.
Що неможливо (або складніше) без Mac
Локальний iOS-симулятор
iOS-симулятор входить у Xcode, тож на Windows він не працює. На практиці це не страшно: твій iPhone для тестів кращий за симулятор. У вересні 2026 року Expo анонсувала хмарний iOS-симулятор, EAS Simulator, на момент написання ще в обмеженому доступі. Не будуй на ньому свій процес, поки він не відкритий для всіх.
Налагодження нативного коду
Якщо краш іде з нативного коду (Swift, Objective-C, неправильно налаштована бібліотека), діагностичні інструменти Apple є в Xcode. Без Mac ти залежиш від логів білда EAS та інструмента на кшталт Sentry, який збирає краші встановленого застосунку. Це реально, але повільніше. Тому для першого застосунку тримайся бібліотек, сумісних з Expo і підтримуваних, це ще й убереже від відмови ITMS-90338 під час відправки.
Писати нативні розширення вручну
Віджети, розширення сповіщень, специфічні нативні таргети: з Expo це можливо завдяки config plugins, але без Xcode, щоб переглянути згенерований проєкт, кожна помилка коштує ще одного білда. Для першого застосунку відклади ці функції на потім.
Локальна компіляція
Локальні білди EAS (опція --local) не підтримуються на Windows. Тож на ПК твої 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 теж: її правила рев'ю (guideline 2.1) вимагають, щоб застосунок перед відправкою був протестований на пристрої на баги і стабільність. А в твоїх користувачів буде лише це: справжній iPhone.
Ось що показує лише справжній iPhone:
- Справжній перший запуск, без сервера розробки: саме тут ховаються краші під час старту.
- Вбудовані покупки в тестовому середовищі, щоб перевірити, що paywall показує правильні ціни і що підписка справді відкриває застосунок.
- Сповіщення, камера, вібрація, дозволи, які деінде поводяться інакше або не працюють зовсім.
- Реальна верстка: виріз або Dynamic Island, нижня панель, клавіатура, що перекриває поле.
- Плавність, яку потужний комп'ютер часто приховує.
Вистачить свіжого вживаного iPhone, якщо на ньому працює версія iOS, яку підтримує твоя версія Expo SDK. І якщо можеш, позич ще iPhone іншого розміру: застосунок, що нормально виглядає на великому екрані, може обрізатися на маленькому. Саме через це я отримав відмову для Solys, про що розповідаю в статті чому Apple відхиляє застосунок.
Без Mac це можливо. Без iPhone ти надсилаєш Apple застосунок, який ніколи не бачив у роботі.
Кроки по порядку з Windows
- Створи проєкт командою
npx create-expo-appі протестуй перші екрани в Expo Go. - Встанови EAS CLI командою
npm install -g eas-cli, потімeas loginіeas build:configure. - Зареєструйся в Apple Developer Program, щойно проєкт почне набувати форми.
- Зареєструй iPhone командою
eas device:createі запусти development build. - Створи сторінку застосунку в App Store Connect з тим самим bundle identifier, що й у конфігурації Expo.
- Запусти продакшн-білд командою
eas build --platform ios. - Надішли його командою
eas submit --platform ios, потім протестуй у TestFlight. Гайд TestFlight для тестування застосунку детально описує цей крок. - Заповни сторінку і надішли на рев'ю з браузера. Promotional text потім можна змінювати без нової версії.
На цьому етапі часто трапляються три пастки. Номер білда має зростати з кожною відправкою: увімкни автоматичний інкремент в EAS, щоб більше про це не думати. Питання про шифрування блокує кожен білд, поки ти на нього не відповів: можна задекларувати це раз і назавжди в конфігурації застосунку. І bundle identifier має бути однаковим усюди, інакше EAS Submit не знайде твій застосунок. Що далі, від сторінки до схвалення, кожен крок описано на сторінці публікація застосунку в App Store.
Опублікувати перший застосунок без Mac і не заблукати
Mac більше не головна перешкода. Справжні перешкоди в іншому: обрати застосунок, який має шанс заробляти, підключити підписки, що працюють, підготувати пакет, який Apple прийме. Саме це покриває чотириетапний шлях iOS Kit, який можна проходити у своєму темпі. Для пакета на рев'ю Apple Review Kit збирає мій чекліст перед відправкою і нотатки для тестувальника. На головній сторінці показано, як створити мобільний застосунок не з нуля з Expo і Claude Code, з Mac чи без.
Остаточне рішення про публікацію твого застосунку лишається за Apple, і жоден кіт не може його гарантувати. Що я можу тобі дати, то це метод, який застосовую до своїх застосунків.
Поширені запитання
Як опублікувати iOS-застосунок без Mac?
З Expo і React Native твій Mac замінює Mac, який тримає Expo. Ти пишеш код на будь-якому комп'ютері, EAS Build компілює і підписує застосунок у хмарі, потім EAS Submit надсилає його в App Store Connect. Тобі також потрібні платний акаунт Apple Developer, браузер, щоб заповнити сторінку, і iPhone, щоб протестувати застосунок по-справжньому.
Які кроки потрібні, щоб опублікувати iOS-застосунок з Windows?
Створи проєкт на Expo, встанови EAS CLI і зареєструйся в Apple Developer Program. Зареєструй iPhone, запусти development build, потім створи сторінку в App Store Connect з тим самим bundle identifier, що й у конфігурації Expo. Далі запусти продакшн-білд, надішли його через EAS Submit і протестуй у TestFlight, потім заповни сторінку і надішли застосунок на рев'ю з браузера.
Скільки коштує опублікувати застосунок в App Store?
Членство в Apple Developer Program коштує 99 $ на рік, списаних у твоїй валюті. Воно обов'язкове: без нього немає ні App Store Connect, ні TestFlight, ні внутрішньої дистрибуції, ні відправки в App Store. З боку Expo безкоштовний план EAS включає обмежену кількість білдів на місяць, із чергою: перевір актуальні умови на сторінці тарифів Expo.
Чи потрібен iPhone, щоб опублікувати iOS-застосунок без Mac?
Технічно ні, але я категорично не раджу, і Apple теж: її правила рев'ю (guideline 2.1) вимагають, щоб застосунок перед відправкою був протестований на пристрої на баги і стабільність. Вистачить свіжого вживаного iPhone, якщо на ньому працює версія iOS, яку підтримує твоя версія Expo SDK.
Як протестувати iOS-застосунок без Mac?
Встанови Expo Go на iPhone: він сканує QR-код у терміналі і завантажує проєкт, а кожна зміна видна за кілька секунд. Expo Go містить лише нативні модулі, які дає Expo. Щойно застосунок використовує нативну бібліотеку, якої там немає, як-от SDK RevenueCat, тобі потрібен development build, скомпільований EAS Build. Щоб протестувати фінальний білд, почитай TestFlight для тестування застосунку.
Які обмеження iOS-розробки без Mac?
Ти не можеш користуватися локальним iOS-симулятором: він входить у Xcode, тож на Windows не працює. Локальні білди EAS (--local) не підтримуються на Windows: твої iOS-білди йдуть через хмару Expo. Налагоджувати нативний код і писати нативні розширення вручну можна, але складніше, бо інструменти Apple є в Xcode.