Дайджест мобильной разработки: Xcode меняет формат проекта, Grab ускорил запуск на 35%

· ·

Дайджест мобильной разработки: 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, размер релизной сборки.

Два сигнала рядом

СигналЧто меняетсяКого заденет первымДействие
Формат проекта Xcodepbxproj уступает место JSONCI, релиз-инженеры, все, кто правит проект руками и скриптамиПрогнать сборку в отдельной ветке, найти парсеры pbxproj
R8 как оптимизаторразмер APK плюс скорость старта и уровень ANRAndroid-команды с крупным приложением и тяжёлой инициализациейСнять 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» и поставить в квартальный план — значит поставить план на чужую кодовую базу.

Вера в то, что смена формата файла улучшит качество кода. Не улучшит. Формат лечит конфликты и автоматизацию. Архитектуру он не трогает, тесты не пишет, релизы не ускоряет.

Что сделать на этой неделе

  1. Зафиксируйте версию Xcode в CI и локально. Без фиксации любая миграция превращается в лотерею на чужой машине.

    Читайте также