Добавить объявление

Xcode переходит на JSON-формат проектов

В Xcode 27.2 компания Apple добавила новый формат конфигурации проекта. Внутри привычного .xcodeproj теперь может лежать project.xcproj вместо project.pbxproj. И это не просто смена расширения.

Формат .pbxproj годами был одним из самых неприятных файлов в iOS-проекте. Огромный плоский список объектов. Ссылки через непонятные ID, merge-конфликты после добавления одного файла. Ручное редактирование почти всегда с мыслями «только бы проект в Xcode открылся».

Что представляет собой новый формат:


Новый .xcproj - это иерархический, самодокументируемый JSON. Структура файла становится ближе к тому, что мы видим в Xcode. Apple выделяет три причины перехода:

  • Первая: diff теперь проще читать. Изменения в comparison view соответствуют действиям в Xcode.

  • Вторая: merge-конфликтов должно стать меньше. JSON изолирует изменения конфигурации.

  • Третья: агенты смогут безопаснее менять настройки проекта. Раньше агенты упирались в задачу «добавь target, framework и build setting в .pbxproj», и на этом месте начиналась лотерея. Теперь Apple явно делает конфигурацию проекта более удобной не только для людей, но и для Xcode Intelligence и других агентов.

Как перейти на новый формат:


В Xcode 27.2 новые проекты по умолчанию уже используют JSON. Старые можно перевести вручную.

Нужно выбрать проект в навигаторе, открыть инспектор файла и в разделе документ проекта выбрать JSON из меню формат проекта. После этого внутри .xcodeproj файл project.pbxproj удаляется и появляется project.xcproj.

Сам .xcodeproj никуда не исчезает. Schemes, Package.resolved, user data и остальная структура остаются как были. Это не новый способ описывать проект вроде Tuist или XcodeGen. Это тот же Xcode project model, просто в более удобном формате.

Совместимость:


Новый формат поддерживается всеми версиями Xcode 27 и новее. Для перехода не обязательно одновременно обновлять всю команду до 27.2.

Если что-то пошло не так, миграция обратима через git: вернуть project.pbxproj и удалить .xcproj.

Библиотека для работы с JSON-форматом:


Вдогонку выпустили пакет xcode-project-format. Это Swift-библиотека для чтения, записи и манипуляции JSON-форматом project.xcproj. Она моделирует формат как набор типизированных значений, чтобы инструменты вроде генераторов, линтеров и валидаторов не занимались ручным парсингом JSON.

Пакет также включает xcprojformatter - небольшую CLI-утилиту, построенную на этой библиотеке.

Вывод:


Apple наконец-то избавилась от legacy-формата, который годами раздражал разработчиков. .pbxproj был неудобен для чтения, плохо переносил слияния и почти не поддавался ручному редактированию. Новый .xcproj решает эти проблемы.

Для людей это означает более понятные сравнения изменений и меньше конфликтов. Для агентов - возможность безопасно менять настройки проекта. Для инструментов - типизированный доступ к структуре через библиотеку.

Миграция не обязательна, но если вы уже на Xcode 27, стоит попробовать. Особенно если работаете в команде, где merge-конфликты стали постоянной болью.
19.09.2026 73 645