Compose Broadcast
5.77K subscribers
336 photos
88 videos
547 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
⚙️ Compose Stability Analyzer - плагин для Android Studio или Idea для проверки стабильности Compose функций в реальном времени

#compose #производительность #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍48🔥75
⚙️ Compose Stability Analyzer включает в себя плагин компилятора, который в рантайме позволяет в логах видеть информацию по рекомпозиции функций. Работает с Kotlin Multiplatform

@TraceRecomposition
fun MyComposable(...) { ... }


#compose #производительность #kmp #cmp
👍23🔥51
⚙️ Стектрейсы Jetpack Compose в релизных сборка теперь станут понятными!

С выходом Kotlin 2.3.0 (на момент написания поста вышла Beta 2) компилятор Compose начал генерировать mapping файлы для стектрейсов Composable функций — теперь даже если ваше приложение минифицировано R8, вы сможете понять, где именно упала композиция.

Раньше подробные стектрейсы были доступны только в debuggable сборках из-за того что информация не затиралась. Теперь же появился новый режим — Group Keys, который позволяет связать анонимные функции из минифицированного кода с исходными @Composable без необходимости хранить пути к файлам.

Чтобы включить этот режим, добавьте строку до инициализации любого контента Compose (лучше всего в рутовой функции):
Composer.setDiagnosticStackTraceMode(ComposeStackTraceMode.GroupKeys)


После этого при падениях во время composition / measure / draw Compose сам добавит свой стектрейс — даже в релизных сборках 🔥

Для работы требуется:
⚙️ Compose Runtime 1.10+
🤖 R8 включен (ProGuard не подходит)
🏝 Kotlin 2.3.0+

Если же увидите новые предупреждения или недостаток информации — Google просит репортить их в Issue Tracker.

#compose #kotlin #android #r8
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍32
⚙️ KMP Wheel Picker - крутелка c выбором в iOS стиле на Compose

// Пример использования
WheelPicker(
state = state,
bufferSize = 3,
window = { ... },
) { index ->
Text(
"Item ${index + 1}",
Modifier.padding(16.dp, 8.dp),
)
}


#compose #cmp #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍3🤯1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯32👍13🔥2👏1
🐱 Heron - open source клиент для соц сети Bluesky. Приложения на Jetpack Compose Multiplatform для Android, iOS и Desktop

Тех стек:
👉 Многомодульная архитектура
👉 Metro DI
👉 Coil для показа картинок
👉 Kotlin Coroutines и SerlializationX
👉 Ktor
👉 Jetpack Room

#compose #cmp #kmp #android #ios #desktop #пример #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥63
⚙️ Вышел Jetpack Compose 1.10.0 Beta 2

Обновляйте зависимости или сразу всё через BOM файл:
dependencies {
implementation(
platform("androidx.compose:compose-bom-beta:2025.11.00")
)
}

#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️ ShadowGlow - open source библиотека для теней с широкими возможностями кастомизации. Поддержка только Android

Text(
text = "Solid Shadow",
modifier = Modifier
.shadowGlow(
color = Color.Black.copy(alpha = 0.5f),
borderRadius = 8.dp,
blurRadius = 10.dp,
offsetX = 4.dp,
offsetY = 4.dp
)
.background(Color.White)
.padding(16.dp)
)


#compose #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33
⚙️ Вышел Compose Multiplatform 1.10.0 Beta 1

Что нового:
🔨 @Preview аннотация работает в Common коде
🚀 Поддержка Jetpack Navigation 3

Compose iOS
❗️ Поддержка WIndowsInsetsRulers - API дял расположения элементов относительно системного UI
👉 Прокачали работу с софт клавиатурой

Compose Desktop:
👉 Compose Hot Reload теперь теперь часть Compose. Больше не нужна отдельная зависимость
👉 SwingPanel теперь автоматически подстраивает свой размер на основе размеров контента в ней

Gradle плагин:
👉 Алиасы для Compose зависимостей в Gradle теперь не рекомендуютя к использованию. Подключаем артефакты как и все другие
👉 Поддержка Android Gradle Plugin 9.0.0

#compose #cmp #gradle #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥2👏1
🤯 Liquid Glass в iOS 26 — удар по кроссплатформенным UI: Compose и Flutter

В iOS 26 Apple полностью обновила визуальный язык всех своих систем — от iPhone до Mac — на основе эффекта Liquid Glass.
Это не просто редизайн: весь интерфейс теперь основан на динамическом материале, который выглядит как живое стекло — с прозрачностью, преломлением, отражениями и адаптацией к фону и движению.

🧩 Всё это работает на уровне системного UI-стека, а не через отдельные шейдеры в приложении.
Apple интегрировала эффект прямо в UIKit и SwiftUI — стандартные контролы (панели, навигация, вкладки, кнопки и т.д.) автоматически наследуют материал без изменений в коде.
Для кастомных интерфейсов появились обновлённые API, управляющие степенью «стеклянности» и размытия.
Рендеринг выполняется через Metal с аппаратным ускорением и оптимизацией под энергопотребление.

⚙️ Compose Multiplatform и Flutter рендерят интерфейс поверх собственного движка — Skia и Impeller соотвественно, который полностью берёт на себя отрисовку.
Это значит, что системные визуальные эффекты, вроде динамического стекла, не будут работать «из коробки».
Возможна имитация Liquid Glass силами движка, но тогда нужно в реальном времени искажать фон под элементом — а это серьёзная нагрузка на CPU/GPU и батарею.

😯 На iOS Skia действительно работает поверх Metal, но использует лишь его базовый 2D-функционал, без доступа к системным шейдерам, материалам и эффектам среды.
Теоретически Skia может эволюционировать в эту сторону, но пока она изолирована от системного рендеринга.

🤖 На Android у Jetpack Compose ситуация лучше: он использует не отдельный движок, а системный рендер Android View, поэтому интеграция системных эффектов возможна нативно.
На iOS же для Compose Multiplatform всё зависит от будущих решений JetBrains — если появится рендер поверх UIKit/Metal, тогда можно будет подключать нативные материалы.
Пока же оптимальный вариант — использовать SwiftUI для UI и KMP-модули для бизнес-логики.

🎯 Apple подняла планку того, что значит «feels like native».
Теперь визуальное и интерактивное поведение невозможно подделать одной лишь кастомной отрисовкой — нужна полная интеграция с системным стеком.

#apple #ios #compose #flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯33👍121🔥1🤔1
‼️ В Compose 1.10.0 добавили возможность встраивания UIKitView и UIKitViewController

Это изменение позволяет использовать нативные UIView из iOS с прозрачным фоном и использовать все нативные шейдеры! Но это все также встраивание элементов из нативного механизма отрисовки в Compose, аналогично как это есть для Android и Swing компонентов в iOS.

Фактически для Compose Button сделать liquid glass эффект не получится сделать. Для этого надо делать обертку на стандартным компонентов из iOS.

Спасибо @nek_12 за подсвечивание момента

#compose #ios26
Please open Telegram to view this post
VIEW IN TELEGRAM
👍312🤔1
Media is too big
VIEW IN TELEGRAM
📹 Разработка на Compose для Android TV и Android Auto (EN,19м)

Compose позволяет разрабатывать под все актуальные Android платформы, повышая удобство и скорость реализации. Подробности в докладе от Google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🤔1
»
👍19🔥1
Forwarded from Android Broadcast
⚙️ Команда Compose добилась плавности скрола как в View на Android. Источник тут

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥65👍8
⚙️ Пререндеринг UI в Lazy списках Compose

В Compose есть возможность настраивать размер кэша для lazy layouts! Можно контролировать, сколько элементов сохранять до и после видимой области.

Что изменилось?
👉 До версии 1.9: Lazy списки компилировали только 1 элемент вперед и сразу удаляли невидимые
👉 С версии 1.9: Можно задать точное количество сохраняемых элементов в dp или % viewport

Зачем это нужно?
Увеличивает плавность прокрутки за счет подготовки контента заранее
Оптимизирует использование pausable composition между кадрами
Позволяет балансировать между памятью и производительностью

Как использовать:
// Кэш в dp
val dpCacheWindow = LazyLayoutCacheWindow(
ahead = 150.dp, // 150dp вперед
behind = 100.dp // 100dp назад
)

// Или в процентах от viewport
val percentCacheWindow = LazyLayoutCacheWindow(
ahead = 0.5f, // 50% viewport вперед
behind = 0.3f // 30% viewport назад
)

val state = rememberLazyListState(cacheWindow = dpCacheWindow)

LazyColumn(state = state) {
// ваш контент
}


Рекомендации:
🎯 Начинайте с 50% viewport и тестируйте производительность
🎯 Для тяжелых элементов используйте больший кэш
🎯 Для легких списков можно уменьшить значения

Особенно полезно для сложных списков с изображениями, анимациями или тяжелой бизнес-логикой!

#Compose #Производительность #cmp
Please open Telegram to view this post
VIEW IN TELEGRAM
42👍15🔥3
⚙️ Ускоряем рендеринг текста в Compose: фоновая предзагрузка

Традиционно измерение и кэширование текста происходит на UI-потоке, что для длинных текстов может создавать задержки. Начиная с версии 1.9, Compose позволяет вынести эти операции в фоновый поток. Для View уже давно была такая возможность, а вот на Compose ждали.

Как это работает на практике:
val textMeasurementExecutor = Executors.newSingleThreadExecutor()

CompositionLocalProvider(
LocalBackgroundTextMeasurementExecutor provides DefaultTextMeasurementExecutor
) {
// Весь текст внутри будет предзагружаться в фоне
Column {
Text("Заголовок")
Text("Длинный описательный текст...")
AnnotatedString("Форматированный текст")
}
}

Ключевые преимущества:
- Ускорение layout — предзаполнение word-cache происходит заранее
- Разгрузка UI-потока — тяжелые операции с текстом уходят в фон
- Особенно эффективно в списках (LazyColumn/LazyRow) с текстовым контентом
- Работает с любыми текстовыми компонентами — BasicText, Text, AnnotatedString

Когда стоит применять:
- Приложения с большими объемами текста (читалки, новости, документация)
- Списки с множеством текстовых элементов
- Сложные текстовые интерфейсы с форматированием

❗️Важный нюанс: Результаты могут варьироваться в зависимости от контента, поэтому всегда тестируйте производительность до и после внедрения.

Уже используете эту возможность? Делитесь результатами в комментариях!

#Compose #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
28👍9🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Android-приложение на чистой архитектуре: разберём шаг за шагом

Чистая архитектура — это фундамент для масштабируемых Android-приложений. 26 ноября в 20:00 мск на открытом занятии вы самостоятельно соберёте клиент-серверное приложение с нуля и поймёте, как проектировать код, который легко поддерживать и развивать.

Подойдёт разработчикам уровня junior и выше, которые хотят перейти к продвинутым архитектурным паттернам.

На вебинаре вы:
⏺️ Разберете работу с API для скачивания фото и текстовых описаний.
⏺️ Настроите сетевой слой и интернет-взаимодействие.
⏺️ Разделите проект на слои по MVVM.
⏺️ Реализуете корректное отображение данных в UI.

👉 Вебинар проходит в преддверии старта курса «Android Developer. Professional». Регистрация по ссылке

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚙️ Navigation 3 в Compose Multiplatform: новый подход от Google7

Google представила Navigation 3 — совершенно новую библиотеку для навигации в Compose, где управление стеком экранов сводится к простым операциям с списком.

Хорошая новость: JetBrains уже адаптировали её для Compose Multiplatform! В статье на реальном примере показывает, как:
👉 Добавить зависимости Navigation 3 в KMP-проект
👉 Определить маршруты через sealed-интерфейсы с @Serializable
👉 Работать с back stack как с обычным mutable list
👉 Создать адаптивные layouts для разных размеров экранов

Особенно полезно будет:
✔️ Разработчикам, которые хотят использовать современный подход Google к навигации в кроссплатформенных проектах
✔️ Тем, кто ищет альтернативу существующим решениям вроде Voyager

В статье — чистый код из commonMain с примерами навигации между экранами и реализацией bottom navigation.

#compose #cmp #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍3