Дайджест мобильной разработки: Xcode меняет формат проекта, Grab ускорил запуск на 35%
PrimeCoder · 2026 · формат: news
Что произошло, почему это важно и что взять в работу.
Для мобильных команд это два практических сигнала: миграция формата проекта Xcode затронет CI и мердж-конфликты, а кейс Grab с R8 задаёт измеримую планку оптимизации сборки и ANR.
Связанные услуги: каталог, AI Boost Team, стать клиентом.
Два пункта, которые забираем в работу
Дайджест #650 за 19–25 октября — длинная лента ссылок. Metal без магии, корутины на пальцах, Warcraft II на «Авроре», AR-хоррор в квартире, USB-токены на Android, игровой движок на Swift. Читать — вечер. В работу — два пункта.
Первый: Xcode меняет формат файла проекта. Уходит project.pbxproj, приходит JSON. В выпуске это назвали крупнейшим изменением формата проекта за 30 лет — и по масштабу последствий для CI это близко к правде.
…крупнейшее изменение Xcode за 30 лет.
Второй: Grab сократил ANR на 32% и улучшил время запуска на 35% — за счёт R8.
Как Grab сократил ANR на 32% и улучшил время запуска на 35% благодаря R8.
Остальное в выпуске — фон. Ниже разбор: почему эти два сигнала важнее, чем выглядят, где подвох и что конкретно сделать до конца недели.
Xcode: что на самом деле меняется
project.pbxproj — файл, который Xcode переписывает целиком при любом чихе в структуре проекта. Добавили файл, переименовали таргет, поменяли build phase — получите новую версию всего файла. Формат старый, унаследованный от плоских plist-ов NeXT: внутри граф таргетов, файлов и конфигураций, склеенный служебными идентификаторами, а не человеческими именами.
Практические последствия знакомы каждому iOS-разработчику. Две ветки, обе тронули структуру проекта — конфликт. Конфликт в файле, где строки не читаются, а идентификаторы не значат ничего. Разруливают руками, по кусочкам, с риском потерять файл из таргета и узнать об этом на релизной сборке.
JSON меняет три вещи. Файл становится машинно-читаемым без регулярных выражений. Порядок ключей можно сделать детерминированным — значит, диффы сокращаются до реальных изменений. И любой язык, у которого есть JSON-парсер, может работать с проектом без библиотек от Apple.
Кому от этого станет больно первым? Не разработчику в Xcode. Больно станет инфраструктуре вокруг: скриптам, которые грепают pbxproj, самописным генераторам проекта, CI-шагам, которые правят файл через sed, релиз-инженерам с их ритуалами. Если вы за последние годы собирали проект через генератор (XcodeGen, Tuist или собственный), проверьте совместимость до того, как формат приедет в вашу версию Xcode.
Вердикт простой: это изменение не про красоту формата. Это про то, что самый конфликтный файл в iOS-репозитории наконец станет обычным текстовым файлом. Хорошая новость для команд от трёх человек и больше. Плохая — для тех, у кого пайплайн держится на одной регулярке, которую писал уволенный подрядчик.
Grab и R8: цифры, которые можно поставить в планку
R8 в Android-командах чаще всего воспринимают как «уменьшить APK и запутать код». Отсюда и типичное отношение: включили, правила keep накидали, забыли. Grab использовал его как оптимизатор байткода — встраивание вызовов, удаление мёртвого кода, переписывание классов под конкретный рантайм.
Логика результата читается без магии. Меньше классов грузится на холодном старте — меньше времени в главном потоке на инициализацию. Меньше времени в главном потоке — меньше ANR. Отсюда одновременно и минус 32% ANR, и плюс 35% к скорости запуска. Это не два отдельных улучшения, а одно, замеренное с двух сторон.
Подвох здесь ровно один и он дорогой: R8 ломает всё, что не описано в правилах. Рефлексия, сериализация, внедрение зависимостей, JNI, динамическая загрузка классов. Симптомы всплывают не на сборке, а в проде и не у всех пользователей сразу — худший из возможных вариантов.
И главное. 32% и 35% — это цифры Grab на кодовой базе Grab. Не ваш результат и не обещание вендора. Замерить до и после придётся самостоятельно: время холодного старта на среднем устройстве, доля ANR, размер релизной сборки.
Два сигнала рядом
| Сигнал | Что меняется | Кого заденет первым | Действие |
|---|---|---|---|
| Формат проекта Xcode | pbxproj уступает место JSON | CI, релиз-инженеры, все, кто правит проект руками и скриптами | Прогнать сборку в отдельной ветке, найти парсеры pbxproj |
| R8 как оптимизатор | размер APK плюс скорость старта и уровень ANR | Android-команды с крупным приложением и тяжёлой инициализацией | Снять baseline, включить на внутреннем контуре, сравнить |
| Гайдлайны App Store | запрет ИИ-раздевания и подмены функционала | Редакторы фото, «ИИ-приложения», продукты с UGC | Аудит фич до сабмита, а не после реджекта |
Общая линия у двух главных пунктов одна: инструменты, которые годами считались фоном — формат файла проекта и шринкер, — стали источником измеримого результата. Сборка перестала быть гигиеной. Она стала продуктовой метрикой, которую можно защищать на планёрке.
Что ещё было в выпуске и почему это важно
Apple обязали открыть iPhone для альтернативных магазинов приложений в Австралии.
Apple обязали открыть iPhone для альтернативных магазинов приложений в Австралии.
Для команды, которая делает продукт под российский рынок, это новость на будущее, а не на завтра. Но прецедент накапливается: юрисдикция за юрисдикцией выдавливает монополию стора. Кто делает глобальный продукт, тому пора держать в голове сценарий с несколькими каналами дистрибуции.
Обновлённые гайдлайны App Store запрещают ИИ-раздевание и подмену функционала. Второй пункт интереснее первого. «Подмена функционала» — это когда в описании одно, а внутри приложение делает вид. Классика жанра: «ИИ-редактор» с тремя пресетами и рекламной вставкой. Реджект по такой формулировке — это уже не риск, а расписание.
Отчёт State of Paywalls 2026 от Adapty — практическая вещь, если вы прямо сейчас переделываете экран подписки. Пейвол перестал быть экраном, он стал сценарием: когда показать, что показать, чем закрыть сомнение.
В ИИ-части: Anthropic с проактивным агентом Claude Duet, модель Flint от Recursive для написания кода на ноутбуках, раунд Tolan на $30 млн, заявленные 4–8x ускорения у Mercury 3. Всё это интересно, но к понедельнику в вашем бэклоге ничего не меняет. Отдельно в выпуске — 15 лет Kotlin и разбор с замерами на 400+ Android UI-тестах про то, что API не всегда быстрее UI. Это уже ближе к делу: мифы о производительности живут долго и стоят дорого.
Где можно обжечься
Миграция ради миграции. Если у вас один iOS-разработчик, нет CI и проект не конфликтовал ни разу за год, JSON вам сегодня не нужен. Он подождёт. Ломать рабочий процесс ради модного формата — плохая сделка.
Копирование чужих цифр в свои планы. Grab — крупная компания с выделенной производительностью и, судя по разбору, культурой замеров. Вытащить оттуда «минус 32% ANR» и поставить в квартальный план — значит поставить план на чужую кодовую базу.
Вера в то, что смена формата файла улучшит качество кода. Не улучшит. Формат лечит конфликты и автоматизацию. Архитектуру он не трогает, тесты не пишет, релизы не ускоряет.
Что сделать на этой неделе
- Зафиксируйте версию Xcode в CI и локально. Без фиксации любая миграция превращается в лотерею на чужой машине.