К содержанию

Wiki · Технологии разработки

Jetpack Compose

Jetpack Compose – это рекомендованный Google набор инструментов для создания интерфейса Android-приложений на языке Kotlin. Экран описывают кодом как функцию от данных, и при изменении данных Compose сам обновляет нужную часть экрана.

В смете на Android-приложение всё чаще пишут «интерфейс на Compose». Для заказчика за этим стоят три вопроса: быстрее ли так делать и менять экраны, кого искать на поддержку и что делать, если ваше приложение написано по-старому, на XML.

Кто развивает Compose и сколько приложений на нём

Compose развивает Google как часть библиотек Android Jetpack. Версия 1.0 вышла 28 июля 2021 года. По данным Google на июль 2026 года, Compose используют больше 68% из тысячи крупнейших Android-приложений. На странице Compose Google приводит в пример Airbnb, Reddit, Dropbox, Booking.com.

Compose подключают к проекту как обычные библиотеки, а не получают вместе с системой. Поэтому его версию обновляет разработчик вместе с приложением, и она не зависит от того, какая версия Android стоит у пользователя.

На Google I/O 2026 Google объявила подход Compose-first: новые инструменты, документацию и примеры делают в расчёте на Compose. Старый набор элементов интерфейса (Views) переведён в режим поддержки и получает только критические исправления.

Экран как функция от данных

В старом подходе экран рисовали в XML-разметке, а код находил на нём элементы и вручную менял текст, цвет, видимость. Чем больше состояний у экрана, тем больше мест, где можно забыть что-то обновить.

В Compose экран описывают функцией от данных. Вот счётчик товаров в корзине:

var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) {
    Text("Cart: $count")
}

Код не говорит «найди надпись и замени в ней цифру». Он говорит: кнопка показывает текущее число. Когда число меняется, Compose сам перерисует кнопку. Такой стиль называют декларативным.

Схема обновления экрана Android: в Views на XML код вручную меняет элементы, в Jetpack Compose экран перерисовывается по изменившимся данным
Как обновляется экран в двух подходах

Что Compose ускоряет и где не выручит

  • Меньше кода на экран, поэтому правки интерфейса делают быстрее и с меньшим риском что-то задеть.
  • Предпросмотр в Android Studio: разработчик видит экран при каждом изменении кода, не запуская приложение.
  • Встроены Material 3, тёмная тема, анимации и адаптивные макеты. Один и тот же подход работает на телефонах, планшетах, складных устройствах, часах на Wear OS и экранах автомобилей.
  • Только Kotlin. Команде, которая писала на Java, придётся переучиваться.
  • Сам по себе Compose работает только на Android. Для iPhone есть Compose Multiplatform от JetBrains, но это отдельное решение и отдельная настройка проекта.

Compose рядом с Views, SwiftUI и Flutter

ПодходПлатформыКогда подходит
Jetpack ComposeAndroidНовое Android-приложение или новые экраны в существующем
Views на XMLAndroidПоддержка уже работающих экранов, которые пока не трогают
Compose MultiplatformAndroid, iOS, компьютерыОбщий интерфейс на Kotlin для нескольких платформ
SwiftUIiPhone, iPad, MacТот же декларативный подход для устройств Apple
FlutteriOS, Android, веб, компьютерыОдно приложение с общим интерфейсом на Dart

Как проверить, на Compose ли приложение

По репозиторию. Признаки Compose: зависимости androidx.compose в настройках сборки и функции с пометкой @Composable. Если экраны лежат в папке res/layout в виде XML-файлов, это Views. Смесь того и другого означает, что переход уже начат.

Если приложение написано на старых Views

В режим поддержки ушли и популярные библиотеки для Views: RecyclerView для списков, Fragment, Navigation, ConstraintLayout. Работать они продолжат, но новых возможностей в них не появится.

Переписывать всё разом Google не требует и не советует. Compose и Views умеют жить в одном приложении: экран на Compose можно вставить в старый, и наоборот. Обычно переход идёт так:

Четыре шага перевода Android-приложения на Jetpack Compose: тема и компоненты, новые экраны, перенос старых экранов, удаление XML
Как переводят приложение на Compose

Начинают с темы: цвета, шрифты, кнопки и поля ввода переносят в Compose один раз, и дальше все экраны собирают из них. Если у вас есть дизайн-система, это самая удобная точка входа. Заодно стоит проверить юзабилити старых экранов: переписывать неудобный экран один в один в новом коде нет смысла.

Дальше новые экраны делают сразу на Compose, а старые переносят при очередной доработке, когда в них всё равно нужно что-то менять. Последними удаляют XML-макеты и библиотеки Views, которые больше нигде не используются.

Android-разработчик с опытом Compose сейчас обычная история: инструмент стабилен с 2021 года. Но если в приложении много старых экранов, в команде нужен человек, который уверенно работает и с Views. Когда заказываете редизайн или крупную доработку Android-приложения, попросите оценку в двух вариантах: правка старых экранов и перенос их на Compose. Так проще решить, где перенос окупится, а где старый экран лучше пока не трогать.

Почему переход на Compose затягивается или разочаровывает

  • Остановить развитие приложения ради полного переписывания интерфейса.
  • Переносить экраны на Compose без общей темы. Каждый разработчик рисует кнопки по-своему, и приложение расползается.
  • Ждать, что Compose автоматически даст версию для iPhone.

Android-приложения на Kotlin и Jetpack Compose проектируем и разрабатываем по услуге «Разработка мобильного приложения», интерфейсы кабинетов по услуге «Разработка личного кабинета». Если проект уже работает на Jetpack Compose, берём его на доработку и поддержку.

Установка, элементы экрана и совместимость Compose

Где взять Jetpack Compose и что для него установить?

Отдельной программы нет: Compose подключают к проекту как набор библиотек в настройках сборки. Работают с ним в Android Studio, она бесплатна и скачивается с developer.android.com, а при создании проекта там можно сразу выбрать шаблон с экраном на Compose.

Из каких элементов собирают экран на Compose?

Из небольших функций-компонентов. Text выводит надпись, Button рисует кнопку, Row и Column ставят элементы в строку или столбик, Box накладывает их друг на друга. Готовые поля, карточки и меню в стиле Material 3 подключаются отдельной библиотекой, из них же собирают общую тему приложения.

Перенесётся ли экран на Compose в версию для iPhone?

В SwiftUI нет: подход у них похожий, но код на Kotlin в Swift-проект не переходит. Общий интерфейс для Android и iPhone даёт Compose Multiplatform от JetBrains, к октябрю 2026 года его поддержка iOS считается стабильной. Это отдельная настройка проекта, и выпускать iOS-версию всё равно придётся через Mac и Xcode, с аккаунтом в Apple Developer.

Чем Jetpack Compose отличается от Kotlin?

Kotlin это язык, на котором пишут всё приложение: логику, работу с сетью, хранение данных. Compose это библиотеки на этом языке только для экранов. Без Kotlin Compose не работает, а Kotlin без Compose вполне: старые экраны на Views тоже ведут на нём.

Будут ли экраны на Compose работать на старых телефонах?

Будут, в пределах минимальной версии Android, выбранной для приложения. Compose едет внутри сборки как обычная библиотека и от прошивки телефона не зависит.

Документация и справки

  • Документация Android: Jetpack Compose, подход Compose-first
  • Блог Android Developers: Celebrating 5 years of Jetpack Compose
  • Документация Kotlin Multiplatform: стабильность платформ

Остались вопросы по теме «Jetpack Compose»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.