Пример(EN,6м) реализации онбординга (рассказ про новые элементы приложения) пользователю на Compose Multiplatform. Решается задача определения положения Compose элемента на экране, затемнение фона и показ подсказки, где есть свободное место на экране
🔗 Ссылка без VPN
#compose #kmp #andorid #ios #desktop
🔗 Ссылка без VPN
#compose #kmp #andorid #ios #desktop
❤21👍7🔥1
Coil и Yandex MapKit KMP: рисуем аватарки на карте. Часть 3 (6м)
Как с помощью библиотеки от сообщества Yandex MapKit KMP Compose для Android и iOS, показывают аватары пользователей с сервера.
#kmp #compose #android #ios #карты
Как с помощью библиотеки от сообщества Yandex MapKit KMP Compose для Android и iOS, показывают аватары пользователей с сервера.
#kmp #compose #android #ios #карты
👍20
Обзор фреймворка Ultron для написания UI тестов на Android. Если пишите чисто нативно под Android на Kaspresso, то переход дело вкуса, но вот именно на Compose Multiplatform открывается вся мощь!
🔗 Обсуждение технологии в чате @ultron_framework
8:13 Стандартный фреймворк для UI тестов
16:00 Kaspresso
18:48 Тесты на Ultron
24:28 Сравнение с Google и Kaspresso
25:25 Интеграционные Compose тесты
28:10 Пример 1. Тест на разных ферймворках
40:46 2 интеграционный тест
41:35 useUnmergedTree в Google framework
44:41 Пример 2. Тест на разных ферймворкахю
1:00:56 Ultron, индексы по всему LazyList
1:07:36 Ultron, testTag - 2 способ поиска в LazyList
1:11:41 Allure report, Ultron и Kaspresso
1:23:15 Разница в allure report между ними(Ultron и Kaspresso)
1:31:07 1 тест RecyclerView на других фреймворках, Page Object
1:35:40 Ultron, 1 тест RecyclerView, Page Object
1:39:00 2 тест RecyclerView на других фреймворках, Page Object
1:42:38 Ultron, 2 тест RecyclerView, Page Object
1:53:00 Ultron, Сравнение тестов LazyList и RecyclerView
1:54:11 Ultron, RecyclerView features
2:01:50 Ultron, UI automator, сравнение с Google
2:06:15 Ultron, тест WebView
2:11:04 Ultron listeners (и далее внутрянка)
2:14:43 Ultron extensions
2:19:55 Ultron withAssertion extension
2:23:43 Ultron performOnViewForcibly
2:26:11 Ultron, View custom extensions
2:34:04 Ultron, Compose custom extensions
2:41:16 Ultron, Rules management
2:50:48 Ultron, test data for single test
#compose #тестирование #anroid #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Ultron - фреймворк для тестирования Android UI и Compose. Демо возможностей
Обзор фреймворка Ultron для написания UI тестов на Android
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://xn--r1a.website/ultron_framework
🔗 Каналы "Android Broadcast"…
🔗 Код из видео https://github.com/open-tool/ultron/tree/demo
🔗 Ultron GitHub https://github.com/open-tool/ultron
🔗 Ultron Telegram группа https://xn--r1a.website/ultron_framework
🔗 Каналы "Android Broadcast"…
👍16
🔥⚙️ 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
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
Плюсы решения
👉 Компоненты без стилизации
👉 Поддержка доступности и навигации клавиатурой
👉 Простое API
👉 Одинаковое поведение на всех платформах
👉 Хорошая документация
👉 Все компоненты поддерживают все KMP таргеты Compose
#compose #kmp #composemp #android #ios #desktop #wasm #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Приложения с KMP и Compose Multiplatform для Android, iOS, Desktop, Web. Стек: Kotlin Inject, KStore, KotlinX библиотеки, Ktor, Coil, KMP Settings, Compose Desktop JVM Hot Reload
Автор - Константин Цховребов из JB команды KMP.
Скачать можно в Google Play, а вот в App Store не выкладывали.
#compose #kmp #kotlin #пример #android #desktop #ios #web #wasm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍38🔥11
// Пример использования
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
❤14👍3🤯1
🔗 Альтернативная ссылка
#compose #ios #ios26
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯32👍13🔥2👏1
Тех стек:
👉 Многомодульная архитектура
👉 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
👍24🔥6❤3
Что нового:
Compose iOS
👉 Прокачали работу с софт клавиатурой
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🔥3👏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
В iOS 26 Apple полностью обновила визуальный язык всех своих систем — от iPhone до Mac — на основе эффекта Liquid Glass.
Это не просто редизайн: весь интерфейс теперь основан на динамическом материале, который выглядит как живое стекло — с прозрачностью, преломлением, отражениями и адаптацией к фону и движению.
🧩 Всё это работает на уровне системного UI-стека, а не через отдельные шейдеры в приложении.
Apple интегрировала эффект прямо в UIKit и SwiftUI — стандартные контролы (панели, навигация, вкладки, кнопки и т.д.) автоматически наследуют материал без изменений в коде.
Для кастомных интерфейсов появились обновлённые API, управляющие степенью «стеклянности» и размытия.
Рендеринг выполняется через Metal с аппаратным ускорением и оптимизацией под энергопотребление.
Это значит, что системные визуальные эффекты, вроде динамического стекла, не будут работать «из коробки».
Возможна имитация Liquid Glass силами движка, но тогда нужно в реальном времени искажать фон под элементом — а это серьёзная нагрузка на CPU/GPU и батарею.
😯 На iOS Skia действительно работает поверх Metal, но использует лишь его базовый 2D-функционал, без доступа к системным шейдерам, материалам и эффектам среды.
Теоретически Skia может эволюционировать в эту сторону, но пока она изолирована от системного рендеринга.
На 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
🤯34👍12❤1🔥1🤔1
Привет! Вышла стабильная версия Compose Multiplatform 1.10.0 с революционными изменениями для кроссплатформенной разработки. Давайте разберём главные фичи, которые изменят ваш подход к KMP.
🔥 Главная фишки релиз - Preview аннотация теперь работает в коде из commonMain — наконец-то!
// Работает в commonMain!
@Preview
@Composable
fun MyComponentPreview() {
MyTheme {
MyComponent()
}
}
МИГРАЦИЯ! Депрекейт
org.jetbrains.compose.ui.tooling.preview.Preview → переходите на androidx.compose.ui.tooling.preview.Preview👉 Compose Hot Reload встроен в Compose плагин и подключать отдельно больше не нужно
adaptive-navigation3⚠️ Breaking Changes & Миграция
Требования к версиям Kotlin
- Kotlin 2.1.20+ (обязательно из-за Hot Reload)
- Kotlin 2.2+ для native и web платформ
// build.gradle.kts
kotlin {
sourceSets {
commonMain.dependencies {
implementation(compose.ui)
// Заменяем на
implementation("org.jetbrains.compose.ui:ui:1.10.0")
}
}
}
Кто уже обновился? Какие впечатления от Preview в commonMain? Делитесь в комментариях!
#compose #gradle #kmp #android #ios #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
❤37🔥27👍3👎2
До сих пор для сеток у нас были только ленивые
LazyVerticalGrid / LazyHorizontalGrid. Но если все элементы уже в памяти (небольшое количество) и нужен точный контроль над расположением ячеек — пригождается новый экспериментальный Grid.// Пример
Grid(config = {
column(100.dp)
column(1.fr) // забирает остаток строки
row(50.dp)
row(80.dp)
gap(8.dp)
}) {
Box(Modifier.gridItem().fillMaxSize()) { ... }
Box(Modifier.gridItem().fillMaxSize()) { ... }
Box(Modifier.gridItem().fillMaxSize()) { ... }
Box(Modifier.gridItem().fillMaxSize()) { ... }
}
Работает на Android и KMP (iOS, Desktop, Web) – общий API
🔗 Документация по Grid
#Compose #KMP #Android #iOS #Desktop #Web #CMP
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33👎2
Протестировал новый ввод на iOS из Compose 1.11.0. Становится нативнее по поведению, но вот надо проверять на iOS смартфоне тем кто им регулярно пользуется
#Compose #iOS
#Compose #iOS
👍19👎5
Всё сводится к более точечному встраиванию Compose экранов в iOS Controller и перекладывание навигации на нативные элементы.
#Compose #iOS #iOS26 #LiquidGlass
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎8