Compose Broadcast @compose_broadcast Channel on Telegram

Compose Broadcast

@compose_broadcast


Все о Jetpack Compose и Compose Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Android - @android_broadcast
iOS - @ios_broadcast
Kotlin - @kotlin_broadcast

Compose Broadcast (Russian)

Новый канал "Compose Broadcast" - это ваш источник всей информации о Jetpack Compose и Compose Multiplatform. Если вы увлечены мобильным разработкой на платформе Android, то этот канал станет вашим главным помощником. Вы найдете здесь самые свежие новости, туториалы, и советы по использованию Jetpack Compose и Compose Multiplatform.

Кроме того, в нашем канале есть ссылки на YouTube канал, где вы можете найти еще больше полезной информации. Не упустите шанс узнать все об этой удивительной технологии.

Кто мы? Мы - сообщество разработчиков, которые разделяют общую страсть к мобильной разработке на Android. Наша цель - помочь вам освоить Jetpack Compose и Compose Multiplatform, делая вашу разработку более эффективной и увлекательной.

Не упустите возможность присоединиться к нам и быть в курсе всех последних новостей и разработок в мире Jetpack Compose и Compose Multiplatform. Присоединяйтесь к нам на нашем Telegram канале @compose_broadcast и не упустите ни одной важной информации! Android - @android_broadcast, iOS - @ios_broadcast, Kotlin - @kotlin_broadcast.

Compose Broadcast

27 Dec, 18:15


Итоги 2024 года для 🔨 @compose_broadcast

Пора отдохнуть и набраться сил в эти новогодние праздники! Вся команда проекта уходит на каникулы. Увидимся с вами в 2025!

Compose Broadcast

27 Dec, 11:22


Shimmer Animation in Jetpack Compose Without Recomposition (EN,5м)

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

#compose #оптимизация

Compose Broadcast

27 Dec, 09:23


Руководство (EN,10М) по интеграция Navigation Rail для компактных экранов (смартфоны) и больших (планшеты, десктопы)

#compose

Compose Broadcast

25 Dec, 12:00


Чтобы ваш LazyColumn работал эффективно, используйте ключ для идентификации элемента в ячейки списка

val yourList: List<Item> = ...
LazyColumn {
items(items = yourList, key = { it.id }) { item ->
ItemUI(item)
}
}


Это позволит получить повышение скорости работы списка, лучшее сохранение состояния, а UI плавнее. Подробности в статье (EN,3м)

#compose #производительность

Compose Broadcast

25 Dec, 09:00


Облако — это конструктор!

The Art of Programming — подкаст об ​​инструментах, технике и разработке ПО. По следам конференции HighLoad 2024 записали новый выпуск, в котором обсуждаем индустрию публичных облаков.

Вместе с Данилой Дюгуровым, CTO MTC Web Services, говорим о новостях индустрии, создании новых облачных платформ, потенциале рынка и принципах формирования топовых команд разработки.

🎧Слушайте The Art of Programming на всех популярных подкаст-площадках.

#реклама

Compose Broadcast

23 Dec, 09:12


🎉 Compose Hot Reload уже скоро появится

Если вы не знали, то JetBrains во всю делает прототип решения и уже есть рабочее решение. Пока только для Desktop, но будем ждать лучше. В статье (EN,10м) происходит демонстрация возможностей и рассказывается про принципы работы.

Кажется, что Flutter останется без одного своего преимущества перед Compose

#compose #desktop

Compose Broadcast

20 Dec, 11:10


Вышел Compose Multiplatform 1.7.3

Что нового
⚙️ Поддержка K2 режима для Compose плагина в IDEA
🛠 Исправленив в iOS
⬆️ Обновление до Jetpack Compose 1.7.6 и других свежих версий Jetpack библиотек

#compose

Compose Broadcast

18 Dec, 15:06


Канал @compose_broadcast перешёл черту в 5 000 подписчиков 🎉🎉🎉

Compose Broadcast

13 Dec, 10:25


#Tip #Compose

💡 Знаете ли вы?

Compose имеет встроенную функцию LoremIpsum, которая поможет сгенерировать вам тестовую строку необходимой длины для Preview и сэкономить вам время при разработке.

Compose Broadcast

12 Dec, 04:23


⚙️ Вышел Jetpack Compose 1.7.6 с исправлениям багов и улучшениями: поправили работы с TalkBack, удалили экспериментальную аннотацию SemanticsPropertyReceiver.invisibleToUser() и другие

#compose

Compose Broadcast

11 Dec, 13:05


⚙️ Статический анализ Compose кода

Рекомендую всем настроить правила статического анализа кода с Compose. Позволит избежать ошибок и подскажет полезное. Набор правил можно подключить к Detekt или KtLint.

#compose

Compose Broadcast

11 Dec, 11:37


Вышел Haze 1.1 (Compose MP наложение блюра) с возможностью масштабирования с уменьшением контента для ускорения обработки

#compose

Compose Broadcast

11 Dec, 11:10


Пройдите тест по Compose Modifier от KtAcademy и проверьте свои знания

В комментариях делитесь вопросами что у вызвали непонимание, а также результатами теста

#квиз #compose

Compose Broadcast

10 Dec, 06:00


Серия статей как работает анимация Compose под капотом

1️⃣ API анимации в Compose
2️⃣ Как на основе кадров рассчитывается значение элементов во время анимации

#анимация #compose

Compose Broadcast

09 Dec, 16:10


Инструкция по реализации анимации показа подсказки у поля ввода в Compose

#compose

Compose Broadcast

09 Dec, 14:06


Пример как в Compose делать иконки, которые зависят от платформы

#compose

Compose Broadcast

07 Dec, 16:37


⚙️ Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки (13м)

Опыт миграции приложения Дринкит с View на Compose. Рассказывается про значительное увеличение время первого открытия экрана и причину этого - поставка Compose отдельно от системы.

Ребята боролись с медленными запусками через оптимизации и лайфхаки, особенно интересным показался прогрев ComposeView через ContentProvider, чтобы сделать максимально рано на старте приложения, вплоть до запуска экрана во время splash 🤯.

Одной из причин тормозов - приложение было частью на View, часть на Compose и первым экраном user flow был View экран, а вот при старте с Compose экрана становится лучше. Полный Compose убирает многие тормоза из-за раннего "прогрева" кода

Лучший способ поддержать Макса, автора статьи, - подписку на его блог @mobilefiction

#compose #android

Compose Broadcast

28 Nov, 14:01


⚙️ Вышел Kotlin 2.1 и с ним новый Compose Compiler

👉 Несколько файлов конфигурации стабильных типов
👉 Приостанавливаемая композиция.Экспериментальная функция.
👉 Изменение поведения open, abstract и overriden Composable функций. Они больше не будут restartable. Теперь всегда будут приводить к рекомпозиции родителя.
👉 Ускорение компиляции

#kotlin #compose

Compose Broadcast

28 Nov, 04:42


📹 Clipping and masking | Jetpack Compose Tips (4м)

#compose

Compose Broadcast

26 Nov, 06:54


⚙️ Пример (5м) использоваться Modifier.graphicsLayer() для изменения вида и наложения эффектов. Исходники на GitHub

#compose

Compose Broadcast

24 Nov, 10:05


⚙️ Compose Libraries - портал для поиска Compose библиотек с поддержкой KMP и без

#compose

Compose Broadcast

24 Nov, 07:00


Хотите узнать, что нужно знать о макросах и генерации кода через Mason Bricks?

📚 Приглашаем на открытый вебинар "Макросы и другие помощники Dart/Flutter" от OTUS

🗓 Когда: 26 ноября в 20:00 мск
🔴 Зарегистрироваться на вебинар

Вы узнаете:
👉 внутреннее устройство и применение макросов для избежания ручного запуска генерации кода
👉 возможности генерации кода на основе шаблонов с mason bricks для быстрого создания целых приложений и их частей
👉 как можно расширить сборку через build hooks и автоматически создавать dart-код из чего угодно

🎁 Все участники открытого урока получат скидку 15% на курс "Flutter Mobile Developer"

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Compose Broadcast

23 Nov, 08:53


Пример использования корутин в Compose для блокировки перехода на другой экран с цель ожидания проверки подтверждения от пользователя

Читайте полную статью на канале Леши Панова @adept_notes

#compose #coroutines

Compose Broadcast

22 Nov, 09:00


Ищем автора эталонного кода! 💎

Если вы уверены, что вашему коду подходит звание «Эталонный», а вам — звание «Автор самого красивого кода», то приглашаем принять участие в Конкурсе красоты кода 2.0 и выиграть классные призы от Сбера: iPhone 16 и умную колонку SberBoom.

Опытные эксперты определят победителей в пяти категориях: Backend, Frontend, DevOps, AI и Mobile, — а награждение пройдёт на ключевом IT-событии HighLoad в Москве, 2 и 3 декабря.

Больше 40 участников прошлого конкурса стали частью команды Сбера. Возможно, следующим станете именно вы — переходите по ссылке и изучайте подробности!

#реклама

Compose Broadcast

22 Nov, 07:10


⚙️ Как создать свой Compose Modifier (EN,5м)

Статья с обзором создания собственного Modifier в Compose одним из способов:
⚙️ composed { }
⚙️ @composable modifier factory
⚙️ Modifier.Node API

#compose

Compose Broadcast

21 Nov, 12:00


Какие различия между iOS и Android в области технологий и пользовательского опыта?

🔥 Узнайте ответ в новом выпуске Sravni Podcast «IOS vs Android. Большая битва платформ»

Подкаст доступен на разных площадках:
📹 YouTube
📺 RUTUBE
🎵 Яндекс Музыка

Также в выпуске:
◾️ Состояние мобильной разработки — есть ли кризис?
◾️ Развитие разработчиков для iOS и Android: полезные материалы и практики
◾️ Превосходство Android Studio над XСode?
◾️ Когда наступит кроссплатформенное будущее?

Реклама. ООО «Сравни.ру» ИНН: 7710718303

Compose Broadcast

21 Nov, 10:45


В продолжение статьи автор сделал замер скорости от использования лямбды вместо простого значения в Composable функции. Результаты в статье, а коротко под спойлером
Уменьшилось количество потерь кадров на 30% и сокращения расхода оперативки больше чем на 1 Мбайт в среднем 🤯

#compose #производительность

Compose Broadcast

19 Nov, 12:00


⚙️ Важный совет по ускорению Compose

Порой вместо передачи значения в Composable функцию лучше делать это через лямбду, так как это не приведет к рекомпозицям. Лучший пример - Modifier.offset. В статье как раз демонстрируется какой эффект оказывает описанный подход

#compose #производительность

Compose Broadcast

19 Nov, 06:00


⚙️ JetBrains сделала Hot Reload для Compose Desktop не хуже чем в Flutter

Добились этого благодаря использованию специальной JVM с поддержкой переопределения классов, доступной в JetBrains Runtime.

В 📹 видео (EN,6м) происходит демонстрация

Пока всё в экспериментальном режиме, но результаты радуют ❤️. Когда же уже Compose MP превью в IDE будет работать из коробки

#compose #desktop #jvm #idea #androidstudio

Compose Broadcast

18 Nov, 12:00


Composable Screens - приложение с демонстрацией сложных интерфейсов, реализованных на Compose UI.

#пример #compose

Compose Broadcast

18 Nov, 07:50


⚙️ 📹 Как использовать Graphics Layer в Compose для добавления визуальных эффектов

#compose

Compose Broadcast

18 Nov, 06:00


🚀 Библиотека для интеграции Bottom Sheets из Material 3 в Jetpack Navigation Compose

#compose #навигация #material3

Compose Broadcast

17 Nov, 09:40


⚙️ Анимированное лого Airbnb в Jetpack Compose

Статья с реализацией анимирования лого Airbnb. Используется SVG логотип и происходит анимация по его точкам

#compose #android #анимация

Compose Broadcast

14 Nov, 09:25


🐱 Libre-Sudoku - open-source Android приложение на Jetpack Compose ⚙️ и Material 3

#пример #android #compose #material3

Compose Broadcast

13 Nov, 17:04


Вышел Compose Multiplatform 1.7.1
🚀 Улучшения производительности
🛠 Исправлена бинарная совместимость на JVM
🛠 ИСправлены баги
⬆️ Обновились до Jetpack Compose 1.7.5 и других свежих библиотек

#compose #kmp #jvm

Compose Broadcast

12 Nov, 06:00


💡 Preview Driven Development - новый подход к разработке Android-приложений

Концепция предлагает активно использовать превью-компоненты для тестирования и разработки интерфейсов и функций. Вот в чем суть:

👉 Jetpack Compose Previews позволяют не просто просматривать, но и тестировать функции на этапе разработки. Это упрощает процесс, снижает количество ошибок и дает визуальное представление всех состояний приложения.

👉 Мини-приложения для тестирования — каждый превью-компонент можно использовать как изолированное мини-приложение. Это значит, что тестировать отдельные элементы приложения можно без полной сборки и запуска.

👉 Автоматизация тестов — с помощью таких инструментов, как Emerge Snaphots, можно автоматизировать процесс проверки UI. Это делает разработку более стабильной и ускоряет релиз новых версий.

Для тех, кто хочет упрощать разработку и избегать неожиданных багов, Preview Driven Development — отличный инструмент! 💻

Исходники приложения доступны на 🐱 GitHub

#android #androidstudio #compose #автотесты

Compose Broadcast

11 Nov, 14:48


Статья(EN,5м) с примером реализации центрированного слайдера

#compose #виджет

Compose Broadcast

11 Nov, 14:39


Compose Swift Bridge от TouchLab - инструмент для Compose MP разработчиков. Генерирует 🦢 Swift код для делегации вызовов Compose функций в нативных iOS View.

Исходный код на 🐱 GitHub

#kmp #ios #compose #touchlab

Compose Broadcast

09 Nov, 16:42


Вышел Haze 1.0 - Compose Multiplatform библиотека для блюра в UI. Нужна версия Compose 1.7.0

‼️ Если использовали предыдущие версии, то в 1.0 произошли изменения API

🐱 Исходники на GitHub

#compose #android #ios #desktop

Compose Broadcast

07 Nov, 05:07


🇺🇸 Рисуем SVG в Compose Great Again

Сегодня расскажу, как можно нарисовать сложный рисунок в Compose, если у вас есть SVG файл. А именно как распарсить SVG файл в удобные для нас Path и отрисовать их “руками”.

🔍 Парсинг SVG: Мы загружаем SVG файл с помощью XmlPullParser, который читает каждый элемент. В каждом path элементе хранится информация о том, как рисовать фигуру — всё закодировано в атрибуте d. Этот атрибут содержит команды типа "M" (move to), "L" (line to), "C" (curve to) и координаты. Вместе они формируют контур, который и станет нашим рисунком.

🛠️ Конвертация Path: Здесь проблема. В Compose пока нет метода для декодирования пути напрямую из d атрибута SVG.

Но мы сделаем конвертацию Great Again! Мы сначала создаём старый добрый Path из androidx.core.graphics (через метод createPathFromPathData), а потом конвертируем его в Compose Path с помощью asComposePath. Немного костыльно, но работает.

Теперь, когда мы всё распарсили и конвертировали, можем просто отобразить это в Compose.

Я выложил пример на GitHub, где вы можете посмотреть, как это работает. В этом проекте пярмо то, что изображено на видосе, какая-то карта и какие-то непонятные области.

P.S. Да, нажатия сделаны не совсем идеально — попадание внутрь Path осуществляется по bounding box, а не точно по форме. Но это уже отдельная задача, а здесь у нас фокус на отрисовке! 😎

💬 А что интересного вы рисовали в Compose?

#compose #svg

Compose Broadcast

06 Nov, 09:00


😍 Игровой стол Ergostol Ultima от Ergostol для вашего удобства

Уникальный в своем дизайне игровой компьютерный стол с RGB подсветкой Ergostol Ultima это совершенно новый уровень комфорта.

Преимущества стола:
электрическая регулировка высоты позволяет поднять или опустить стол в диапазоне от 74 до 122 см
выравнивающиеся ножки: адаптируются к самому неровному полу или поверхности
пульт управления столом (управление столом, настройка RGB-подсветки и type-C для быстрой зарядки ваших устройств )
держатель для напитков в комплекте: для кружек или стаканов с напитками
удобный крюк на раме для сумки, рюкзака или наушников
вырез сзади для кронштейна монитора: позволяет установить компьютерный стол вплотную к стене
подсветка и коврик для мыши в комплекте
два цвета моделей: черный и белый

👉 Еще больше моделей столов вы найдете на сайте Ergostol

❗️По промокоду ANDROID10 вы получите скидку на все товары в вашей корзине

Реклама. ООО «СОФТЭФФЕКТ», ИНН 7735575262

Compose Broadcast

05 Nov, 18:43


Если хотите сделать такое форматирование с Compose, то обратите внимание на библиотеку Compose Rich Editor

#compose

Compose Broadcast

05 Nov, 10:14


🔥 Открытый урок "Используем GPU для создания настоящего 3D-движка в Flutter" от OTUS

🗓 Когда: 6 ноября в 20:00 мск
👉 Регистрация по ссылке

❗️На уроке вы создадите простой 3D-движок и разработаете простую игру в виртуальном 3D-мире.

Спикер: Дмитрий Золотов — опытный Flutter+Kotlin Developer в Yandex, FullStack разработчик (Flutter/Python/Kotlin/GoLang/C++), преподаватель

🎁 Всем участникам дадим скидку на основной курс.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Compose Broadcast

05 Nov, 05:39


Вышел загрузчик изображений Coil 3.0 c поддержкой 🏝Kotlin Multiplatform. Теперь помимо 🤖 Android поддерживается iOS, JVM, JS и WASM. Подробнее тут

Что еще нового:
❗️ Изменился пакет с io.coil-kt на io.coil-kt.coil3
👉 Можно выбрать библиотеку для работы с сетью: OkHttp или Ktor
👉 Улучшили работы с Compose Preview
Убрали загрузку Android ресурсов через android.resource://example.package.name/drawable/image
❗️ По умолчанию размер декодированной картинки не будет превосходить размер 4096 на 4096
❗️ Работу с Coil 2 Parameters API заменил на Extras
🛠 Важные улучшения и исправления

Новая версия требует внесения изменения в код. Подробное руководство читайте в руководстве по миграции

#kmp #сеть #картинки #compose

Compose Broadcast

04 Nov, 09:40


Пример создания паралакс эффекта в Compose

#анимация #compose

Compose Broadcast

04 Nov, 07:52


Короткая статья с описанием того как под капотом устроена работа Compose чтобы модифицировать код с Composable аннотациями и привести его к исполняемому виду

#подкапотом #compose

Compose Broadcast

31 Oct, 10:49


Вышел Jetpack Compose 1.7.5

Compose Bom для новой версии androidx.compose:compose-bom:2024.10.01

Compose Broadcast

31 Oct, 04:30


📺 Видео от Android Developers (4м) про использование Modifier.anchoredDraggable для перемещения компонентов UI

#compose

Compose Broadcast

30 Oct, 16:59


Yandex MapKit KMP SDK - библиотека обертка над Yandex Map Kit для Android и iOS

Поддерживает несколько способов взаимодействия для обеспечения постепенной интеграции в приложение. Можно вынести логику в Kotlin common код и иcпользовать нативный UI или взять реализацию на Compose Multiplatform

Больше подробностей смотрите в статье

#yandex #карты #kmp #android #ios

Compose Broadcast

30 Oct, 06:43


Статья (9м) с реализацией виджета выбора даты на Compose

#compose

Compose Broadcast

28 Oct, 06:00


📺 Performance: Perfetto Traceviewer (7 мин)

Хорошее видео чтобы понять как работать с Perfetto и анализировать трейсы Android системы

#инструменты

Compose Broadcast

27 Oct, 19:10


Интересная статья где автор показывает как с помощью инструментов Perfetto и Diffetto искать проблемы в работе Composable функций

#compose #производительность #android

Compose Broadcast

27 Oct, 18:18


Как добавить поддержку Predictive Back Gesture в Compose читайте в статье

#compose #анимация #android14

Compose Broadcast

25 Oct, 09:00


📱 Мобильная разработка изнутри: команда Яндекса выпустила мини-сериал «Мобилка»

❤️ Команда мобильной разработки Яндекса совместно с IT-блогером Алексеем Гладковым представили новый мини-сериал о закулисье создания мобильных приложений.

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

