Мобильная разработка за неделю #636 (22 — 28 июня)
Прод снова упал не из-за Kubernetes, а потому что мобильная команда внезапно вспомнила: приложение — это не только экранчики, а сборка, платежи, тесты, рендер, DI и магазин, который может просто закрыть кран.

Сборка, тесты и архитектура снова важнее красивых демо
В подборке Хабра заметный перекос в сторону инженерной кухни. Не «нарисовали кнопку», а отдельный Mac Mini для iOS-агентов, Preview-Driven скриншот-тестирование на Android, ручной DI в Kotlin Multiplatform, SwiftSyntax для собственного DI-фреймворка, Swift macros, Observable macro under the hood, вопросы по Copy-on-Write и типам в Swift.
Это хороший маркер. Мобильная разработка окончательно живет по серверным законам: есть пайплайн, агенты, тесты, генерация, дебаг, регрессии, странные race condition и костыль, который кто-то назвал «временным» два релиза назад.
Отдельно в списке — realtime-чат без WebSocket: long-polling, гонки переподключения и дубли пушей. Тут можно не смеяться. Можно открыть свои логи и посмотреть, сколько раз клиент после реконнекта приносит один и тот же event, а потом саппорт пишет: «пользователь получил три уведомления». Не баг, а фича, пока бухгалтерия не спросит, почему пуши стоят как маленький дата-центр.
Еще один практичный блок — медиалента, рендер тысяч объектов на карте через Mapbox GL, кольца-расстояния, инерция пальца и виртуализация аватаров. Это всё про старый добрый FPS, который умирает тихо. Не с stack trace, а с отзывом «тормозит». Самый мерзкий тип инцидента: мониторинг зеленый, пользователь злой.
Google Play: платежный слой — тоже зависимость
Второй сюжет жестче. По данным «Версии», Google произвел финальные выплаты российским разработчикам мобильных приложений, зарегистрированным в Google Play. Там же говорится, что последние покупки у разработчиков с зарегистрированными в РФ счетами пользователи могли совершить 26 декабря 2024 года. После этого, как пишет источник, пользователи не могут покупать или продлевать такие товары и услуги, а разработчики — продавать их через Google Play: транзакции отклоняются.
Перевод на инженерный: магазин приложений — это не «канал дистрибуции», а внешний сервис с правом выдернуть кабель. Если монетизация завязана на один стор, один платежный контур и одну учетку, это не архитектура. Это костыль с красивой иконкой.
«Версия» также упоминает RuStore как российский аналог Google Play и пишет, что он предустановлен на новых планшетах и смартфонах. Делать из этого победный марш не надо. Для команды это просто еще одна платформа публикации, еще один набор требований, еще один сценарий тестирования установок, обновлений, платежей и поддержки пользователей.
Если у продукта есть Android-версия и российская аудитория, вопрос уже не «надо ли думать про альтернативный стор». Вопрос: кто владеет чек-листом релиза, где лежат ключи, как обновляется клиент, что происходит с оплатой, и кто отвечает пользователю, когда кнопка «купить» превращается в тыкву.
Что проверить до следующего пожара
Из подборки видно, куда мобильная разработка едет: автоматизация Xcode, новые возможности Swift и SwiftUI, AsyncImage Caching, toolbar items, SwiftNavigation macros, Flutter-иконки, Jetpack Compose-ошибки, Android-скриншот-тесты. Это не отдельные игрушки. Это поверхность отказа.
Нормальная команда после такого не спорит в чате «натив или кроссплатформа». Она открывает репозиторий и смотрит, где нет тестов, где DI держится на честном слове, где карта рендерит тысячи объектов в лоб, где пуши неидемпотентны, где платежный сценарий покрыт только фразой «ну в сторе же работает».
Минимальный набор команд на сегодня:
git grep -n "TODO\|FIXME\|temporary\|workaround"
git grep -n "long polling\|reconnect\|push\|payment\|billing"
git grep -n "GooglePlay\|RuStore\|StoreKit\|Billing"Потом — открыть CI и проверить, где реально гоняются скриншот-тесты, а где они живут в презентации. Проверить release notes для iOS и Android. Проверить доступы к агентам сборки. Проверить платежные фолбэки. И сделать бэкап ключей, сертификатов и документации релиза.
Потому что когда стор, билд-агент или пуши лягут в пятницу вечером, виноват будет не Google, не SwiftUI и не Mapbox. Виноват будет тот, кто построил прод на одном костыле и назвал это мобильной стратегией.