Создать приложение с 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, чтобы пробовать первые экраны без сборки собственного приложения. Перед созданием проекта проверь на странице Expo Go, какая версия SDK совместима с твоей установкой. Последний SDK и версия в App Store не всегда выходят одновременно: Expo, например, описала такое расхождение в мае 2026. Так что не опирайся на номер версии из старого туториала. Если хочешь использовать свои нативные модули, понадобится development build.
Mac? Не обязателен
iOS-сборки компилируются на серверах Expo через EAS Build, с той версией Xcode, которую выбирает твой Expo SDK (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. Development build подготовишь, когда проекту это понадобится.
В терминале появится 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: в нём есть только те нативные модули, которые он уже содержит. Как только добавишь нативную библиотеку, которой он не знает, например для встроенных покупок, понадобится development build. Для первых экранов это не проблема.
Выбрать правильную среду для тестов
Expo Go, development build и TestFlight доказывают разные вещи. Expo описывает development build как твоё собственное тестовое приложение с нативными модулями, которые нужны проекту.
| Что хочешь проверить | Где тестировать | Чего этот тест не покажет |
|---|---|---|
| Показать первый экран и попробовать навигацию | Expo Go с совместимым SDK | Поведение нативных модулей, которых нет в Expo Go |
| Использовать нативную библиотеку, добавленную в проект | Development build с этой библиотекой | Ни распространяемую версию, ни то, примет ли её Apple |
| Пройти приложение, как тестировщик, потом проверить покупки | Сборка, отправленная в TestFlight, и правильно настроенные продукты | Реальный платёж клиента или одобрение выхода в продажу |
Перед добавлением зависимости спроси Claude: «Она совместима с моим SDK и текущей средой тестирования? Нужно ли пересобирать приложение? Опирайся в ответе на документацию». Так ты не потратишь вечер на исправление модуля, который Expo Go просто не может загрузить, или SDK, отклонённого при отправке из-за непубличного API.
Шаг 4: написать файл CLAUDE.md для проекта
Это самый выгодный шаг. Claude Code умеет хранить память проекта, но правила нужно прописать явно. Файл CLAUDE.md в корне проекта задаёт общие инструкции для всех сессий. Туда ты пишешь то, о чём Claude не может догадаться сам.
В папке проекта запусти claude и набери /init. По документации, Claude проанализирует проект и сгенерирует первый CLAUDE.md с найденными командами и соглашениями. Потом ты дополняешь его своими правилами. Anthropic советует держаться в пределах 200 строк: чем длиннее файл, тем хуже соблюдаются инструкции.
Вот короткий пример, близкий к тому, что использую я:
# My app
## Стек
- 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
Этот урок обошёлся мне дороже всего. 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 остаётся пустым. Самые частые ловушки собраны в статье ошибки новичков в iOS paywall.
Пограничные случаи
Без указаний Claude обрабатывает только основной сценарий. Нет сети, пустой список, прерванная покупка: их должен назвать ты.
Безопасность Supabase
Когда Claude создаёт таблицы в Supabase, проверь, что включена защита на уровне строк (RLS) с политиками, которые ограничивают каждого пользователя его собственными данными. Ещё проверь, что ни один секретный ключ не попал в код приложения. Пропиши эти два запрета в CLAUDE.md, как только подключаешь базу.
Шаг 7: переход в TestFlight через EAS
Твои экраны проверены в Expo Go или в development build, в зависимости от используемых модулей. Теперь переходи к сборке, которую получат тестировщики.
Подготовить 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 объединяет стартовый код моих приложений, включая подписки, skills 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. Частые ошибки iOS paywall подскажут, что проверить.