Недавно, как вы знаете, был большой скандал со сливом данных кучи пользователей из Яндекс Еды. Самое неприятное, пожалуй, что утекли адреса людей с точностью до квартиры. У меня почти всех друзей затронуло так или иначе (и меня самого тоже).
Сам слив, как говорят, был вызван саботажем изнутри на фоне последних событий. Независимо от того, какую цель преследовал злоумышленник, навредил он этим всем: адепты любой из сторон конфликта смогут воспользоваться данными для нанесения ущерба своим противникам.
Вина самого Яндекса в утечке представляется мне не очень высокой. Не будет же компания проводить в своих рядах идеологическую проверку, а по её результатам увольнять и лишать доступа. Но в статьях с анализом в основном винят Яндекс за сам факт хранения данных. Видел хорошее объяснение на эту тему: штраф за утечку мизерный, а хранение данных бизнесу выгодно, это может принести прибыль в дальнейшем, даже если прямо сейчас данные не нужны. К тому же, чисто технически сложнее сделать так, чтобы правильно понимать, какие данные оставлять, а какие нет, чем просто тупо записывать всё подряд. Так что это вопрос цифр: "дешевле" хранить, чем не хранить.
Другое дело, как это всё используется. Вчера заказал продукты в Лавке, и мне в заказ положили рекламную "симкарту" от Мегафона. Я не знаю, сколько стоит Мегафону одна такая реклама, возможно, очень дёшево, и поэтому за ней никак не следят. Ведь Лавке совершенно точно известно, что я и так являюсь клиентом Мегафона. Они буквально только что доставили мне этот самый заказ по моему аккаунту, где указан мегафоновский номер.
#life
HotSwan - быстрое обновление Composable на реальном устройстве. Доступно как плагин для Android Studio
Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище.
#Compose
⚙️ Нашел сайт с демонстрацией того как происходит рекомпозиция с примером хороших и плохих практик
Как была сделана реализация написали в статье, а исходники есть на GitHub
#compose
⚙️ Нужно ли проставлять аннотации @Stable и @Immutable сразу при написании кода? 🤔 Мой ответ — НЕТ!
Не стоит заниматься преждевременной оптимизацией. Пишите UI без оглядки на аннотации стабильности, а затем используйте инструменты анализа, чтобы определить, где действительно возникают лишние рекомпозиции и есть смысл оптимизировать типы.
Как анализировать рекомпозиции и пропуски?
👉 Используйте Layout Inspector в Android Studio (подробнее — в этом посте)
👉 Включайте отслеживание работы composable-функций в System Trace
👉 Можно воспользоваться библиотекой Compose Investigator, чтобы получать детальные логи по рекомпозициям
‼️Важный нюанс:
Если вы используете типы из внешних библиотек или из модулей, где не подключён Compose Compiler, такие типы всегда считаются Unstable. Это может приводить к лишним рекомпозициям.
🚀Strong Skipping Mode действительно упростил жизнь разработчикам, но старайтесь передавать в параметры Сomposable-функций только Stable или Immutable типы. Это позволит максимально эффективно использовать skipping и сделать UI более производительным.
#compose
Вышел Coil 3.2.0
Что нового
⬆️ Обновление Kotlin, Compose, Okio, Skiko, Coroutines и др зависимостей до актуальных версий
🛠 Исправление багов
👉 Compose артефакты требуют Java 11 и выше из-за перехода на Compose 1.8.0
#compose
⚙️Вышел Jetpack Compose 1.10.0
👉 Стабильное API Shared Transition
👉 Оптимизированный скролл
👉 Новые подходы к сохранению данных при пересоздании Activity через ViewModel
🚀 Повышена производительность UI на Compose
🛠 Исправлено багов и шероховатостей
Изменений действительно много — в один пост всё не поместить.
Буду разбирать ключевые обновления по отдельности в следующих публикациях на @compose_broadcast✨
#compose#android
🤖 Как использовать Compose, чтобы сделать анимированный Splash Screen
Разработчик создал библиотеку androidx-splashscreen-compose (не от Google решение), которая позволяет делать красивую анимацию как на анимашке.
Подробный разбор и реализация есть в статье (EN,6м, альт. ссылка) или 🐱исходниках на GitHub
#android#compose
⚙️Вышел Jetpack Compose 1.9 Stable (августа 2025)
Главные новинки:
👉 Тени нового поколения — dropShadow() и innerShadow() дают больше контроля, чем классический shadow().
👉 LazyLayout — новый API предзагрузки и кэширования элементов для более плавного скролла.
👉 2D-прокрутка — Scrollable2D для таблиц, карт и больших изображений.
👉 Расширенный stack trace — имена composable и их позиции для отладки в stacktrace (только в debug).
👉 Новые аннотации — @RememberInComposition, @FrequentlyChangingValue и перенос @Stable в отдельный модуль.
Подробнее буду рассказывать в @compose_broadcast. Подписывайтесь!
#compose#android
📹Mastering text input in Compose (EN, 18м)
Google выпустили шикарное видео, где показали лучшие практики работы с текстовыми полями в Compose — с примерами, API и лайфхаками.
В ролике разработчики на примере рассказывают:
👉 как использовать state-based TextField — новый подход к управлению вводом;
👉 зачем нужен SecureTextField и как задать требования к паролю;
👉 как работает Autofill API (да, теперь можно сохранять логины и OTP);
👉 как кастомизировать поле ввода OTP с помощью BasicTextField и decorator;
👉 как принимать GIF и изображения через drag & drop с новым contentReceiver;
👉 как использовать input/output трансформации для автоподстановки скобок и тире в номерах;
#android#compose
⚙️ Вышел Jetpack Compose 1.8.0
Все новинки расскажу отдельными постами в @compose_broadcast, а именно:
👉 Autofill
👉 ресайзинг текста под контейне
👉 новое API для отслеживания Composable на экране
👉 анминирование границ Composable
👉 стабилизация API (убрали экспериментальные аннотации)
👉 ContextualFlowRow и ContextualFlowColumn теперь deprecated, им на замену используйте FlowRow и FlowColumn
👉 диалоги теперь учитывают режим экрана edge-to-edge
👉 упростили тестирование ClickableText
👉 появилась возможность кастомизации overscroll
Свежий BOM для новых версий
implementation(platform("androidx.compose:compose-bom:2025.04.01"))
#compose#android
⚙️Как работать с Custom Layout в Jetpack Compose (21м)
В этой статье вы найдете:
👉 как работают layout-ы в Compose;
👉 изменение layout-а отдельного компонента;
👉 создание кастомных Layout и LazyLayout;
👉 отложенную композицию.
Всё это на примерах, в том числе из дизайн-системы Авито.
#compose#android