На протяжении четырех эпизодов зрители погружаются в дискуссии команды: от выбора между Kotlin и Flutter для кроссплатформенной разработки до построения архитектуры приложения с учетом опыта таких проектов как Яндекс Браузер и Кинопоиск.

🔥 Особое внимание уделяется тому, как устроена командная культура: зрители увидят, как в Яндекс Еде выстраивают процессы разработки, как работает вечерняя школа тимлидов и как команды справляются с неизбежными трудностями при запуске новых фич. А в завершение авторы делятся исходным кодом созданного в процессе съемок приложения на GitHub.

📱 Все четыре эпизода уже доступны на канале Yandex for Mobile.

Compose Broadcast

21 Oct, 06:36


Если вы делает приложения для десктопа с возможность использования из трея, то библиотека Compose Native Tray может помочь вам писать там UI на Compose. Поддержка #windows, #macos, #linux

#desktop

Compose Broadcast

18 Oct, 07:01


Библиотека с нестандартными прогрессами для Compose: шестеренки и пазл

#compose

Compose Broadcast

18 Oct, 04:36


📺 Адаптивные layout в Compose

Изучите принципы создания адаптивных макетов в Compose, следуя системе phase, с примерами пользовательских макетов, используя советы и рекомендации по воплощению дизайна в жизнь.

0:00 Введение
0:23 Этапы и адаптивные layout
5:06 Проверка корректности первой демонстрации
6:53 Subcomposition
7:37 Информация о размерах на уровне окна
8:23 Custom Layout
17:39 Cхема решения

#compose

Compose Broadcast

17 Oct, 06:17


Вышел Jetpack Compose 1.7.4 c исправлением багов в Foundation и UI

#compose #android

Compose Broadcast

16 Oct, 17:24


Compose for iOS в версии 1.7.0 + Kotlin 2.0.20 ускорили

#compose #ios #производительность

Compose Broadcast

16 Oct, 09:56


Что нового в Compose Multiplatform 1.7.0 для iOS
👉 Базовая поддержка курсора
👉 Настройка status bar из ComposeUIViewControllerDelegate
👉 Лучшая работа с обработкой жестов между Compose UI и interop view
👉 Новые API UIKitView и UIKitViewController
👉 Базовая поддержка BasicTextField2

#compose #ios

Compose Broadcast

16 Oct, 09:50


Вышел Compose Multiplatform 1.7.0
👉 Jetpack Navigation с поддержкой Safe Args и Shared Element Transitions
👉 LocalLifecycleOwner переехал в lifecycle-runtime-compose и может быть использовать вне Compose UI
👉 Поддержка WindowSizeClass в Compose MP
👉 Адаптивные layout в Compose MP (также навигация)
⬆️ Требуется Android Gradle Plugin 8.1.0 или выше
👉 Compose MP ресурсы на Android теперь хранятся в ассетах
API для работы с ресурсами в compose.ui сделали deprecated. Используйте Compose Resources API
👉 Поддержка Kotlin 1.9.25
🛠 Исправление багов и улучшения

Изменения на GitHub

#compose #multiplatform

Compose Broadcast

15 Oct, 11:05


Статья с введением в UI тесты на Jetpack Compose, кажется полезным если вы не хотите читать документацию на английском

#compose #тестирование

Compose Broadcast

14 Oct, 07:00


Статья с реализацией подобной анимацией в Compose

#анимация @compose_broadcast

Compose Broadcast

14 Oct, 06:36


"Как из Леруа Мерлен сделали Лемана Про" (13м) - история ребрендинга приложения о том как меняли, цвета, строки, работу с Deep Link и другие части Android и iOS приложений

#compose #uikit #android #ios #swiftui

Compose Broadcast

10 Oct, 16:54


В следующей версии Android Studio уберут Motion Editor 🤯, как часть процесса миграции с XML UI на Jetpack Compose. Используйте Compose Animation Preview (говорится что это более продвинутый инструмент)

#androidstudio #compose #анимация

Compose Broadcast

07 Oct, 12:25


Texty - библиотека для создания различных эффектов с текстом в Compose Multiplatform

#kmp #android #ios #desktop #js #wasm