CocoaPods 2 декабря перестанет принимать новые поды: iOS-проектам пора на Swift Package Manager

2 декабря 2026 года центральный репозиторий CocoaPods trunk переходит в режим только для чтения. Новые поды и новые версии уже существующих туда больше не попадут. Старые сборки продолжат работать, но обновления зависимостей через CocoaPods для iOS-проектов прекратятся, поэтому библиотеки пора переводить на Swift Package Manager.
О дате напомнил ноябрьский выпуск блога swift.org, а сам план мейнтейнеры CocoaPods опубликовали ещё в ноябре 2024 года. Если ваша разработка iOS-приложений до сих пор держится на Podfile, у команды остаются считаные недели, чтобы составить список зависимостей и решить, какие из них переносить первыми.
Затронуты не только нативные проекты на Swift. Flutter и React Native тоже исторически подтягивают iOS-часть через CocoaPods, и у каждого фреймворка свой статус перехода. Когда вы решаете, как заказать разработку мобильного приложения с долгой поддержкой, стоит сразу уточнить у подрядчика, каким менеджером зависимостей он собирает iOS-версию.
Что именно изменится в CocoaPods 2 декабря
План опубликовал мейнтейнер Орта Терокс (Orta Therox) в блоге CocoaPods 30 ноября 2024 года и обновил его в мае 2025-го. Для команд из него следуют три вещи:
- Trunk перестанет принимать podspec. Сервер будет отклонять любую новую спецификацию, а репозиторий CocoaPods/Specs на GitHub получит статус «Archived».
- Существующие сборки не сломаются. Specs-репозиторий и CDN продолжат работать, пока существуют GitHub и jsDelivr.
pod installбудет находить версии, опубликованные до заморозки. - Новых версий зависимостей через trunk не будет. Если автор библиотеки выпустит исправление после 2 декабря, через публичный CocoaPods оно до вас не дойдёт.
Изменения не касаются команд, которые используют собственный specs-репозиторий или вендорят все зависимости, например получают их из npm.
С мая 2025 года trunk уже не принимает новые поды с полем prepare_command: мейнтейнеры закрыли его после того, как исследователи безопасности стали злоупотреблять скриптами в спецификациях.
Чем грозит заморозка trunk для действующего приложения
Сборка от заморозки не пострадает, страдать будут безопасность и совместимость. Приложение продолжит собираться, только на старых версиях библиотек: SDK аналитики, платежей, авторизации, push-уведомлений. Если вендор выпустит патч уязвимости или поддержку следующей версии iOS только в Swift Package Manager, проект на CocoaPods её не получит. Со временем Podfile превращается в список зависимостей, которые нельзя обновить.
Второй риск касается ваших внутренних библиотек. Если команда публиковала общие модули в публичный trunk, после 2 декабря новый релиз туда не загрузить. Внутренние поды придётся перенести в приватный specs-репозиторий или оформить как Swift-пакеты.
Как к заморозке подготовились Flutter, React Native и нативный Swift
У кросс-платформенных фреймворков разный статус перехода, и от него зависит срочность работ.
- Flutter. С версии 3.44 поддержка Swift Package Manager включена по умолчанию: после обновления Flutter интеграция SwiftPM добавляется в проект автоматически. CocoaPods Flutter поддерживает в режиме обслуживания. Включить SwiftPM глобально можно командой
flutter config --enable-swift-package-manager, отключить для одного проекта можно вpubspec.yamlчерезenable-swift-package-manager: false. - React Native. В версии 0.87 появилась экспериментальная поддержка Swift Package Manager. Она включается вручную, а CocoaPods остаётся путём по умолчанию. Команда React Native прямо предупреждает, что команды и структура проекта ещё могут поменяться, и не советует использовать новый режим в продакшене.
- Нативный Swift. Swift Package Manager встроен в Xcode. В ноябрьском выпуске swift.org сообщается, что принято предложение SE-0547 о кэше компиляции SwiftPM (
swift package build-cache configure), так что сам инструмент продолжает развиваться.
Если вы выбираете стек для нового продукта, учитывайте, что у Flutter путь с SwiftPM уже основной, а у React Native он пока экспериментальный. Подробное сравнение фреймворков есть в разборе Flutter или React Native.
Как перевести iOS-проект на Swift Package Manager: пять шагов
- Инвентаризируйте Podfile. Выпишите все поды и для каждого проверьте, публикует ли автор Swift-пакет (файл
Package.swiftв репозитории). - Переносите по одной зависимости. Начните с SDK, от которых зависят безопасность и публикация в App Store: аналитики, платежей, авторизации. Подключите каждый через Xcode, удалите его из Podfile и пересоберите проект.
- Найдите зависимости без SwiftPM. Для заброшенных библиотек подберите замену, форкните библиотеку с добавлением
Package.swiftили закрепите версию и запланируйте отказ от неё. - Вынесите внутренние модули. Оформите их как Swift-пакеты в своём git-репозитории или перенесите в приватный specs-репозиторий, если переход пока невозможен.
- Обновите CI. Уберите шаги с Ruby, Bundler и
pod installтам, где они больше не нужны, настройте кэширование пакетов и прогоните полный регресс на устройствах.
Часто задаваемые вопросы
Перестанет ли собираться приложение на CocoaPods после 2 декабря?
Нет. Мейнтейнеры CocoaPods прямо пишут, что переход в режим чтения не ломает сборки: pod install и pod update работают с версиями, опубликованными до заморозки. Новых версий через trunk при этом не будет.
Можно ли сдвинуть дату?
В плане сказано, что сроки не высечены в камне и перенос на более позднюю дату возможен в разумных пределах. Перенос на более раннюю дату автор исключает. Тестовый запуск режима чтения прошёл 2–6 ноября 2026 года.
Что делать с внутренними подами компании?
Быстрый вариант — перенести их в приватный specs-репозиторий, его заморозка не затрагивает. Долгосрочный — оформить модули как Swift-пакеты, чтобы в будущем не зависеть от CocoaPods.
Источники
- CocoaPods Blog: CocoaPods Trunk Read-only Plan, Orta Therox, 30 ноября 2024 года, обновлено в мае 2025-го (первоисточник).
- Swift.org: What’s new in Swift, November 2026 Edition, напоминание о дате 2 декабря 2026 года и новости Swift Evolution.
- Flutter Docs: Swift Package Manager for app developers, статус CocoaPods и SwiftPM во Flutter.
- React Native Blog: React Native 0.87, экспериментальная поддержка Swift Package Manager.
Переведём iOS-проект с CocoaPods на SwiftPM
Проведём аудит Podfile, перенесём SDK и внутренние модули на Swift Package Manager, найдём замену заброшенным библиотекам и обновим CI без остановки релизов.