🔥⚙️ 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
Самый громкий и важный анонс в истории 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
🛠 Значительные переработки под капотом для улучшения поддержки KMP
👉 Добавлена поддержка обработки deep link из Kotlin Common кода
👉 Улучшения API
#jetpack #jetpackupdate #navigation #compose #kmp
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Обновляем 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
Обновляем BOM файл
implementation(platform("androidx.compose:compose-bom-alpha:2025.05.00"))
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14
Автор статьи написал простое DSL для упрощения работы с пагинацией через JetPack Paging3, вместо решения в лоб от Google. Исходны код на
@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
Можно попробовать онлайн версию
#compose #android #ios #jvm #desktop #wasm
👍41❤1
В Compose 1.9.0 (пока в альфа) добавили новый Modifier - keepScreenOn(), который будет держать экран включенным, пока Composable функция будет частью композиции
#jetpack
Box(
modifier = Modifier.keepScreenOn()
){
...
}
#jetpack
❤71👍50🔥2
Писали ли свой layout в Compose?
Anonymous Poll
39%
Да
52%
Нет
3%
Не знаю Compose
0%
Не пишу код
1%
Другой вариант
5%
Не участвую в опросе
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
💠 Вышел Haze 1.6.0 - блюр в стиле glassmorphism для Compose Multiplatform
Что нового:
🤖 Размытие теперь работает на всех версиях Android
🎨 Поддержка размытия переднего плана (контента)
📐 Обработка размытых краёв
#compose
Что нового:
🎨 Поддержка размытия переднего плана (контента)
📐 Обработка размытых краёв
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥40🤯9🤔4👍2❤1
Что нового
⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий
🛠 Исправление багов
👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥4❤2
Какое из утверждений о Stable типах в Jetpack Compose верно?
Anonymous Quiz
2%
Stable типы всегда пересоздаются при recomposition.
10%
Stable типы не гарантируют отсутствие побочных эффектов в функции composable.
78%
Stable типы помогают снизить количество ненужных recomposition.
5%
Любой data class в Kotlin автоматически считается Stable типом в Compose
6%
Не участвую
🔥17🤔3❤1
Выберите класс, который будет признан Stable типом в Jetpack Compose:
Anonymous Quiz
3%
data class A(val numbers: List<Int>)
74%
data class B(val name: String, val age: Int)
10%
data class C(var id: Int)
10%
data class D(val callback: () -> Unit)
3%
Не участвую
🔥19🤔5🤯1
Какое из следующих утверждений о Stable и Immutable типах в Jetpack Compose верно?
Anonymous Quiz
8%
Immutable типы могут менять своё внутреннее состояние после создания.
28%
Stable типы гарантируют, что их содержимое никогда не изменяется.
4%
Любой data class автоматически считается Immutable в Compose.
61%
Все Immutable типы также считаются Stable типами.
🔥27
Свойства должны быть только для чтения (val). var допускается, если гарантируется стабильное поведение при изменениях.
Все поля должны быть либо примитивами (Int, String, Boolean и т.д.), либо тоже Stable.
Лямбда сама по себе считается Stable типом, но важно что захватывает лямбда в теле и это может приводить к рекомпозиции
Переопределённые методы могут сделать тип не Stable.
Проще говоря тип считается Stable, если:
👉 Его данные не изменяются неожиданно,
👉 Он не содержит ссылок на нестабильные объекты,
👉 Все его поля либо примитивные, либо Stable-типы.
Подробнее в документации
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥11❤7
Immutable — это объект, который невозможно изменить после создания, и его поля тоже нельзя изменить (не берем в расчет способы через рефлексию)
Каждый property должен быть либо примитивом (Int, String и т.д.), либо другим Immutable типом.
В идеале — final класс.
// Пример
@Immutable
data class User(val id: Int, val name: String)
Подробнее в документации
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍9❤2
@Immutable
👉 Используйте, если ваш класс полностью неизменяемый после создания (все поля val, только immutable-типы).
👉 Это даёт максимальную оптимизацию recomposition — Compose уверен, что объект не поменяется неожиданно.
@Stable
👉 Используйте, если класс допускает изменения, но эти изменения происходят предсказуемо, и вы гарантируете корректную работу с recomposition.
👉 Полезно для сложных классов, коллекций или собственных типов состояния.
Для типов из библиотек можно указать их стабильность через файл конфигурации в Gradle скрипте:
// Указание типа как Stable
java.time.LocalDateTime
// НЕ СТОИТ ТАК ДЕЛАТЬ Указание всех типов в пакете как Stable
com.datalayer.*
// НЕ СТОИТ ТАК ДЕЛАТЬ Указание всех типов в пакете и подпакетах как Stable
com.datalayer.**
Подробнее в документации
#compose
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23👍6❤3
Strong Skipping Mode — это режим, при котором Compose точно отслеживает изменения параметров composable-функций и пропускает рекомпозицию, если параметры не изменились и считаются Stable.
Как работает режим компилятора
👉 Если параметры функции Stable и равны предыдущим значениям (через Object.equals()), Compose пропускает рекомпозицию этого composable.
👉 Для Unstable типов происходит сравнение через проверку ссылки (вызов === в Kotlin), что минимизировать кол-во рекомпозиций
👉 Даже лямбды
(() -> Unit)
считаются Stable, но если они захватывают нестабильные объекты, Compose не сможет пропустить рекомпозицию, потому что захваченные значения могут измениться.👉 При выключенном Strong Skipping режиме Compose реже пропускает рекомпозицию, даже если параметры формально Stable.
Почему это важно?
👉 Strong Skipping помогает избегать ненужных перерисовок и увеличивает производительность UI.
👉 Если вы передаёте в composable нестабильные параметры, skipping работать не будет — функция будет вызываться чаще.
Ключевые моменты:
👉 Лямбды по умолчанию Stable, но их захватываемые значения могут ломать skipping.
👉 Параметры типа SnapshotStateList, SnapshotStateMap, MutableState считаются Stable.
👉 Strong Skipping Mode по умолчанию включён с Kotlin 2.0.20, и его рекомендуется не отключать для современных проектов.
#compose #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24