Compose Broadcast – Telegram
Compose Broadcast
5.82K subscribers
341 photos
89 videos
559 links
Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast
Download Telegram
⚙️ Вышел Compose Multiplatform 1.8.0 RC 1

После релиза Compose 1.8.0 сразу же выпустили свежий RC мультиплатформенной версии. Внесены улучшения в Compose Web для Safari, но также появились и критические изменения:
👉 Зависимость material/material3 больше не добавляет зависимость material-icons-core, её нужно будет добавлять явно.
👉 Больше не поддерживается LocalTextInputService.
👉 Требуется Kotlin Gradle Plugin 2.X.
👉 Старый плагин org.jetbrains.compose.compiler больше не поддерживается.

#compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
CMP Container Size - KMP библиотека для получения размера текущего окна в DP. Пригодится тем кому не подходят стандартные классы размеров окон из Jetpack WindowManager

@Composable
fun App() {
val containerSize = currentWindowContainerSize()

if (containerSize.width >= 600.dp) {
TabletLayout()
} else {
PhoneLayout()
}
}


#compose
👍30
⚙️ В каком порядке выполняется Composable и DisposableEffect и LaunchedEffect (EN,5м)

При показе одной Composable функции
1. Фаза композции
2. Регистрация Side Effect во время композиции
3. Запуск Side Effect-ов
4. DisposableEffect синхронный и запускается сразу после композиции
5. LaunchedEffect запускается после синхронных Side Effect-ов

В статье также рассматривается что происходит при навигации между Composable

🔗 Альтернативная ссылка

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45
⚙️ Вышел Compose Multiplatform 1.8.0

Что нового:
👉 Переход на K2
🏝 Поддерживается Kotlin 2.1.0 или выше
👉 Мультиплатформенные реализации BackHandler и PredictiveBackHandler
👉 Улучшения в тестах
👉 Поддержка вариативных шрифтов на всех платформах
👉 Clipboard API заменяет ClipboardManager для работы c буфером обмена на всех платформах
👉 Множество улучшений в Compose/iOS
👉 На Windows улучшили производительность и размер инсталятора
🤖 Поддержка Compose ресурсов в таргете androidLibrary

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

#compose #k2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27
🔥⚙️ Compose iOS теперь Stable

Самый громкий и важный анонс в истории Compose Multiplatform с выходом версии 1.8.0

Что именно готово для продакшен применения
👉 Все основные фичи из Jetpack Compose работают на iOS
👉 Типобезопасная навигация с поддержкой deep link
👉 Гибкое управление ресурсами
👉 Поддержка iOS Accessibility API
👉 Ощущения от UI приложения как нативного (скрол, редактирование текста, drag-and-drop, адаптивный UI, навигация жестами и пр)
👉 Производительность UI на Compose близка к SwiftUI, но пока немного уступает

Новая эра мобильной разработки уже тут!

#compose #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍84🔥26🤯6
Forwarded from Android Broadcast
🚀 Релиз Jetpack Navigation 2.9.0

🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API

#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
⚙️ Вышел Jetpack Compose 1.8.1 с исправлениями ошибок

Обновляем BOM файл
implementation(platform("androidx.compose:compose-bom:2025.05.00"))


#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤯2🔥1👏1
⚙️ Вышел Jetpack Compose 1.9.0-alpha02

Обновляем BOM файл
implementation(platform("androidx.compose:compose-bom-alpha:2025.05.00"))


#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14
⚙️ Paging3 в стиле Compose: секретный DSL, о котором молчат все Android-разработчики (11м)

Автор статьи написал простое DSL для упрощения работы с пагинацией через JetPack Paging3, вместо решения в лоб от Google. Исходны код на 🐱 GitHub

@Composable
fun ArticlesPage(
articles: LazyPagingItems<Article>,
onAction: (NewsListAction) -> Unit,
) {
val newsListState = rememberLazyListState()

HandlePagingItems(articles) {
onRefresh { CircularProgressIndicator() }
onEmpty { // UI for empty list }
onError { error -> // UI for error }
onSuccess { items ->
LazyColumn(newsListState) {
onPagingItems(key = { it.id }) { article -> // UI for article }
onAppendItem { CircularProgressIndicator(Modifier.padding(6.dp)) }
onLastItem { // UI for end of the list }
}
}
}
}


#compose #dsl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43👍10
This media is not supported in your browser
VIEW IN TELEGRAM
compose-table - Compose Multiplatform библиотека с поддержкой Android, iOS, JVM Desktop, WASM для показа таблиц

Можно попробовать онлайн версию

#compose #android #ios #jvm #desktop #wasm
👍411
В Compose 1.9.0 (пока в альфа) добавили новый Modifier - keepScreenOn(), который будет держать экран включенным, пока Composable функция будет частью композиции

Box(
modifier = Modifier.keepScreenOn()
){
...
}


#jetpack
71👍50🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
💠 Вышел Haze 1.6.0 - блюр в стиле glassmorphism для Compose Multiplatform

Что нового:
🤖 Размытие теперь работает на всех версиях Android
🎨 Поддержка размытия переднего плана (контента)
📐 Обработка размытых краёв

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40🤯9🤔4👍21
⚙️ Вышел Coil 3.2.0 - загрузчик изображений на Kotlin с поддержкой Compose Multiplatform

Что нового
⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий
🛠 Исправление багов
👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥42
🔥19🤔5🤯1
⚙️ Критерии Stable типа:

1️⃣ Все свойства val (желательно)
Свойства должны быть только для чтения (val). var допускается, если гарантируется стабильное поведение при изменениях.

2️⃣ Все свойства Stable типов
Все поля должны быть либо примитивами (Int, String, Boolean и т.д.), либо тоже Stable.
Свойства типа () -> Unit не считаются Stable, если не помечены аннотацией @Stable.
Лямбда сама по себе считается Stable типом, но важно что захватывает лямбда в теле и это может приводить к рекомпозиции

3️⃣ Нет reflection и переопределения equals/hashCode
Переопределённые методы могут сделать тип не Stable.

Проще говоря тип считается Stable, если:
👉 Его данные не изменяются неожиданно,
👉 Он не содержит ссылок на нестабильные объекты,
👉 Все его поля либо примитивные, либо Stable-типы.

Подробнее в документации

#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥117