Compose Broadcast (@compose_broadcast) — Telegram-канал | Telegram Dialogs
Все каналы
Compose Broadcast

Compose Broadcast

@compose_broadcast

5.9K подписчиков технологии 💬 Комментарии открыты

Все о Jetpack Compose и Compose Multiplatform YouTubе канал: https://youtube.com/androidBroadcast Android - @android_broadcast iOS - @ios_broadcast Kotlin - @kotlin_broadcast

Последние публикации

Compose Broadcast
14.07.2026 14:24 · 👁 1.6K
🏝 Всем, кто ждал Kotlin 2.4.10 для обновления на новую версию языка — обновляйтесь! Из того, что реально касается продакшн-кода - исправлена регрессия в Compose Compiler: классы, которые раньше считались stable, в 2.4.0 иногда определялись как runtime/Uncertain. Если недавно обновились на 2.4.0 и столкнулись со странными лишними рекомпозициями — обновляйтесь на новую версию. #Kotlin #Compose
Compose Broadcast
06.07.2026 14:00 · 👁 3.6K
⚙️ Мигрировать на Navigation 3 можно, но только всё приложение разом. И это не единственная засада Честный кейс от разработчицы: она в одиночку перевела приложение на 170+ экранов с Nav2 на Nav3 🤯. Не пересказ доков, а грабли из прода. Объем работы: 302 файла (по сути весь app), 2 недели разработки с овертаймами, ~1.5 недели стабилизации, 1 хотфикс. Что стоит забрать себе ещё до старта: Поэтапно не выйдет. Обратной совместимости между Nav2 и Nav3 нет, мигрируешь либо всё сразу, либо никак. Отсюда огромный affected area и главная организационная боль: команда не фризила разработку, коллеги параллельно пилили новые экраны на старой навигации. Чем дольше тянешь, тем дороже разгребать merge-конфликты. Bottom Sheets из коробки в навигации нет. Пришлось городить обёртку вокруг entry<> с флагом в metadata и вручную разруливать, что рисовать через ModalBottomSheetLayout, а что через NavDisplay: val NavEntry<out NavKey>.isBottomSheet: Boolean get() = metadata["isBottomSheet"] as? Boolean == true NavDisplay( entries = navigationState.toEntries(mainEntryProvider) .filter { it.isBottomSheet.not() }, onBack = { navigator.goBack() }, ) Сейчас это решается официально через BottomSheetSceneStrategy, свой костыль автор потом выкинула. Мигрируешь сегодня — сразу проверь, что шторки ложатся на SceneStrategy, а не переоткрывай этот велосипед. ⚠️ И отдельный подвох: шторка часть стека, и если перед переходом на следующий экран не закрыть её руками, back вернёт её обратно. Легко забыть. Сериализация уронит тебя уже в проде. 💥 Всё, что прокидываешь через навигацию, должно быть @Serializable. Автор прокинула entryPoint: NavKey (чтобы при блокировке юзера возвращать на нужный экран через несколько назад), а сам NavKey сериализуемым не был: Fatal Exception: kotlinx.serialization.SerializationException Ловушка в том, что краш не в обычном флоу, а в отдельных сценариях восстановления, поэтому проходит ревью и ручные тесты, а ловится только у юзеров. 🔗 Полный разбор с кодом и схемами на Medium #Compose #Navigation3 #Android
Compose Broadcast
03.07.2026 08:55 · 👁 4.1K
📹 What's New in Compose Multiplatform | Sebastian Aigner and Márton Braun | Kotlin Conf 2026 37 минут от Sebastian Aigner и Marton Braun (JetBrains) про всё, что вышло за последний год. Хорошо структурированный доклад: общие изменения, потом iOS, потом Web. Ключевое: 👉 Navigation 3 — стабильный в CMP. Бэкстек это просто SnapshotStateList<NavKey>, которым управляешь сам. Адаптивные Scene-API, нативные iOS-жесты, browser history на Web из коробки. 👉 Compose Hot Reload — стабильный, встроен в новые проекты без настройки. Работает и с AI-агентами: IDE подхватывает правки в файлах и перезагружает UI сама. 👉 @Preview унифицировали: androidx.compose.ui.tooling.preview.Preview теперь работает в commonMain. Прошлые аннотации deprecated. 👉 iOS: параллельный render pipeline по умолчанию в 1.11 (+20% на сложных лейаутах), placedAsOverlay для нативных Liquid Glass-компонентов, полноценный нативный ввод с magnifier / translate / autofill / кастомными IME. 👉 Web (beta): HTMLElementView для HTML прямо в Composition, VoiceOver через семантику, Coil на web workers. 👉 Из цифр в докладе: Kuaishou (250M DAU) и Tencent Video (340M MAU) уже работают на CMP-экранах. По iOS-блоку видно, что команда за год реально закрыла большинство «но» для старта 0:00 Вступление: что такое Compose Multiplatform 2:04 Масштаб: Perk, Alipay, Kuaishou, Tencent 4:06 Демо: структура нового проекта 5:40 Compose Hot Reload 8:49 Паритет с Jetpack Compose 10:24 Navigation 3 16:05 Единая аннотация @Preview 17:39 iOS: новый pipeline рендеринга 19:43 iOS: Liquid Glass и overlay interop 27:00 iOS: нативный ввод текста 31:11 Web: HTML interop 33:46 Web: доступность и производительность 35:50 Итоги #ComposeMultiplatform #KMP #Navigation3 #KotlinConf
Compose Broadcast
29.06.2026 11:59 · 👁 4.6K
🐱 DrawBox 2.0: Compose-библиотека для рисования на KMP DrawBox работала как Android-only с 2021 года. В конце мая вышел 2.0.0-alpha02 с таргетами Android, iOS, JVM/Desktop и WASM. Живая демка работает прямо в браузере без установки. В 2.0 добавили: SVG и JSON экспорт, бесконечный канвас с зумом и паном, выделение и перетаскивание фигур, коннекторы, object eraser и Roborazzi тесты. Автор написал пост про перенос, и самый ценный кусок там не про KMP. Самая интересная часть - использование MVI. Один State, Intent на каждое действие, Reducer с (State, Intent) → State. После этого undo/redo - это стек из State, JSON-сериализация практически бесплатна, и логика платформ физически не может разъехаться. #Compose #KMP #ComposeMultiplatform
Compose Broadcast
22.06.2026 08:53 · 👁 6K
⚙️ skydoves выпустил Compose HotSwan v2 Beta для Android: заменить весь экран без рестарта приложения v1 умел одно — применять изменения значений без rebuild: цвет, padding, текст, размеры — результат за секунду, приложение живёт. Добавить composable, переставить layout, поменять control flow — всё это шло в полный rebuild. v2 убирает эту границу. Без рестарта приложения: добавляем и удаляем composable-функции, меняем структуру layout, переписываем conditional UI. И главное — заменяем целый экран на совершенно другой код. Навигационный стек и remember-состояние сохраняются. Технически v2 запускает изменения через собственный интерпретатор, обходя ограничения ART на переопределение классов — тот же подход, что у Flutter. При слишком глубоких изменениях деградирует плавно: сбрасывает composition с сохранением rememberSaveable и ViewModel, в крайнем случае рестартит Activity. Полный rebuild нужен только при изменении сигнатур функций, иерархии классов и inline-функций. В v2 также MCP-сервер: AI-агент триггерит reload, снимает скриншот с устройства, итерирует по вариантам. Claude Code и Cursor работают из коробки через file watcher. Поставить: IDE-плагин вручную с бета-канала Marketplace + Gradle-плагин 2.0.0-beta01: [plugins] hotswan-compiler = { id = "com.github.skydoves.compose.hotswan.compiler", version = "2.0.0-beta01" } Инструмент платный инструмент, лицензия и цены на hotswan.dev/pricing. Такого охвата hot reload в нативном Compose ещё не было. Аргумент Flutter про быстрый feedback loop заметно слабеет. #Compose #JetpackCompose #AndroidDev
Compose Broadcast
20.06.2026 08:34 · 👁 5.3K
🐱 Kamera 1.0: стабильная камера для Compose Multiplatform Камера в CMP это всегда возня с expect/actual и тремя платформенными бэкендами. Kamera (бывшая CameraK) закрывает это одним Compose-first слоем: один @Composable-вход, под капотом CameraX на Android, AVFoundation на iOS и JavaCV на Desktop. API реактивный, через состояние. Заводишь rememberCameraKState(), получаешь StateFlow<CameraKState> c ветками Initializing, Ready(controller, uiState) и Error, и рисуешь превью, когда камера готова: val cameraState by rememberCameraKState( config = CameraConfiguration( cameraLens = CameraLens.BACK, aspectRatio = AspectRatio.RATIO_16_9, ), ) when (val state = cameraState) { is CameraKState.Ready -> CameraPreviewView(state.controller) is CameraKState.Initializing -> CircularProgressIndicator() is CameraKState.Error -> Text(state.message) } Из коробки: зум, вспышка, фонарь, переключение линз (ultra-wide/telephoto на iOS), takePictureToFile() для прямого сохранения в файл. Сверху плагины, которые сами активируются на Ready: сохранение фото, QR/штрихкоды, OCR, запись видео с pause/resume и лимитом длительности, анализ кадров через analyzer. Главное в 1.0: починили то, что мешало брать в прод. На iOS фронталка отдавала тёмные кадры из-за бага в MemoryManager, хотя превью выглядело нормально. На Android фото оказывалось кропом вместо настроенного аспекта, теперь что видишь, то и снимаешь. Плюс вычистили утечки корутин в плагинах при ре-ините камеры. ‼️ Это молодая 1.0 и по сути проект одного мейнтейнера под Apache-2.0. Блокеры выше жили буквально до вчера, так что 1.0 это точка, где их закрыли, а не годы шлифовки. Desktop тянет JavaCV с нативными либами, это тяжело. Но если нужна камера в CMP без трёх реализаций руками, смотреть стоит. 🐱 GitHub #Compose #ComposeMultiplatform #KMP
Compose Broadcast
15.06.2026 14:13 · 👁 4.8K
⚙️ Compose Stability Analyzer 0.10.0: Stability Doctor и trace-all skydoves выпустил 0.10.0 с двумя фичами, которые доделывают логику инструмента. 1️⃣ Stability Doctor берёт все сигналы плагина (статику, Cascade, Reality Check, Blame) и выдаёт приоритизированный список: что чинить и в каком порядке. Без девайса — ESTIMATED (только статика), с live heatmap — MEASURED (ложные тревоги уходят вниз в рейтинге). Фиксы применяются двойным кликом с предпросмотром. 2️⃣ trace-all mode. Раньше Doctor получал runtime-данные только по @TraceRecomposition функциям, то есть видел не весь модуль. Trace-all инструментирует всё: composeStabilityAnalyzer { traceAll { enabled.set(true) threshold.set(2) variants.set(listOf("debug")) } } Release-сборки не трогает. Теперь рейтинг Doctor строится по реальным замерам на всём модуле, а не только там, где успел поставить аннотацию. Раньше надо было самому решать что смотреть и куда ставить аннотации. Теперь включаешь trace-all, запускаешь Doctor, получаешь список с конкретными fix'ами. 🔗 doveletter.dev 🐱 GitHub #Compose #Performance
Compose Broadcast
15.06.2026 07:46 · 👁 9K
⚙️ Compose Navigation Graph: вся навигация приложения интерактивной картой прямо в Android Studio 🐱 Плагин от skydoves (Jaewoong Eum). Аннотируешь экраны @NavDestination, @NavEdge, @NavGraphRoot, KSP статически собирает граф, а IDE-плагин рисует карту: каждый экран отрендеренной @Preview-миниатюрой через Layoutlib, без эмулятора. Переходы стрелками, двойной клик прыгает в исходник, граф мёржится по всем модулям. Канвас редактируемый — тянешь связь от экрана к экрану, и плагин сам вписывает @NavEdge в код. Работает с Navigation 3, Navigation 2 и даже голыми Activity. KMP из коробки: аннотации в commonMain, есть сэмпл на KotlinConf-приложении (26 экранов, 36 переходов). Бонусом .nav baseline по аналогии с apiDump/apiCheck: navCheck валит сборку, когда граф разъезжается с закоммиченным базелайном. #Compose #AndroidStudio
Compose Broadcast
04.06.2026 14:59 · 👁 5.7K
⚙️ JetBrains выкатили статью в документации как использовать Liquid Glass эффект из iOS 26 и Compose на iOS. Всё сводится к более точечному встраиванию Compose экранов в iOS Controller и перекладывание навигации на нативные элементы. #Compose #iOS #iOS26 #LiquidGlass
Compose Broadcast
27.05.2026 07:41 · 👁 4.4K
Представлена альфа-версия 0.0.4 проекта адаптации Compose Multiplatform для ОС Аврора Проведена глубокая работа над инструментарием, экосистемой и стабильностью фреймворка, чтобы разработчики могли комфортно создавать мобильные приложения для доверенной операционной системы используя привычный инструментарий — язык программирования Kotlin. Альфа-версия фреймворка Compose Multiplatform опубликована в репозитории mos.hub под открытой лицензией. Каждый желающий имеет возможность внести свой вклад и, тем самым, повлиять на развитие проекта. Главные изменения в альфа-версии 0.0.4 проекта адаптации Compose Multiplatform для ОС Аврора: Инструментарий разработчика • Aurora Build — Gradle-плагин для сборки проектов под ОС Аврора • Aurora Devices — Gradle-плагин для запуска приложений на устройстве и в эмуляторе Расширение возможностей фреймворка • Поддержка системного буфера обмена • Поддержка ресурсов • Поддержка локализации приложений Поддержка новых платформ для разработки • Добавлена поддержка Windows • Добавлена поддержка macOS (частичная) Экосистема и библиотеки • Новая библиотека для работы с D-bus из Kotlin и поддержка популярных библиотек build-konfig, datetime, kamel, kermit, koin, ktor и sqldelight Качество и стабильность • Исправлены проблемы с многопоточностью • Добавлена поддержка Unit и интеграционного тестирования. Все компоненты экосистемы Kotlin для ОС Аврора получают поддержку многоуровневого тестирования в рамках стабилизации Референсные приложения • Опубликовано референсное приложение StudentBox CMP Новая версия уже доступна для разработчиков.Пробуйте прямо сейчас — все примеры и API в документации. Хотите помочь проекту стать лучше? Присоединяйтесь к разработке на mos.hub. Мы открыты к вашему коду и экспертизе. Вместе мы сможем сделать инструмент максимально полезным для всего сообщества. Ссылка на репозиторий #АврораОС @AuroraDevelopers
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.