В нашем новом дайджесте внедрение SwiftUI в Airbnb, диск на шейдерах и победа фрагментации, невидимые проблемы, советы к собеседованию, $20 млрд на конфетки, приложение с фотопленкой и многое другое!
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/vu/_a/qt/vu_aqt0iwjsd_802wtipb4gmp2u.png)
iOS
• Как Airbnb внедрила SwiftUI в приложение для iOS
• Дебаггинг приложения без Xcode. Зачем?
• CD-диск на шейдерах и NameDrop в iOS 17
• Универсальные датасорсы в iOS-разработке
• Учимся генерировать код из OpenAPI, делать автоверсионирование, разрабатывать мобильные SDK и растить команду без ошибок
• Два по цене одного: snapshot-тесты на основе SwiftUI Preview
• Топ-10 типичных ошибок iOS-разработчика
• Простой пример Внедрения зависимостей в iOS
• Прожарка Tuist
• ЕС требует от Apple открыть всё
• Пакеты параметров типа и значения в Swift с объяснением
• Поваренная книга SwiftUI: добавление текстового представления в SwiftUI
• Разработчик Pixel Pals реализовал игры в виджетах iOS 17
•
Inline Snapshot Testing
•
Considering Mac Catalyst? A word of caution…
•
iOS Navigation Series: The Basics (with SwiftUI examples)
•
Understanding Publishers in SwiftUI and Combine
•
OperationQueue + asynchronous code
•
Demystifying SwiftUI List Responsiveness: Best Practices for Large Datasets
•
Migrating a simple structure from UserDefault to SwiftData
•
A quick guide on networking logs in Swift
•
Expert iOS Interview Questions: A Deep Dive into Advanced Concepts
•
Value and Type parameter packs in Swift explained with examples
•
Adding a Help Menu to a SwiftUI App
•
Mastering charts in SwiftUI. Pie and Donut charts.
•
Verify collections in Swift with sized index sets
•
Decodable CoreData: A Proof-of-Concept for Building Offline-First iOS Apps
•
The Future of Accessing User Location in SwiftUI
•
Create SPM module for MEGA SDK C++ code
•
Utilise Enum to ‘document’ your code
•
Development with CI/CD and GitHub Actions on iOS project
•
SwiftUI Swipe Actions from Scratch
•
Super Power Scroll Views — SwiftUI
•
SwiftUI: Telegram Dark Mode Animation Challenge
•
WatchOS 10 Heart App Animation Using SwiftUI
•
Phase Animations in iOS 17
•
Say Goodbye to Manual Mock Data: Discover the Power of @SampleBuilder!
•
FittedSheets: Bottom Sheet для iOS
•
Swift Testing: библиотека тестирования для Swift
Android
• Как Google победила фрагментацию и возвращает контроль над Android
• На 65% меньше APK и на 70% меньше потребление памяти: как мы оптимизировали приложение для Android
• Возможна ли жизнь после плеймаркета?
• NoArchitecture Kotlin Compose
• Gradle Kotlin DSL: о чем умолчали в документации
• Здоровье вашей Gradle-сборки
• Вопросы с собеседований: что такое this в Kotlin
• Уменьшаем рекомпозиции для изображений в Jetpack Compose
•
Migrating to Jetpack Compose — an interop love story
•
Exploring the Game-changing Updates in Koin 3.5
•
Reduce Recomposition for Images/Icons In Jetpack Compose
•
Painless building of an Android package installer app
•
Mapping Experiences with Google Maps and Jetpack Compose
•
Kotlin Mutex: 5 Use Cases
•
Jetpack Compose: Countdown Timer
•
Leveraging Kotlin Delegation to Simplify ViewModel Collaboration and State Management
•
Protect Kotlin Project Architecture Using Konsist
•
Composing AnnotatedString — Poetry, Music, Code, Blogs, Expandables and Beyond
•
A comprehensive guide to perform effective code reviews for Android developers
•
Line Chart UI with Jetpack Compose: A Simple Guide
•
65% Smaller APKs and 70% Less Memory: How I Optimized My Android App-Part
•
Make a simple “Slide to unlock” in Jetpack Compose
•
Migrate from Kapt to KSP, Kapt will be deprecated soon
•
Best Practices for Compose Navigation in Multi-Module Project
•
A Pragmatic Introduction To Dagger on Android
•
Best Practices in Jetpack Compose for beginners
•
Drawer Navigation using Material 3 in Jetpack Compose
•
Debugging Jetpack Compose (Based on true story! ????????)
•
Android Adventure: Constraint Views with Flow
•
Dependency Management in a Multi-Module Project – THIS Is How You Need to Do It
•
New UI for Android Studio
•
Dependency Management in a Multi-Module Project — THIS Is How You Need to Do It
•
Create a Wear OS watchface
•
How to Use CameraX With Android Jetpack Compose To Implement In-App Photo Capturing
•
Gallery: медиа-галерея на Jetpack Compose
•
ComposeLevitation: эффект левитации для элементов UI
Кроссплатформа
• Restyle как новый стандарт для создания UI в React Native
• jenv — удобный инструмент для управления версиями Java
• Все больше разработчиков приложений выбирают Flutter вместо React Native
•
Using annotations to improve iOS APIs on Kotlin Multiplatform
•
Enhancing Static Analysis in Flutter: Interview with DCM Founder Dmitry Zhifarsky
•
Using annotations to improve iOS APIs on Kotlin Multiplatform
•
Memory Management in Flutter: Best Practices and Pitfalls
•
From Native to React Native to Flutter
•
Thoughts On Flutter 3.13
•
Developing Flutter apps for Large screens
•
Unleashing the Power of CodePush: Publish updates for Flutter Mobile App using Shorebird without new releases on App Store and Play Store
•
Efficient Dart: optimizing CPU-bound load in Flutter without missing a frame
•
Release an iOS app with Flutter in 7 steps
•
A Complete Guide for using Dynamic Island in your next Flutter App
•
Cashew: управление финансами на Flutter
Разработка
• Невидимая проблема текстовых редакторов на смартфонах
• Кто-нибудь, остановите feature creep
• Барометр из детства — прекрасный артефакт. Чего мне не хватает в программах и приложениях
• Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
• Метрика Pure Score
• Советы к собеседованию
• PartyKit реализует многопользовательское взаимодействие в реальном времени для любого приложения
• JetBrains прекратила действие персональных лицензий в России
• Как сделать осознанный UX в эпоху убедительных технологий
•
My solopreneur story: zero to $45K/mo in 2 years
•
How to build intentional UX in an era of persuasive technology
•
7 Habits of Highly Effective Software Engineers
•
Failure Mitigation for Microservices: An Intro to Aperture
•
My thoughts on the WebP exploit
•
Redesigning Swiggy’s new user onboarding — A product design case study
•
Why is it always deploys to prod that go wrong?
•
Battery Consumption in Smartphones
Аналитика, маркетинг и монетизация
• Candy Crush заработала $20 млрд
• Tinder представил подписку за $500
• Индийский PhonePe запустил магазин приложений с нулевым налогом
• В RuStore появились инструменты для сбора и анализа ошибок
• Публичное собеседование на роль продакт-менеджера по монетизации
• Приложение Being составляет карту психологических проблем и помогает с их решением
• Apple подала в Верховный суд просьбу пересмотреть решение в деле против Epic
• Epic Games проводит увольнения
• Spotify запускает Jam — совместный плейлист, управляемый в реальном времени 32 людьми
• $2 млн: TeachMe.To — спортивные тренировки для всех
• Приложение Lapse с «одноразовой фотопленкой» стало №1 в App Store
•
Mastering Customer Segmentation with LLM
AI, Устройства, IoT
• Топ 10 deepnude нейросетей 2023 года
• От желания управлять газовым котлом удалённо до полной автоматизации отопления дома
• Mistral AI открыла свою первую большую языковую модель
• Представлен микрокомпьютер Raspberry Pi 5
• Представлена гарнитура Quest 3
•
A Hackers’ Guide to Language Models
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/vu/_a/qt/vu_aqt0iwjsd_802wtipb4gmp2u.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Как Airbnb внедрила SwiftUI в приложение для iOS
• Дебаггинг приложения без Xcode. Зачем?
• CD-диск на шейдерах и NameDrop в iOS 17
• Универсальные датасорсы в iOS-разработке
• Учимся генерировать код из OpenAPI, делать автоверсионирование, разрабатывать мобильные SDK и растить команду без ошибок
• Два по цене одного: snapshot-тесты на основе SwiftUI Preview
• Топ-10 типичных ошибок iOS-разработчика
• Простой пример Внедрения зависимостей в iOS
• Прожарка Tuist
• ЕС требует от Apple открыть всё
• Пакеты параметров типа и значения в Swift с объяснением
• Поваренная книга SwiftUI: добавление текстового представления в SwiftUI
• Разработчик Pixel Pals реализовал игры в виджетах iOS 17
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Как Google победила фрагментацию и возвращает контроль над Android
• На 65% меньше APK и на 70% меньше потребление памяти: как мы оптимизировали приложение для Android
• Возможна ли жизнь после плеймаркета?
• NoArchitecture Kotlin Compose
• Gradle Kotlin DSL: о чем умолчали в документации
• Здоровье вашей Gradle-сборки
• Вопросы с собеседований: что такое this в Kotlin
• Уменьшаем рекомпозиции для изображений в Jetpack Compose
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Restyle как новый стандарт для создания UI в React Native
• jenv — удобный инструмент для управления версиями Java
• Все больше разработчиков приложений выбирают Flutter вместо React Native
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Невидимая проблема текстовых редакторов на смартфонах
• Кто-нибудь, остановите feature creep
• Барометр из детства — прекрасный артефакт. Чего мне не хватает в программах и приложениях
• Как мы создаём Squadus. Реализуем «прыжок к сообщению» в мобильной версии
• Метрика Pure Score
• Советы к собеседованию
• PartyKit реализует многопользовательское взаимодействие в реальном времени для любого приложения
• JetBrains прекратила действие персональных лицензий в России
• Как сделать осознанный UX в эпоху убедительных технологий
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Candy Crush заработала $20 млрд
• Tinder представил подписку за $500
• Индийский PhonePe запустил магазин приложений с нулевым налогом
• В RuStore появились инструменты для сбора и анализа ошибок
• Публичное собеседование на роль продакт-менеджера по монетизации
• Приложение Being составляет карту психологических проблем и помогает с их решением
• Apple подала в Верховный суд просьбу пересмотреть решение в деле против Epic
• Epic Games проводит увольнения
• Spotify запускает Jam — совместный плейлист, управляемый в реальном времени 32 людьми
• $2 млн: TeachMe.To — спортивные тренировки для всех
• Приложение Lapse с «одноразовой фотопленкой» стало №1 в App Store
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Топ 10 deepnude нейросетей 2023 года
• От желания управлять газовым котлом удалённо до полной автоматизации отопления дома
• Mistral AI открыла свою первую большую языковую модель
• Представлен микрокомпьютер Raspberry Pi 5
• Представлена гарнитура Quest 3
•
![](https://habrastorage.org/webt/gt/u1/ia/gtu1iaz0-ajkbqpeq8n6dmql4zq.png)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.