
Разбор · 8 октября 2026
Обновление мобильного приложения выпускают с проверкой клиентов, которые ещё не установили новую версию
Что заказать перед мобильным релизом: проверку прежних сборок с новым API, порядок включения функции и способ остановить сбой.
Текст подготовлен инженером, который ведёт vibecoding.ru, вместе с машиной агентов. Источники проверены 8 октября 2026.
Новую версию мобильного приложения можно опубликовать сегодня, а старую сборку клиент откроет завтра. Поэтому перед выпуском проверяют, что новый API обслуживает поддерживаемые прежние сборки. Новую функцию включают отдельно, когда проверены и сервер, и клиент.
У нас нет клиентского кейса мобильного релиза и собственного выпуска через магазин приложений. Наш опыт — машина агентов на сайте: инженер ведёт её, а поломки превращаются в проверки. Ниже соединяем этот способ работы с документацией магазинов и API, чтобы CTO мог заказать и принять подготовку своего релиза.
Не хотите разбираться сами? Внедряем ИИ в ваш бизнес: задачи без лимита, одна цена в месяц, отмена в любой момент.
1. Завершённый выпуск в магазине не означает, что все клиенты обновились.
Apple распределяет поэтапное автообновление за семь дней: от 1 % в первый день до 100 % в последний. Речь о подходящих устройствах с включёнными автообновлениями. При этом вручную скачать новую сборку можно в любой день, ещё до завершения этапов.
В Google Play команда сама увеличивает долю выпуска. Документация предупреждает, что получение обновления выбранной группой занимает время. Если остановить выпуск, уже получившие новую сборку остаются на ней.
Фича-флагами новой функции управляют доступом первых пользователей без отдельной версии продукта.
В вымышленном примере приложения заказа старый клиент читает итог из поля total, а новый сервер после переименования отдаёт amount. Магазин может исправно распространять сборку, но прежний клиент уже не прочитает сумму. Этот пример дальше используем как задачу для приёмки.
Магазин распространяет сборку, совместимость проверяет команда.
Apple App Store Connect и Google Play Console, проверено 08.10.2026. Последняя строка — вывод автора, не функция магазина.
2. Поддерживаемые сборки выбирают по своим клиентам и правилам продукта.
Перед правкой API команде нужен список сборок, которые она обязуется обслуживать. Его сверяют с обращениями к серверу: платформа, номер сборки, используемый метод, результат запроса. Срок наблюдения указывают в отчёте; отсутствие запросов за короткое окно ещё не означает, что клиент исчез.
Часть клиентов возвращается редко или отправляет сохранённый заказ после работы без сети. Поэтому отдельно проверяют офлайн-очередь и повторную отправку. Запрос без номера сборки оставляют в группе «неизвестно», пока не выяснят его источник.
Сохранение прежнего API может выглядеть как лишний код. Но удалять его до согласованного конца поддержки рискованно. Разбор технического долга помогает убрать дублирование; срок отказа от старого клиента задаёт владелец продукта, а не агент по отсутствию вчерашних запросов.
Что и как мы проверяли
| Факт | Что известно | Проверено |
|---|---|---|
| Магазины | Правила распространения Apple и остановки Google Play прочитаны в документации. | 2026-10-08 |
| API | Рекомендации Google AIP-180 и механизм контрактных тестов Pact. | 2026-10-08 |
| Функция | Условия по версии приложения в Firebase Remote Config. | 2026-10-08 |
| Наш опыт | Публичные /open и /services, исходные записи веб-инцидентов. Клиентского мобильного кейса и выпуска через магазин нет. | 2026-10-08 |
3. Совместимость принимают на прежнем клиенте, а не только на новом ответе API.
Google AIP-180 рассматривает API как контракт с существующим кодом. Переименование поля, смена его типа или новое обязательное поле запроса могут нарушить этот контракт. В нашем примере total сохраняют для поддерживаемого клиента, а amount вводят в отдельном контракте для новых сборок, например в новой версии API.
Даже добавление поля проверяют на конкретном клиенте: его разбор ответа может отвергнуть незнакомые данные. Сначала запускают тесты запросов и ожидаемых ответов старой сборки против нового сервера. Затем запускают саму сборку и проходят критический путь до результата в заказе.
В задаче для агента перечисляют сборки, сценарий и ожидаемый итог. «Обнови API» не задаёт приёмку. «Поддерживаемый старый клиент оформляет заказ на новом сервере, сумма совпадает, повторная отправка не создаёт второй заказ» уже можно проверить.
Отчёт связывает сборку, сервер и результат заказа.
План приёмки автора на основе Google AIP-180 и документации Pact, 08.10.2026. Контрактный тест не заменяет запуск приложения.
4. Сервер, сборку и функцию включают в согласованном порядке.
Сначала выпускают сервер, который понимает прежний и новый запросы, затем распространяют проверенную сборку с выключенной новой функцией. После наблюдения включают её тем клиентам, которые умеют с ней работать. Для такого разделения подходят переключатели функций; Firebase Remote Config, например, поддерживает условия по версии приложения.
Переключатель помогает только там, где нужное поведение уже предусмотрено в коде. Проверяют и случай без сети или свежей конфигурации. Скрытая кнопка в приложении также не заменяет серверную проверку права выполнить действие.
Перед выпуском назначают того, кто может остановить распространение и выключить функцию. Ответственность за выпуск включает проверенный способ возврата рабочего поведения. Если новый клиент уже установлен, возвращаемый сервер должен понимать и его; изменения данных с необратимым результатом требуют отдельного решения.
Каждый переход имеет условие и способ остановки.
Предложенный порядок автора, 08.10.2026. Разделение функции и сборки основано на документации Firebase; граница остановки распространения — на документации Google Play.
5. Поломка должна оставить проверку следующего релиза.
В машине vibecoding.ru зелёные тесты однажды пропустили несовпадение ответа функции с его валидатором. Новое поле появилось в ответе, а описание допустимых полей осталось прежним. После выпуска страницы новостей отвечали ошибкой HTTP 500.
Это веб-инцидент, не мобильный кейс. Но урок подходит к приёмке API: проверить нужно обе стороны взаимодействия. Проверка, которая смотрит лишь на наличие нового поля, не доказывает, что прежний получатель его примет.
Инженер ведёт машину агентов и добавляет найденную причину в проверки. В курсе агентной разработки этому пути посвящён урок «Одиннадцать шагов одной задачи». Для мобильного заказа результатом такого пути будет правка вместе с воспроизводимой проверкой совместимости.
Веб-поломки научили проверять поля и порядок выпуска.
31.07
При переносе полей новости терялась сцена обложки. Появились единый перенос полей и проверка всех путей записи.
10.08
Параллельные сборки оставили фронтенд и серверные функции от разных коммитов. Правило: выпускать последовательно и проверять, какие функции доехали.
24.09
Новое поле ответа отсутствовало в валидаторе; страницы новостей отвечали HTTP 500. Добавили проверку соответствия ответа валидатору.
Журналы машины vibecoding.ru за июль–сентябрь 2026, сверено 08.10.2026. Даты относятся к веб-инцидентам, не к мобильным релизам.
6. Подрядчику заказывают доказательства готовности релиза вместе с правкой.
Фраза «обновить мобильное приложение» может означать новый экран, изменение API или замену механизма входа. Начните с одного критического сценария и списка затронутых сборок. В условном приложении это заказ: клиент видит сумму, отправляет его, затем видит правильный результат.
Агентам можно поручить карту затронутых методов, тесты прежнего контракта, правку сервера и отчёт о прогоне. Инженер проверяет результат и границы доступа. Политику поддержки, изменение данных и право включить выпуск согласует владелец приложения.
Если такой сценарий есть, можно обсудить подготовку релиза. Для разговора подготовьте доступные сборки, описание новой функции и правило, какие клиенты должны продолжать работать. По этому адресу открывается страница услуг.
Принимают воспроизводимый результат по поддерживаемым сборкам.
Критерии заказа автора, 08.10.2026. Это состав предлагаемой работы, не отчёт о выполненном клиентском проекте.
7. После выпуска ошибки по сборкам возвращают в приёмку.
Сравнивать только общую долю ошибок недостаточно: новый клиент может работать, а редкая старая сборка уже перестала оформлять заказ. Для согласованного окна наблюдения смотрят ошибки API, сбои приложения и завершение критического сценария по сборкам. Долю завершённых заказов сравнивают при сопоставимых условиях, а границу остановки задают до выпуска.
Подготовку такого релиза можно обсудить как задачу в потоке «Один проект»: подписка на разработку стоит 250 000 ₽ в месяц на 8 октября 2026. Это цена одного продукта и одного потока работ, не смета отдельного мобильного релиза. На старте согласуют репозиторий, сборки, проверки API и порядок включения; ночные дежурства в услугу не входят.
Когда наблюдение выявило несовместимость, её сначала воспроизводят, затем добавляют в проверку следующего релиза. В нашем примере цикл завершён, когда старый клиент снова оформляет заказ, новая функция работает у поддерживающей её сборки, а повторное переименование больше не проходит приёмку.
Сигнал клиента становится проверкой следующего изменения.
Предложенная петля проверки автора, 08.10.2026. Порог ошибки, окно наблюдения и срок поддержки задаются для конкретного приложения.
8. Частые вопросы
Что входит в обновление мобильного приложения для бизнеса?+
Изменение сборки и, если затронут сервер, проверка API для поддерживаемых клиентов. Публикация в магазине, включение функции и наблюдение результата имеют отдельные условия готовности.
Почему нельзя просто обязать всех установить новую версию?+
Это решение продукта: клиент может остаться без рабочего приложения. До обязательного обновления проверяют доступность сборки для поддерживаемых клиентов, понятный экран обновления и последствия для сохранённых действий. Одно уведомление не доказывает, что все обновились.
Сколько старых версий нужно поддерживать?+
Универсального числа нет. Владелец приложения задаёт поддержку по своим клиентам, рискам и возможности установить новую сборку. В отчёте нужны список сборок, окно наблюдения и согласованный порядок окончания поддержки.
Остановка выпуска возвращает прежнее приложение?+
В Google Play пользователи, уже получившие новую сборку при поэтапном выпуске, остаются на ней. Поэтому заранее проверяют, как выключить новую функцию или выпустить исправление и какой сервер обслуживает обе сборки.
Агенты могут проверить всё вместо мобильной команды?+
Они могут готовить правки и повторяемые проверки при наличии сборок и среды запуска. Для приёмки всё равно нужен прогон приложения, проверка результата инженером и разрешение владельца на выпуск. Зелёные тесты не подтверждают всё поведение клиента.
Поддержка новой iOS или Android входит в этот план?+
Это отдельная задача. Здесь разбирается сосуществование клиентских сборок и API. Требования новой ОС, устройства и возможности установить обновление добавляют отдельными сценариями, если они входят в заказ.
Источники
- Apple: Release a version update in phases — документация
- Google Play: Release app updates with staged rollouts — документация
- Google AIP-180: Backwards compatibility — рекомендации API
- Pact: Contract testing — документация
- Firebase: Remote Config parameters and conditions — документация
- vibecoding.ru: открытая машина — наш процесс
- vibecoding.ru: для бизнеса — цена и условия
- vibecoding.ru: агентная разработка — программа курса
Запомнить
1. Согласуйте поддерживаемые сборки. Пока старый клиент входит в этот список, новый сервер должен сохранять его рабочий путь. Публикация в магазине не заменяет эту проверку.
2. Принимайте релиз по отчёту о конкретных сборках и сценариях. Отдельно проверьте включение функции, остановку и доступное клиентам поведение после неё.
3. Наблюдайте результат по сборкам. Возвращайте каждую найденную несовместимость в проверки. Удаляйте прежний API по согласованному концу поддержки.