Redwood вышел в Beta
Redwood – это альтернативная реализация кроссплатформенного UI на базе Compose. В отличие от Compose Multiplatform, который рисует компоненты на канвасе, Redwood рендерится с использованием нативных компонентов на каждой из поддерживаемых платформ.
Работает это следующим образом. Вы описываете все компоненты в виде дата классов. Redwood затем генерирует Jetpack Compose или SwiftUI компоненты на их основе.
Так вот, спустя примерно год после анонса, фреймворк выходит в Beta. Одновременно с этим Square, которые и занимаются его разработкой, планируют зарелизить в прод первые экраны, написанные с его помощью.
Redwood – это альтернативная реализация кроссплатформенного UI на базе Compose. В отличие от Compose Multiplatform, который рисует компоненты на канвасе, Redwood рендерится с использованием нативных компонентов на каждой из поддерживаемых платформ.
Работает это следующим образом. Вы описываете все компоненты в виде дата классов. Redwood затем генерирует Jetpack Compose или SwiftUI компоненты на их основе.
Так вот, спустя примерно год после анонса, фреймворк выходит в Beta. Одновременно с этим Square, которые и занимаются его разработкой, планируют зарелизить в прод первые экраны, написанные с его помощью.
Вышел Kotlin 1.9.0
Релиз состоялся уже на прошлой неделе, но это не повод не рассказать о нем в канале! Из самого важного в этом релизе:
👉Переход К2 компилятора в Beta, что значит, что его уже вполне безопасно можно начинать затаскивать в свои JVM проекты.
👉Новый оператор
👉В KMP поддержали Configuration Cache, который сильно улучшит жизнь авторам библиотек.
👉В Kotlin/Native логика линковки библиотек приблизилась к JVM – например, компиляция теперь не будет падать, если у какой-то из транзитивных зависимостей поменялся экспериментальный API, который не использовался нигде в проекте.
👉Компиляторные опции для Kotlin/JVM теперь можно задавать с помощью нового DSL в билдфайле, в блоке
Релиз состоялся уже на прошлой неделе, но это не повод не рассказать о нем в канале! Из самого важного в этом релизе:
👉Переход К2 компилятора в Beta, что значит, что его уже вполне безопасно можно начинать затаскивать в свои JVM проекты.
👉Новый оператор
..<
, про который я рассказывал на KotlinConf, окончательно стабилизирован и поддержан в stdlib.👉В KMP поддержали Configuration Cache, который сильно улучшит жизнь авторам библиотек.
👉В Kotlin/Native логика линковки библиотек приблизилась к JVM – например, компиляция теперь не будет падать, если у какой-то из транзитивных зависимостей поменялся экспериментальный API, который не использовался нигде в проекте.
👉Компиляторные опции для Kotlin/JVM теперь можно задавать с помощью нового DSL в билдфайле, в блоке
compilerOptions
.The JetBrains Blog
Kotlin 1.9.0 Released | The Kotlin Blog
Kotlin 1.9.0 has been released! Highlights include: Kotlin K2 for JVM is in Beta, other K2 compiler updates, new enum class values function, new operator for open-ended ranges, preview of Gradle configuration cache in Kotlin Multiplatform, changes for Android…
Обновление роадмапа Kotlin
Публичный роадмап Котлина обновляется раз в полгода. В нем подробно расписываются основные планы команды на несколько ближайших релизов. Вот самое интересное из последнего апдейта:
⭐️Можно будет дебажить инлайн функции и классы в Android.
⭐️Kotlin/Wasm планируется переводить в Alpha, а вместе с этим официально поддержать его во всех kotlinx библиотеках.
⭐️Стабильную мультиплатформу все так же планируется выпустить в конце года.
⭐️В Kotlin/Native скоро выйдет первый релиз инкрементальной компиляции, скорость билдов вырастет.
⭐️Улушится поддержка Version Catalogs в gradle.kts.
⭐️Новую библиотеку kotlinx-io продолжат стабилизировать, а заодно будут рисерчить асинхронный API для нее.
Публичный роадмап Котлина обновляется раз в полгода. В нем подробно расписываются основные планы команды на несколько ближайших релизов. Вот самое интересное из последнего апдейта:
⭐️Можно будет дебажить инлайн функции и классы в Android.
⭐️Kotlin/Wasm планируется переводить в Alpha, а вместе с этим официально поддержать его во всех kotlinx библиотеках.
⭐️Стабильную мультиплатформу все так же планируется выпустить в конце года.
⭐️В Kotlin/Native скоро выйдет первый релиз инкрементальной компиляции, скорость билдов вырастет.
⭐️Улушится поддержка Version Catalogs в gradle.kts.
⭐️Новую библиотеку kotlinx-io продолжат стабилизировать, а заодно будут рисерчить асинхронный API для нее.
Как тестируют в 100 компаниях
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
Реаозиторий с подборкой ресурсов о том, как организовано тестирование и CI/CD мобильных приложений в очень разных компаниях. В списке есть Netflix, Reddit, Revolut и Uber.
GitHub
GitHub - testableapple/how-they-automate-on-mobile: A curated collection of publicly available resources on how software companies…
A curated collection of publicly available resources on how software companies implement automation on iOS and Android platforms 📱🚢 - testableapple/how-they-automate-on-mobile
План Coil по поддержке Kotlin Multiplatform
Я уже упоминал, что недавно библиотека Coil получила грант от Kotlin Foundation направленный на поддержку KMP.
Вышел блогпост, где автор раскрывает больше деталей про миграцию. Основная задача переезда – полностью отвязать Coil от Android. Самым большим изменением API будет замена
План – завершить миграцию в течение нескольких месяцев.
Я уже упоминал, что недавно библиотека Coil получила грант от Kotlin Foundation направленный на поддержку KMP.
Вышел блогпост, где автор раскрывает больше деталей про миграцию. Основная задача переезда – полностью отвязать Coil от Android. Самым большим изменением API будет замена
Drawable
на Image
, который абстрагирует детали платформенной реализации изображений.План – завершить миграцию в течение нескольких месяцев.
Cash App Code Blog
Multiplatform image loading: Coil 3.0
Building towards Coil 3.0 with a focus on Compose Multiplatform.
Как измерять время старта приложения
В разговорах об оптимизации времени старта все привыкли рассуждать в терминах холодных/горячих стартов приложения, замерять и оптимизировать их отдельно. При этом для пользователя тип старта вообще не важен — для него скорее важен сценарий, то, каким образом он приложение запускает.
В статье разбирается более холистический подход к измерению времени запуска, и то, на какие конкретно метрики можно завязываться.
В разговорах об оптимизации времени старта все привыкли рассуждать в терминах холодных/горячих стартов приложения, замерять и оптимизировать их отдельно. При этом для пользователя тип старта вообще не важен — для него скорее важен сценарий, то, каким образом он приложение запускает.
В статье разбирается более холистический подход к измерению времени запуска, и то, на какие конкретно метрики можно завязываться.
This media is not supported in your browser
VIEW IN TELEGRAM
Проекты на Compose Multiplatform
Собрал подборку интересных проектов, которые сообщество делает на базе Compose Multiplatform. Если вы еще не добрались его попробовать – может быть, что-то из них вас вдохновит!
📱tivi.app, портированный с Jetpack Compose на мультиплатформу
📱RSS-ридер с топовым дизайном
📱Приложение рецептов с красивыми анимациями
📱Эффект Reflective UI
📱Cupertino-виджеты от сообщества
Собрал подборку интересных проектов, которые сообщество делает на базе Compose Multiplatform. Если вы еще не добрались его попробовать – может быть, что-то из них вас вдохновит!
📱tivi.app, портированный с Jetpack Compose на мультиплатформу
📱RSS-ридер с топовым дизайном
📱Приложение рецептов с красивыми анимациями
📱Эффект Reflective UI
📱Cupertino-виджеты от сообщества
Законы UX
Список из 21 правила, которых стоит придерживаться при разработке интерфейсов. Каждое подкреплено ссылками на исследования.
🏎️Doherty Threshold – Пользователь воспринимает свою производительность оптимальной, если реакция на его действия не превышает 400мс.
🎯Fitt's Law – Время на то, чтобы прицелиться во что-то – функция от размера и удаленности цели.
🤔Jakob's Law – Пользователь проводит большую часть времени в других приложениях, поэтому для него будет идеально, если ваше приложение не будет от них отличаться.
⛰️Peak-End rule – Люди запоминают не весь опыт работы с чем-то, а его самый пиковый момент и самый последний.
Список из 21 правила, которых стоит придерживаться при разработке интерфейсов. Каждое подкреплено ссылками на исследования.
🏎️Doherty Threshold – Пользователь воспринимает свою производительность оптимальной, если реакция на его действия не превышает 400мс.
🎯Fitt's Law – Время на то, чтобы прицелиться во что-то – функция от размера и удаленности цели.
🤔Jakob's Law – Пользователь проводит большую часть времени в других приложениях, поэтому для него будет идеально, если ваше приложение не будет от них отличаться.
⛰️Peak-End rule – Люди запоминают не весь опыт работы с чем-то, а его самый пиковый момент и самый последний.
Laws of UX
Home | Laws of UX
Laws of UX is a collection of best practices that designers can consider when building user interfaces.
Почему рендеринг текста – это сложно
Отличная статья, про то, из каких элементов вообще состоит текст, почему все браузеры и другие графические движки чаще всего рендерят его неправильно, и с какими эзотерическими проблемами можно столкнуться.
Отличная статья, про то, из каких элементов вообще состоит текст, почему все браузеры и другие графические движки чаще всего рендерят его неправильно, и с какими эзотерическими проблемами можно столкнуться.
Faultlore
Text Rendering Hates You - Faultlore
KotlinConf 2024
Открыта покупка билетов на KotlinConf следующего года! Пройдет, как и в 2019 году, в Копенгагене. Приезжайте, если можете, увидимся!
📆Дата: 22-24 мая.
Открыта покупка билетов на KotlinConf следующего года! Пройдет, как и в 2019 году, в Копенгагене. Приезжайте, если можете, увидимся!
📆Дата: 22-24 мая.
Исследование продуктовых дизайнеров
Я периодически провожу исследования различных областей разработки. Например, вот уже много лет подряд я опрашиваю кучу людей, чтобы понять, а что там происходит у айосеров и андроидщиков.
Вот прямо сейчас мы заканчиваем наш первый опрос продуктовых дизайнеров про то, чем они занимаются на работе, какие навыки прокачивают, как используют AI и за кем в сообществе следят. Чтобы результаты были репрезентативными, хочется получить как можно больше ответов. Если в вашей текущей или бывшей команде есть продуктовые дизайнеры – я буду очень благодарен, если вы пошарите им ссылку на опрос! Результаты я потом тоже обязательно в канал выложу.
Я периодически провожу исследования различных областей разработки. Например, вот уже много лет подряд я опрашиваю кучу людей, чтобы понять, а что там происходит у айосеров и андроидщиков.
Вот прямо сейчас мы заканчиваем наш первый опрос продуктовых дизайнеров про то, чем они занимаются на работе, какие навыки прокачивают, как используют AI и за кем в сообществе следят. Чтобы результаты были репрезентативными, хочется получить как можно больше ответов. Если в вашей текущей или бывшей команде есть продуктовые дизайнеры – я буду очень благодарен, если вы пошарите им ссылку на опрос! Результаты я потом тоже обязательно в канал выложу.
survey.alchemer.eu
Исследование рынка продуктовых дизайнеров, 2023
Исследование рынка продуктовых дизайнеров, 2023.
Как писать Swift-friendly API мультиплатформенных библиотек
Одна из проблем, с которыми вы можете столкнуться, затягивая к себе Kotlin Multiplatform – iOS разработчики, которым не нравится получающийся на выходе API. В серии статей разбираются основные решения, которые позволяют сделать API общих модулей выглядящим, как идиоматичный Swift.
Одна из проблем, с которыми вы можете столкнуться, затягивая к себе Kotlin Multiplatform – iOS разработчики, которым не нравится получающийся на выходе API. В серии статей разбираются основные решения, которые позволяют сделать API общих модулей выглядящим, как идиоматичный Swift.
André Oriani
List: Writing Swift-friendly Kotlin Multiplatform APIs | Curated by André Oriani | Medium
10 stories · Series of articles on how to write Kotlin Multiplatform libraries that work well with Swift
Appyx теперь мультиплатформенный
Appyx – библиотека навигации от Bumble с фокусом на простую реализацию кастомных анимированных переходов. Так вот, на прошлой неделе вышла первая альфа версии 2.0. Основная фича новой версии – поддержка Compose Multiplatform. Обязательно потыкайте документацию, все демки там интерактивные и реализованы на Compose!
Appyx – библиотека навигации от Bumble с фокусом на простую реализацию кастомных анимированных переходов. Так вот, на прошлой неделе вышла первая альфа версии 2.0. Основная фича новой версии – поддержка Compose Multiplatform. Обязательно потыкайте документацию, все демки там интерактивные и реализованы на Compose!
bumble-tech.github.io
Appyx
Model-driven navigation + UI components with gesture control for Compose Multiplatform
Как работает Lincheck
Lincheck – фреймворк для тестирования многопоточных алгоритмов на Kotlin. В треде Никита Коваль, его автор, рассказывает о его основных концепциях.
Lincheck – фреймворк для тестирования многопоточных алгоритмов на Kotlin. В треде Никита Коваль, его автор, рассказывает о его основных концепциях.
Обзор всех кешей в Gradle
Леша Быков написал хороший обзор того, как работают различные уровни кеширования в Gradle, в каких случаях на них можно полагаться, и как оптимизировать их работу.
Леша Быков написал хороший обзор того, как работают различные уровни кеширования в Gradle, в каких случаях на них можно полагаться, и как оптимизировать их работу.
Кто адоптит Kotlin Multiplatform
Подборка статей и видео от компаний, которые заадоптили Kotlin Multiplatform, и делятся своим опытом. Из громких названий, которые вы могли пропустить: McDonald's, Google Workspace, Baidu, Deezer, Shopify.
Подборка статей и видео от компаний, которые заадоптили Kotlin Multiplatform, и делятся своим опытом. Из громких названий, которые вы могли пропустить: McDonald's, Google Workspace, Baidu, Deezer, Shopify.
Compose Multiplatform 1.5.0-Beta
Вышла первая публичная версия следующего большого релиза Compose Multiplatform. Из самых крутых фичей:
👉В iOS приложениях физика скролла теперь работает точно так же, как в нативных.
👉В common коде можно создавать диалоги и попапы.
👉На новых Apple девайсах поддерживаются 120 FPS.
👉Шаринг ресурсов с iOS теперь не требует использования CocoaPods.
👉На iOS поддержаны Dynamic Type, корректные инсеты, а шрифт по умолчанию теперь San Francisco.
Вышла первая публичная версия следующего большого релиза Compose Multiplatform. Из самых крутых фичей:
👉В iOS приложениях физика скролла теперь работает точно так же, как в нативных.
👉В common коде можно создавать диалоги и попапы.
👉На новых Apple девайсах поддерживаются 120 FPS.
👉Шаринг ресурсов с iOS теперь не требует использования CocoaPods.
👉На iOS поддержаны Dynamic Type, корректные инсеты, а шрифт по умолчанию теперь San Francisco.
GitHub
Release 1.5.0-beta01 · JetBrains/compose-multiplatform
Common
Features
Dialog API is available to use from common source set
Popup API is available to use from common source set
WindowInsets API is available to use from common source set
A warning if ...
Features
Dialog API is available to use from common source set
Popup API is available to use from common source set
WindowInsets API is available to use from common source set
A warning if ...
Кастомные шрифты в Compose Multiplatform
Кстати, раз мы заговорили про изменение шрифта на San Francisco. Если вы все-таки хотите использовать не системные шрифты, а что-то свое – в статье разобраны все шаги, как завести кастомныю типографику.
Кстати, раз мы заговорили про изменение шрифта на San Francisco. Если вы все-таки хотите использовать не системные шрифты, а что-то свое – в статье разобраны все шаги, как завести кастомныю типографику.
И, конечно, самый важный анонс прошлой недели. Название KMM пора вычеркнуть из своих сердец и памяти, потому что новый рекомендованный способ говорить про мультиплатформу в любых ее проявлениях – Kotlin Multiplatform или KMP.
The JetBrains Blog
Update on the Name of Kotlin Multiplatform | The Kotlin Blog
From now on, “Kotlin Multiplatform” (KMP) is the preferred term when referring to the Kotlin technology for sharing code across different platforms, regardless of the combination of targets being discussed.