javascript

Релиз Capacitor 8

  • вторник, 20 января 2026 г. в 00:00:03
https://habr.com/ru/articles/986746/

Пока Я нахожусь в процессе написания второй статьи из цикла про capacitor, решил выпустить в виде статьи перевод анонса Capacitor 8 с замечаниями по миграции с предыдущей версии. Статья предназначена для тех, кто уже использует платформу в продакшене и не подписан на новости платформы. Если у вас есть приложение на Capacitor 7, переход на новую версию вполне логичен.

В статье разберём:

  • какие изменения появились в Capacitor 8;

  • зачем имеет смысл обновляться сейчас;

  • как выглядит миграция с версии 7 на 8 на практике;

  • на что стоит обратить внимание, чтобы избежать проблем.

Материал ориентирован на существующие web‑проекты, которые уже используются в продакшене.

Что нового в Capacitor 8

iOS: Swift Package Manager по умолчанию

Ключевое изменение на iOS — новые проекты теперь используют Swift Package Manager вместо CocoaPods. Старые проекты продолжают работать на Pods, обратной несовместимости здесь нет, но вектор развития платформы очевиден.

Практические плюсы такого подхода:

  • более прозрачное управление зависимостями;

  • ускорение и стабилизация сборок;

  • упрощение поддержки проекта в долгосрочной перспективе.

Автоматического перехода существующих проектов на SPM нет. Это отдельное архитектурное решение, а не часть миграции на Capacitor 8.

Android: корректный Edge‑to‑Edge

В Capacitor 8 переработан подход к edge‑to‑edge интерфейсам на Android. Вместо набора флагов и неочевидных отступов появился встроенный механизм управления системными панелями.

Основные изменения:

  • удалены старые хаки для расчёта отступов;

  • управление статус‑баром и navigation‑bar вынесено в отдельный API;

  • безопасные зоны корректно обрабатываются через CSS‑переменные env().

В результате интерфейсы на современных Android‑устройствах ведут себя ожидаемо и предсказуемо.

Обновлённые требования к окружению

Capacitor 8 требует обновления всего рабочего окружения:

  • Node.js 22+;

  • минимальная версия iOS — 15.0;

  • Android:

    • minSdkVersion — 24;

    • compileSdkVersion — 36;

    • targetSdkVersion — 36.

Если проект долгое время не обновлялся, переход на Capacitor 8 почти неизбежно потянет за собой обновление инструментов и SDK. Это стоит учитывать при планировании апгрейда.

Держите во внимании тот факт что если у вас версия capacitort ниже 7, то сначала нужно последовательно обновиться до 7 версии во избежании горящей жопы

Зачем обновляться

Capacitor 7 продолжает работать, но:

  • Android и iOS регулярно повышают минимальные требования;

  • новые версии плагинов и SDK ориентируются на актуальные версии Capacitor;

  • старые решения для работы с layout‑ами постепенно превращаются в технический долг.

Обновление сейчас — это запланированная миграция. Обновление позже часто превращается в срочное тушение проблем в CI и сборках.

Миграция с Capacitor 7 на 8

Шаг 1. Обновление зависимостей

Для начала обновляем все core‑пакеты Capacitor до версии 8:

npm i @capacitor/core@^8 @capacitor/android@^8 @capacitor/ios@^8
npm i -D @capacitor/cli@^8

После этого запускаем официальный инструмент миграции:

npx cap migrate

Он обновит конфигурацию проекта и укажет на шаги, которые необходимо выполнить вручную.

Шаг 2. iOS

Основные действия:

  1. Обновить Xcode до версии 26.0 или выше.

  2. Поднять минимальную версию iOS до 15.0.

При использовании CocoaPods необходимо проверить Podfile:

platform :ios, '15.0'

После обновления конфигурации:

npx cap sync ios

Для проектов с длинной историей обновлений имеет смысл открыть Xcode и выполнить один чистый билд вручную.

Шаг 3. Android

На Android изменений заметно больше.

Необходимо обновить параметры SDK:

minSdkVersion = 24
compileSdkVersion = 36
targetSdkVersion = 36

Также обновляются:

  • Android Gradle Plugin;

  • Kotlin;

  • Gradle Wrapper.

Дополнительно стоит учесть, что файл layout‑а bridge_layout_main.xml был переименован в capacitor_bridge_layout_main.xml. Если проект использует кастомные layout‑ы или прямые ссылки на этот файл, их необходимо обновить.

Шаг 4. Edge‑to‑Edge и отступы

Старый флаг конфигурации:

"android": {
  "adjustMarginsForEdgeToEdge": true
}

больше не поддерживается.

Рекомендуемый подход:

  • использовать CSS‑переменные safe‑area inset;

  • управлять системными панелями через предоставленный API.

Если после обновления интерфейс «поехал», чаще всего причина связана именно с этим изменением.

Шаг 5. Нюансы User‑Agent

На iOS изменилось формирование строки user‑agent. Ранее между значениями автоматически добавлялся пробел, теперь это поведение убрано.

Если серверная логика или аналитика завязаны на точное значение user‑agent, этот момент стоит проверить отдельно.

Шаг 6. Плагины

Все официальные плагины Capacitor обновлены до версии 8. Для сторонних или кастомных плагинов совместимость необходимо проверять вручную.

Особое внимание стоит уделить:

  • авторизации и OAuth‑решениям;

  • биометрии;

  • работе с системным UI.

Итоги

Capacitor 8 — отличный релиз:

  • сокращение легаси;

  • более корректное поведение интерфейсов на Android;

  • современный стек для iOS.

В долгосрочной перспективе обновиться заранее лучше, чем ждать письмо с требованиями срочно обновить SDK или плагины.

Ссылки: