Створити застосунок з Claude Code: туторіал для iPhone
Автор: Mehdi Azizi
Оновлено , 15 хв
Встанови Claude Code, створи проєкт Expo, напиши CLAUDE.md, проси по одному екрану й відправ застосунок у TestFlight через EAS: повний туторіал.
Як створити застосунок з Claude Code: коротка відповідь
Щоб створити застосунок з Claude Code, тобі потрібен платний доступ до Claude Code (сумісна підписка або Console з оплатою за використання), Node.js, iPhone з Expo Go і проєкт Expo. Ти пишеш файл CLAUDE.md, який описує твій стек і твої правила, просиш по одному екрану за раз, тестуєш кожен екран на своєму iPhone, а потім відправляєш застосунок у TestFlight через EAS.
Цей туторіал доповнює мій гайд створити iOS-застосунок за допомогою ШІ, де я пояснюю, що ШІ робить добре, а що в нього не виходить. Тут переходимо до практики: команди, файли, промпти.
Я щодня пишу свої iOS-застосунки з Claude Code і Cursor. Мій стек: React Native, Expo, EAS, RevenueCat і Supabase. Solys, будильник із міні-іграми, і TradaZen, застосунок для тренування трейдингу, опубліковані в App Store. Nolera і Clic Apple відхилила, потім я їх виправив. Усе, що нижче, взято з цієї роботи.
Щоб побачити цей метод на опублікованому застосунку, я задокументував шлях TradaZen, від першого коміту до відмов Apple і півотів. Цей досвід доповнює кроки туторіалу.
Крок 1: збери все необхідне
Перед першою командою перевір, що в тебе є все це.
Платний акаунт Claude
Claude Code не входить у безкоштовний план claude.ai. Згідно з документацією Anthropic, потрібен акаунт Pro, Max, Team, Enterprise або Console. Плану Pro достатньо, щоб почати, у межах його лімітів використання.
Node.js і термінал
Expo потребує Node.js у версії LTS на macOS, Windows або Linux. Claude Code працює на macOS 13 і новіших, Windows 10 і новіших та основних дистрибутивах Linux.
iPhone і Expo Go
Встанови Expo Go з App Store на свій iPhone, щоб пробувати перші екрани без компіляції власного застосунку. Перед створенням проєкту перевір версію SDK, сумісну з твоїм встановленням, на сторінці Expo Go. Найновіший SDK і версія, яка поширюється через App Store, не завжди доступні одночасно: Expo, зокрема, задокументувала таку розбіжність у травні 2026 року. Тож не відштовхуйся від номера версії зі старого туторіалу. Щоб використовувати власні нативні модулі, плануй збірку для розробки.
Mac? Не обов'язково
Збірки iOS компілюються на серверах Expo через EAS Build, з тією версією Xcode, яку обирає твій SDK Expo (ITMS-90725), а EAS Submit працює на macOS, Linux і Windows. Тож ти можеш дійти до TestFlight із ПК. Гайд опублікувати iOS-застосунок без Mac детально описує цей ланцюжок.
Акаунт Apple Developer, пізніше
Він не потрібен, щоб писати код і тестувати в Expo Go з App Store. Він стає обов'язковим, коли відправляєш застосунок у TestFlight. Повернемося до цього на кроці 7.
Крок 2: встанови Claude Code
На macOS, Linux або WSL Anthropic рекомендує нативний інсталятор:
curl -fsSL https://claude.ai/install.sh | bash
На Windows, у PowerShell:
irm https://claude.ai/install.ps1 | iex
Потім перевір, що встановлення спрацювало:
claude --version
Якщо тобі зручніше npm, команда така: npm install -g @anthropic-ai/claude-code. Не став перед нею sudo, документація прямо радить цього не робити.
Під час першого запуску claude відкриється браузер, щоб ти увійшов у свій акаунт. Далі просто пишеш звичайною мовою: Claude читає твої файли, пропонує зміни й запускає команди з твоєї згоди.
Крок 3: створи проєкт Expo
Перейди в папку, де зберігаєш свої проєкти, і запусти:
npx create-expo-app@latest my-app
cd my-app
npx expo start
Якщо інструмент запропонує вибрати між сумісністю з Expo Go з App Store і найновішим SDK, для цієї вправи обери сумісність. У будь-якому разі, перш ніж іти далі, перевір, що створену версію підтримує Expo Go, встановлений на твоєму iPhone. Збірку для розробки підготуєш, коли вона знадобиться проєкту.
У терміналі з'явиться QR-код. Відскануй його камерою iPhone: застосунок відкриється в Expo Go. Одна деталь часто блокує першого разу: Expo Go відкриває твій проєкт, лише якщо Expo CLI і Expo Go підключені до одного акаунта Expo. Запусти npx expo login на комп'ютері й увійди в той самий акаунт у застосунку.
Чому Expo, а не Swift? Claude дуже добре знає React Native, і ти тестуєш без Mac. Я пояснюю цей вибір на сторінці React Native і Expo для мобільного застосунку.
Пам'ятай про одне обмеження Expo Go: у ньому є лише ті нативні модулі, які він уже містить. Щойно додаєш нативну бібліотеку, якої він не знає, наприклад для вбудованих покупок, знадобиться збірка для розробки. Для перших екранів це не проблема.
Обери правильне середовище для тестування
Expo Go, збірка для розробки і TestFlight доводять різні речі. Expo описує збірку для розробки як твій власний тестовий застосунок із нативними модулями, потрібними проєкту.
| Що хочеш перевірити | Де тестувати | Чого цей тест не доводить |
|---|---|---|
| Показати перший екран і спробувати навігацію | Expo Go із сумісним SDK | Поведінку нативних модулів, яких немає в Expo Go |
| Використати нативну бібліотеку, додану в проєкт | Збірка для розробки, що містить цю бібліотеку | Ні версію для поширення, ні її схвалення Apple |
| Пройти застосунок для тестувальників, потім перевірити покупки | Збірка, відправлена в TestFlight, і правильно налаштовані продукти | Реальну оплату клієнта чи схвалення до продажу |
Перед додаванням залежності спитай Claude: «Чи сумісна вона з моїм SDK і моїм поточним середовищем тестування? Чи треба перекомпілювати застосунок? Спирайся на документацію». Так ти не витратиш вечір на виправлення модуля, який Expo Go просто не може завантажити, або SDK, відхиленого під час відправки через непублічний API.
Крок 4: напиши файл CLAUDE.md проєкту
Це найвигідніший крок. Claude Code може зберігати пам'ять проєкту, але ти маєш явно прописати правила. Файл CLAUDE.md у корені проєкту дає спільні інструкції для всіх сесій. Саме тут ти пишеш те, чого Claude не може вгадати.
У папці проєкту запусти claude, потім введи /init. Згідно з документацією, Claude аналізує проєкт і генерує перший CLAUDE.md з командами й конвенціями, які знайде. Потім ти доповнюєш його своїми правилами. Anthropic радить тримати файл до 200 рядків: що довший файл, то гірше виконуються інструкції.
Ось короткий приклад, близький до того, що використовую я:
# Мій застосунок
## Стек
- Expo (SDK з create-expo-app), React Native, суворий TypeScript
- Навігація: Expo Router, один файл на екран в app/
- Дані: Supabase (пізніше), жодного секретного ключа в застосунку
## Правила
- Один екран за раз. Не чіпай файли поза запитом.
- Жодної фіксованої висоти в пунктах: розміри відносно екрана,
ScrollView, якщо вміст може не вміститися.
- Кожен екран обробляє 3 стани: завантаження, порожній, помилка.
- Тексти інтерфейсу українською, з правильним правописом.
- Перед зміною більш ніж 2 файлів: запропонуй план і дочекайся моєї згоди.
## Команди
- Запуск: npx expo start
- Тести: брати скрипт, який реально є в package.json.
Якщо його ще немає, повідомити; не заявляти про успішні тести.
- Типи: npx tsc --noEmit
- Після кожної зміни: запустити тести й типи, потім сказати мені,
що змінилося і як це перевірити на iPhone.
Правило про фіксовані висоти тут не випадково. Повернемося до нього на кроці 6.
Крок 5: проси по одному екрану
«Зроби мені застосунок для трекінгу звичок із підпискою» дає величезний, крихкий проєкт, який неможливо перечитати. Метод, що працює, протилежний: один запит, один екран, результат, який можна протестувати за п'ять хвилин.
Почни з плану
Для всього, що зачіпає кілька файлів, переходь у режим плану. Натискай Shift+Tab, поки не побачиш plan mode on у рядку стану. У цьому режимі Claude читає файли й пропонує план, але нічого не змінює без твоєї згоди. Ти перечитуєш, виправляєш, потім підтверджуєш.
Перший промпт для окреслення рамок виглядає так:
Я хочу застосунок для трекінгу звичок. Версія 1: одна функція,
відмічати звички на сьогодні. Запропонуй список екранів і
структуру папок. Поки що нічого не пиши в коді.
Опиши екран, його стани й межі
Далі один промпт на екран. Що більше крайніх випадків ти назвеш, то рідше Claude їх забуде:
Створи екран app/index.tsx зі списком звичок на сьогодні.
- Кожен рядок: назва звички, чекбокс, поточна серія.
- Порожній стан: текст і кнопка «Додати звичку».
- Стан завантаження і стан помилки з кнопкою «Спробувати ще».
- Дані поки що беруться з локального масиву.
- Має вміщатися і на iPhone SE, і на найбільшому iPhone:
без фіксованої висоти, список прокручується.
Наприкінці запусти тести й типи.
Виправляй, не даючи переписати все
Коли якась деталь не так, будь точним і обмеж обсяг:
На моєму iPhone кнопка «Додати звичку» ховається під нижньою панеллю,
коли список довгий. Виправ лише цю проблему в app/index.tsx,
не чіпаючи інших файлів. Поясни причину.
Можеш також вставити скриншот у термінал: Claude його прочитає.
Вправа: звичка залишається відміченою після перезапуску
Це навчальна вправа для твого проєкту, а не скриншот уже готової функції. Мета: перейти від згенерованого екрана до поведінки, яку можна перевірити. Вона не потребує ні акаунта користувача, ні вбудованих покупок.
- Залиш одну локальну звичку з назвою «Читати 10 хвилин».
- Попроси чекбокс і локальне збереження, сумісне з твоїм проєктом Expo.
- Попроси агента вказати змінені файли, можливу залежність і команди, які реально виконано.
- Встанови або відкрий застосунок на iPhone, потім виконай перевірки нижче.
На основі наявного екрана зроби звичку «Читати 10 хвилин»
такою, яку можна відмітити, і збережи її стан після закриття й
повторного відкриття застосунку.
Використай локальне сховище, сумісне із залежностями проєкту.
Не створюй ні акаунта, ні сервера, ні підписки, ні додаткової статистики.
Перед кодом поясни, як обробиш завантаження і збій
читання або збереження. Потім зроби обмежену зміну.
Наприкінці: змінені файли, виконані команди, неперевірені обмеження
і точні кроки, щоб перевірити результат на iPhone.
| Дія на iPhone | Очікуваний результат | Якщо не працює |
|---|---|---|
| Відкрити застосунок уперше | Звичку і чекбокс видно, помилок немає | Перевірити початковий стан і завантаження зі сховища |
| Відмітити, потім закрити й знову відкрити | Звичка залишається відміченою | Перевірити запис, а потім читання того самого ключа |
| Зняти відмітку, потім перезапустити | Звичка залишається невідміченою | Перевірити, що значення false теж зберігається |
| Пройти той самий сценарій у режимі польоту | Локальна функція залишається доступною | Знайти мережеву залежність, додану без причини |
| Збільшити розмір тексту | Назва й елемент керування залишаються доступними | Прибрати обмеження, що обрізають або ховають дію |
Не проси «перепиши все», якщо один рядок не проходить. Опиши дію, очікуваний результат і фактичний результат. Наприклад: «Після перезапуску чекбокс знову порожній, хоча я його відмітив. Поясни причину й виправ збереження, не змінюючи дизайн».
Завантажити шаблон CLAUDE.md і чекліст перевірки (.md). Відкрий його в редакторі або в застосунку для нотаток. Адаптуй команди під свій проєкт, перш ніж передавати його агенту.
Крок 6: давай перечитувати й тестуй
Claude Code пише код, який виглядає правильним. Лише твої тести й твій iPhone скажуть, чи він справді правильний.
Тести, щоб не зламати те, що працює
Що більшим стає застосунок, то вищий ризик, що кожен запит зламає вже перевірений екран. У проєкті, створеному Expo, тестів немає: спершу попроси Claude встановити Jest з jest-expo, як радить документація Expo. Потім попроси тести для важливої логіки (підрахунок серії, валідація форми) і нехай він запускає їх після кожної зміни. Саме тому команди тестів записані в CLAUDE.md: Claude виконує їх, і тобі не треба нагадувати. З файлом правил і тестами ШІ набагато рідше ламає те, що вже працювало.
Перечитуй кожну зміну
Тобі не треба розуміти кожен рядок. Ти маєш знати, які файли змінилися і чому. Якщо Claude змінив файл не по темі, спитай причину, перш ніж приймати. Потім постав питання: «що тут може зламатися?».
Перевіряй на маленькому й великому iPhone
Цей урок коштував мені найдорожче. Apple відхилила Solys за правилом 2.1: демо в онбордингу неможливо було виграти на iPad Air, де застосунок працював у режимі сумісності з iPhone. Причина: висоти, задані фіксованими пунктами, а не відносно розміру екрана. На моєму iPhone все було добре. Код перечитали, тести були зелені. Жоден інструмент не подивився на екран іншого розміру.
Відтоді я перевіряю кожен екран щонайменше на найменшому і на найбільшому iPhone. Якщо в тебе лише один телефон, підійде симулятор Xcode на Mac або друг з іншою моделлю. Особливо дивись на довгі тексти, відкриту клавіатуру у формах і кнопки, закріплені внизу.
Що Claude Code робить погано
Claude Code чудово справляється з екранами й логікою. За межами твоєї папки він набагато менш надійний.
Підпис і сертифікати
Без дозволеного підключення до твого акаунта Apple Claude не знає його стану. Він може вигадати процедуру з сертифікатами, яка змішує Xcode і Expo. Дай EAS керувати підписом: документація Expo пояснює, що EAS CLI може згенерувати й зберігати ці файли за тебе після підключення до твого акаунта Apple Developer.
App Store Connect
Сторінка застосунку, декларації конфіденційності, скриншоти і юридичні посилання: це дані, які треба перевіряти в App Store Connect. Тепер Claude Code може діяти в браузері, де ти залогінений, через свою інтеграцію з Chrome, за наявності потрібних доступів. Це не гарантує, що поля правильні: перечитай інформацію, перевір використані акаунти і сам підтверджуй зобов'язання та відправку на перевірку.
Підписки
Написати paywall займає десять хвилин. Узгодити продукти в App Store Connect, їхнє налаштування в RevenueCat і код: це зовсім інша історія. Ідентифікатор, що відрізняється на один символ, і paywall у рев'юера порожній. Найпоширеніші пастки зібрані в статті помилки новачків з paywall в iOS.
Крайні випадки
Без інструкції Claude обробляє лише стандартний сценарій. Немає мережі, порожній список, перервана покупка: назвати їх маєш ти.
Безпека Supabase
Коли Claude створює таблиці в Supabase, перевір, що безпеку на рівні рядків (RLS) увімкнено, з політиками, які обмежують кожного користувача його власними даними. Також перевір, що жоден секретний ключ не потрапив у код застосунку. Запиши ці дві заборони в CLAUDE.md, щойно підключаєш базу.
Крок 7: переходь у TestFlight через EAS
Твої екрани перевірено в Expo Go або у збірці для розробки, залежно від використаних модулів. Тепер переходь до збірки, яку отримають тестувальники.
Підготуй EAS
Тепер тобі потрібен платний акаунт Apple Developer: як нагадує Expo, він обов'язковий, щоб відправити застосунок в App Store. Потім встанови інструмент Expo і налаштуй проєкт:
npm install --global eas-cli
eas login
eas build:configure
Додай унікальний bundle identifier в app.json, у ios.bundleIdentifier, наприклад com.yourname.myapp.
Скомпілюй і відправ
eas build --platform ios --profile production
eas submit --platform ios
Перша команда компілює застосунок на серверах Expo. Під час першого запуску EAS запропонує підключитися до твого акаунта Apple, щоб створити сертифікати. Друга відправляє збірку в App Store Connect. Можна зробити все одразу командою eas build --platform ios --auto-submit.
Apple має обробити збірку, перш ніж вона з'явиться в TestFlight, і під час цієї обробки її можуть відхилити, наприклад з ITMS-90717 через прозору іконку. Тож успішна відправка не означає, що збірку вже можна встановити: перевір її статус в App Store Connect. Внутрішніх і зовнішніх тестувальників та бета-перевірку я пояснюю в гайді TestFlight для тестування застосунку на iPhone.
Повтори перевірки з кроку 6 на цій збірці. Застосунок, який працює в Expo Go, все ще може падати в продакшні, наприклад коли бракує нативного модуля.
Скільки це насправді коштує
Ось ціни, вказані сервісами й перевірені 27 вересня 2026 року, у доларах. Сума до сплати також залежить від твого регіону, податків і використання: перевір тариф перед підпискою.
- Підписка Claude: план Pro коштує 20 $ на місяць, або 17 $ на місяць при оплаті за рік. Плани Max починаються від 100 $ на місяць, для більшого обсягу використання.
- Акаунт Apple Developer: 99 $ на рік, обов'язковий для TestFlight і App Store.
- EAS: безкоштовний план Expo включає 15 збірок iOS на місяць у черзі з низьким пріоритетом. План Starter коштує 19 $ на місяць плюс додаткове використання.
Для невеликого прототипу Pro і безкоштовний план EAS можуть стати базою, якщо вкладаєшся в їхні квоти. Додай акаунт Apple перед TestFlight, а потім окремо порахуй сервіси, які справді потрібні: база даних, сховище чи платний API. Шаблон бюджету першого застосунку допоможе розписати ці статті. Час на налаштування й перевірку теж треба закласти.
Чесні обмеження і де застрягають
Claude Code змінив те, хто може створити застосунок для iPhone. Він не змінив того, чого Apple вимагає для публікації. Відмова приходить швидко: Solys їх отримувала, Nolera і Clic теж. Найчастіші причини описані в статті чому Apple відхиляє застосунок.
З цим туторіалом ти можеш сам дійти до TestFlight. Найчастіше застрягають далі: підключити підписки, підготувати пакет для рев'юера, зрозуміти відмову. Щоб побачити весь шлях загалом, прочитай сторінку створити застосунок для iPhone.
Для цієї частини iOS Kit містить стартовий код моїх застосунків, включно з підписками, скіли Claude Code для кожного етапу і Apple Review Kit. Повний шлях є на сторінці курс Claude Code для створення iOS-застосунку.
Уже застряг і не знаєш на чому? Безкоштовна діагностика покаже, що тебе насправді гальмує, і надішле мій чекліст проти відмов Apple.
Поширені запитання
Чи можна створити застосунок для iPhone з Claude Code, не вміючи програмувати?
Так, для екранів і простої логіки, якщо ти перечитуєш і тестуєш кожен крок. Ні, якщо сподіваєшся взагалі нічого не розуміти. Ти маєш уміти прочитати повідомлення про помилку, запустити команду й перевірити, що змінив Claude. Цьому швидко вчишся в процесі.
Чи Claude Code безкоштовний?
Ні. Claude Code потребує акаунта Pro, Max, Team, Enterprise або Console. Безкоштовний план claude.ai його не включає. Плану Pro достатньо для старту, але стеж за лімітами використання.
Чи потрібен Mac, щоб створити iOS-застосунок з Claude Code?
Ні. Ти пишеш код на будь-якому комп'ютері, тестуєш в Expo Go на своєму iPhone, а EAS компілює й відправляє застосунок на серверах Expo. Mac зручний для симулятора, але не обов'язковий.
Claude Code чи Cursor для застосунку на React Native?
Я користуюся обома щодня. Claude Code працює в терміналі й сам виконує зміни та тести одне за одним. Cursor це редактор. Метод важить більше за інструмент: правила, один екран за раз, тести.
Скільки часу потрібно, щоб опублікувати перший застосунок з Claude Code?
Залежить від розміру застосунку і твого часу. Застосунок з однією функцією робиться набагато швидше. Найнепередбачуванішою частиною залишається перевірка Apple.
Чи може Claude Code налаштувати вбудовані підписки?
Він може написати код paywall і RevenueCat. З підключеними інструментами й потрібними дозволами він також може діяти в консолях. Ніколи не роби висновок, що продукти налаштовані, лише тому, що є код: перевір ідентифікатори, ціни й доступи після покупки, потім протестуй покупку і відновлення в TestFlight. Типові помилки paywall в iOS підкажуть, що перевірити.