В нашем новом дайджесте много всего интересного — метаморфозы архитектуры и анимации, разработка в Канаде и принципы хорошего UX, простые метрики качества, симулятор города в облаке, лучшие приложения и игры для Android и iOS и многое, многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS
• Метаморфоза архитектуры: от SOA до микрофичей
• Нативная навигация в SwiftUI до iOS16: опыт в проде
• Как мы централизованно управляем UITabBar в нашем iOS-приложении
• Bottom sheet: Navigation
• Как мы справляемся с большим размером кодовой базы в наших iOS-проектах
• Советы по отладке при работе над проектами Swift
• Разработка приложений с помощью Симулятора Аксессуаров HomeKit
• Редактируйте виджеты экрана блокировки когда устройство заблокировано
• Делегаты в Swift на простом примере
• Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени
• Обзор новых API навигации в SwiftUI
• Управление загрузками в Xcode
• Правила работы с MainActor
• Улучшенные API навигации SwiftUI
• Малоизвестные возможности расширения VS Code Swift
• Создание пользовательского (индивидуального) макета в SwiftUI. Основы
• Apple ускоряет разработку гарнитуры смешанной реальности
• SwiftUI в масштабе
• Using complex gestures in a SwiftUI ScrollView
Using complex gestures in a SwiftUI ScrollView
• Better SwiftUI navigation APIs
Better SwiftUI navigation APIs
• Developing Apps with the HomeKit Accessory Simulator
Developing Apps with the HomeKit Accessory Simulator
• CoreData With SwiftUI
CoreData With SwiftUI
• How to Pause and Resume Animation in SwiftUI (with chaining)
How to Pause and Resume Animation in SwiftUI (with chaining)
• Dependency Graph Hell (iOS)
Dependency Graph Hell (iOS)
• SwiftUI is convenient, but slow
SwiftUI is convenient, but slow
• Disclosure Group in SwiftUI
Disclosure Group in SwiftUI
• The iOS 16 Design Guidelines: An Illustrated Guide
The iOS 16 Design Guidelines: An Illustrated Guide
• Data Structures & Algorithms in Swift: Queue
Data Structures & Algorithms in Swift: Queue
• Delete Multiple Rows from List in SwiftUI
Delete Multiple Rows from List in SwiftUI
• Reorder items with Drag and Drop using SwiftUI
Reorder items with Drag and Drop using SwiftUI
• iOS — Dynamic text sizes done right
iOS — Dynamic text sizes done right
• Sheets in SwiftUI explained with code examples
Sheets in SwiftUI explained with code examples
• Redact Lock Screen Widgets when the device is locked
Redact Lock Screen Widgets when the device is locked
• Requesting App Store Ratings with SwiftUI
Requesting App Store Ratings with SwiftUI
• Morphing Nodes Under SceneKit
Morphing Nodes Under SceneKit
• Constraints in SceneKit — Exploring Advanced Camera Controls
Constraints in SceneKit — Exploring Advanced Camera Controls
• Animated Background in SwiftUI
Animated Background in SwiftUI
• •
 •  Loading 3D Model from Firebase
Loading 3D Model from Firebase
• TextEditor in SwiftUI
TextEditor in SwiftUI
• Use Firestore and Firebase Realtime Database with Combine
Use Firestore and Firebase Realtime Database with Combine
• @dynamicCallable in Swift explained with code examples
@dynamicCallable in Swift explained with code examples
• Never keyword in Swift: return type explained with code examples
Never keyword in Swift: return type explained with code examples
• Core ML Stable Diffusion: Stable Diffusion на Core ML и Apple Silicon
Core ML Stable Diffusion: Stable Diffusion на Core ML и Apple Silicon
• Bauly: уведомления в стиле iOS
Bauly: уведомления в стиле iOS
• AirTroller: флуд AirDrop
AirTroller: флуд AirDrop
 Android
Android
• Анимации в Compose
• IT за рубежом. Как устроена Android разработка в Канаде
• Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
• Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента
• Сколько стоит kapt в многомодульном проекте
• Сертификаты производителей Android-устройств использовались во вредоносном ПО
• Network Calls in Lint: Best Practices
Network Calls in Lint: Best Practices
• Unfold your UI
Unfold your UI
• Per-App Language Preferences
Per-App Language Preferences
• Making Jellyfish move in Compose
Making Jellyfish move in Compose
• 3 Key Advantages Why Experienced Developers Choose Bazel over Gradle
3 Key Advantages Why Experienced Developers Choose Bazel over Gradle
• A few Kotlin constructs
A few Kotlin constructs
• Building Chat App with BLE and Jetpack Compose
Building Chat App with BLE and Jetpack Compose
• Building Scalable Android Apps
Building Scalable Android Apps
• Basic Android Compose — Dynamic Lazy Column
Basic Android Compose — Dynamic Lazy Column
• Creating Instagram Story View in Android
Creating Instagram Story View in Android
• Large Screens & Foldables Tutorial for Android
Large Screens & Foldables Tutorial for Android
• Android 13 Photo Picker With The Activity Result API
Android 13 Photo Picker With The Activity Result API
• New framework from Slack — Circuit
New framework from Slack — Circuit
• Kotlin Abstraction
Kotlin Abstraction
• Jetpack Compose: Navigation with parcelable arguments
Jetpack Compose: Navigation with parcelable arguments
• Background restrictions in Android
Background restrictions in Android
• Unit test — Kotlin functions(with listeners, lambda) with Mockk
Unit test — Kotlin functions(with listeners, lambda) with Mockk
• Navigating With Parcelable Arguments in Jetpack Compose
Navigating With Parcelable Arguments in Jetpack Compose
• Jetpack Compose — When should I use derivedStateOf?
Jetpack Compose — When should I use derivedStateOf?
• RenderNode for Bigger, Better Blurs
RenderNode for Bigger, Better Blurs
• Paparazzi: показ экранов Android-приложения без устройства или эмулятора
Paparazzi: показ экранов Android-приложения без устройства или эмулятора
• Camposer: камера для Jetpack Compose
Camposer: камера для Jetpack Compose
 Кроссплатформа
Кроссплатформа
• Заполнить виджет градиентом, изображением или гифкой с помощью ShaderMask
• Настройка Push Notifications на React Native & Expo Go
• Facilitate app updates with Flutter upgrader
Facilitate app updates with Flutter upgrader
• Maintaining the Flutter app state with a different approach
Maintaining the Flutter app state with a different approach
• Auto-Read SMS with runtime permission — Flutter (Android)
Auto-Read SMS with runtime permission — Flutter (Android)
• How to Hack & Protect Flutter Apps
How to Hack & Protect Flutter Apps
• Bye React Native, Hello Native
Bye React Native, Hello Native
• Flutter Application from nothing to production
Flutter Application from nothing to production
• Flutter Native Ads
Flutter Native Ads
• Passing variables from Dart to Kotlin and from Kotlin to Dart
Passing variables from Dart to Kotlin and from Kotlin to Dart
• Switch Between Dark Theme And Light Theme Mode In React Native & Expo Apps
Switch Between Dark Theme And Light Theme Mode In React Native & Expo Apps
 Разработка
Разработка
• Как разрабатывать UI, пока вы разрабатываете ПО
• Как приложения заботятся о своих пользователях. Основные принципы хорошего UX
• Простые метрики по качеству: как их вести и зачем они нужны
• Основные трудности и ошибки при разработке дизайн-системы
• Как провести эффективное тестирование мобильных приложений? Стратегия пятиуровневой пирамиды тестов
• Работа тестировщика (не) сказка? Разбираем зоны ответственности QA-экспертов в командах без СМС и регистрации
• Как мы собрали решение для пассажиров: транспортный процессинг и вот это вот все
• Podlodka #296: 1С
• RealityScan от Epic превращает реальные объекты в 3D модели
• Разработка собственной библиотеки
• UI-kit для мобильных приложений
• AWS SimSpace Weaver создает симулятор города в облаке
• VK запускает новый VK Cup с призовым фондом 4 миллиона рублей
• Этот простой вопрос заставил меня нанять пару Junior-программистов
• Strategies I Use to Interview Candidates for Software Developer Positions
Strategies I Use to Interview Candidates for Software Developer Positions
• 9 VSCode Extensions You Definitely Need as a Developer
9 VSCode Extensions You Definitely Need as a Developer
• Top Backend Frameworks for Mobile App Development in 2023
Top Backend Frameworks for Mobile App Development in 2023
• Experimenting with Push Notifications for User Retention: Tested on a Million-Strong Audience
Experimenting with Push Notifications for User Retention: Tested on a Million-Strong Audience
• Top 3 SVG Animation Techniques
Top 3 SVG Animation Techniques
• What designers can learn from Apple’s new accessibility features
What designers can learn from Apple’s new accessibility features
• Sticking to UI/UX trends is a losing strategy
Sticking to UI/UX trends is a losing strategy
• Software disenchantment
Software disenchantment
• Why Your Team Needs a Weekly Metrics Review
Why Your Team Needs a Weekly Metrics Review
• Designing better developer interfaces (DI)
Designing better developer interfaces (DI)
• 2022 World Cup Simulator Using Data Science, with Python
2022 World Cup Simulator Using Data Science, with Python
• Down the wrong path: the disaster of the latest Duolingo UI update
Down the wrong path: the disaster of the latest Duolingo UI update
• Awesome CTO: быть CTO стартапа
Awesome CTO: быть CTO стартапа
 Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация
• Удержание и возвраты 2022 — отчет AppsFlyer
• Яндекс монетизирует приложения в Huawei AppGallery и Xiaomi GetApps
• Цвет 2023 года — Viva Magenta
• Лучшие приложения и игры для Android 2022 по мнению Google Play
• Лучшие приложения для iPhone и iPad в App Store Awards 2022
• Маркетологи в мобайле: Анна Ямбирт (TenChat)
• В Великобритании подан иск против Google на $16.3 млрд
• Переворот на мировых рынках мобильных игр — рост во всех регионах в 3 квартале
• Nufa: идеальное тело в один клик
• Большинство приложений не соответствуют требованиям GDPR
 AI, Устройства, IoT
AI, Устройства, IoT
• Автоматизируем умный коттедж: куда потратить миллионы?
• Как подключить свой умный дом на базе Home Assistant к Марусе и управлять им голосом
• Информационная безопасность в IoT
• Alexa с помощью ИИ создает истории для детей
• Google впервые лицензировал свою ИИ-систему диагностики рака
• OpenAI создал бота для Minecraft на основе 70,000 часов видео
? Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS• Метаморфоза архитектуры: от SOA до микрофичей
• Нативная навигация в SwiftUI до iOS16: опыт в проде
• Как мы централизованно управляем UITabBar в нашем iOS-приложении
• Bottom sheet: Navigation
• Как мы справляемся с большим размером кодовой базы в наших iOS-проектах
• Советы по отладке при работе над проектами Swift
• Разработка приложений с помощью Симулятора Аксессуаров HomeKit
• Редактируйте виджеты экрана блокировки когда устройство заблокировано
• Делегаты в Swift на простом примере
• Зональная Диаграмма со слоем затемнения вплоть до текущего момента времени
• Обзор новых API навигации в SwiftUI
• Управление загрузками в Xcode
• Правила работы с MainActor
• Улучшенные API навигации SwiftUI
• Малоизвестные возможности расширения VS Code Swift
• Создание пользовательского (индивидуального) макета в SwiftUI. Основы
• Apple ускоряет разработку гарнитуры смешанной реальности
• SwiftUI в масштабе
•
 Using complex gestures in a SwiftUI ScrollView
Using complex gestures in a SwiftUI ScrollView•
 Better SwiftUI navigation APIs
Better SwiftUI navigation APIs•
 Developing Apps with the HomeKit Accessory Simulator
Developing Apps with the HomeKit Accessory Simulator•
 CoreData With SwiftUI
CoreData With SwiftUI•
 How to Pause and Resume Animation in SwiftUI (with chaining)
How to Pause and Resume Animation in SwiftUI (with chaining)•
 Dependency Graph Hell (iOS)
Dependency Graph Hell (iOS)•
 SwiftUI is convenient, but slow
SwiftUI is convenient, but slow•
 Disclosure Group in SwiftUI
Disclosure Group in SwiftUI•
 The iOS 16 Design Guidelines: An Illustrated Guide
The iOS 16 Design Guidelines: An Illustrated Guide•
 Data Structures & Algorithms in Swift: Queue
Data Structures & Algorithms in Swift: Queue•
 Delete Multiple Rows from List in SwiftUI
Delete Multiple Rows from List in SwiftUI•
 Reorder items with Drag and Drop using SwiftUI
Reorder items with Drag and Drop using SwiftUI•
 iOS — Dynamic text sizes done right
iOS — Dynamic text sizes done right•
 Sheets in SwiftUI explained with code examples
Sheets in SwiftUI explained with code examples•
 Redact Lock Screen Widgets when the device is locked
Redact Lock Screen Widgets when the device is locked•
 Requesting App Store Ratings with SwiftUI
Requesting App Store Ratings with SwiftUI•
 Morphing Nodes Under SceneKit
Morphing Nodes Under SceneKit•
 Constraints in SceneKit — Exploring Advanced Camera Controls
Constraints in SceneKit — Exploring Advanced Camera Controls•
 Animated Background in SwiftUI
Animated Background in SwiftUI•
 •
 •  Loading 3D Model from Firebase
Loading 3D Model from Firebase•
 TextEditor in SwiftUI
TextEditor in SwiftUI•
 Use Firestore and Firebase Realtime Database with Combine
Use Firestore and Firebase Realtime Database with Combine•
 @dynamicCallable in Swift explained with code examples
@dynamicCallable in Swift explained with code examples•
 Never keyword in Swift: return type explained with code examples
Never keyword in Swift: return type explained with code examples•
 Core ML Stable Diffusion: Stable Diffusion на Core ML и Apple Silicon
Core ML Stable Diffusion: Stable Diffusion на Core ML и Apple Silicon•
 Bauly: уведомления в стиле iOS
Bauly: уведомления в стиле iOS•
 AirTroller: флуд AirDrop
AirTroller: флуд AirDrop Android
Android• Анимации в Compose
• IT за рубежом. Как устроена Android разработка в Канаде
• Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose
• Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента
• Сколько стоит kapt в многомодульном проекте
• Сертификаты производителей Android-устройств использовались во вредоносном ПО
•
 Network Calls in Lint: Best Practices
Network Calls in Lint: Best Practices•
 Unfold your UI
Unfold your UI•
 Per-App Language Preferences
Per-App Language Preferences•
 Making Jellyfish move in Compose
Making Jellyfish move in Compose•
 3 Key Advantages Why Experienced Developers Choose Bazel over Gradle
3 Key Advantages Why Experienced Developers Choose Bazel over Gradle•
 A few Kotlin constructs
A few Kotlin constructs•
 Building Chat App with BLE and Jetpack Compose
Building Chat App with BLE and Jetpack Compose•
 Building Scalable Android Apps
Building Scalable Android Apps•
 Basic Android Compose — Dynamic Lazy Column
Basic Android Compose — Dynamic Lazy Column•
 Creating Instagram Story View in Android
Creating Instagram Story View in Android•
 Large Screens & Foldables Tutorial for Android
Large Screens & Foldables Tutorial for Android•
 Android 13 Photo Picker With The Activity Result API
Android 13 Photo Picker With The Activity Result API•
 New framework from Slack — Circuit
New framework from Slack — Circuit•
 Kotlin Abstraction
Kotlin Abstraction•
 Jetpack Compose: Navigation with parcelable arguments
Jetpack Compose: Navigation with parcelable arguments•
 Background restrictions in Android
Background restrictions in Android•
 Unit test — Kotlin functions(with listeners, lambda) with Mockk
Unit test — Kotlin functions(with listeners, lambda) with Mockk•
 Navigating With Parcelable Arguments in Jetpack Compose
Navigating With Parcelable Arguments in Jetpack Compose•
 Jetpack Compose — When should I use derivedStateOf?
Jetpack Compose — When should I use derivedStateOf?•
 RenderNode for Bigger, Better Blurs
RenderNode for Bigger, Better Blurs•
 Paparazzi: показ экранов Android-приложения без устройства или эмулятора
Paparazzi: показ экранов Android-приложения без устройства или эмулятора•
 Camposer: камера для Jetpack Compose
Camposer: камера для Jetpack Compose Кроссплатформа
Кроссплатформа• Заполнить виджет градиентом, изображением или гифкой с помощью ShaderMask
• Настройка Push Notifications на React Native & Expo Go
•
 Facilitate app updates with Flutter upgrader
Facilitate app updates with Flutter upgrader•
 Maintaining the Flutter app state with a different approach
Maintaining the Flutter app state with a different approach•
 Auto-Read SMS with runtime permission — Flutter (Android)
Auto-Read SMS with runtime permission — Flutter (Android)•
 How to Hack & Protect Flutter Apps
How to Hack & Protect Flutter Apps•
 Bye React Native, Hello Native
Bye React Native, Hello Native•
 Flutter Application from nothing to production
Flutter Application from nothing to production•
 Flutter Native Ads
Flutter Native Ads•
 Passing variables from Dart to Kotlin and from Kotlin to Dart
Passing variables from Dart to Kotlin and from Kotlin to Dart•
 Switch Between Dark Theme And Light Theme Mode In React Native & Expo Apps
Switch Between Dark Theme And Light Theme Mode In React Native & Expo Apps Разработка
Разработка• Как разрабатывать UI, пока вы разрабатываете ПО
• Как приложения заботятся о своих пользователях. Основные принципы хорошего UX
• Простые метрики по качеству: как их вести и зачем они нужны
• Основные трудности и ошибки при разработке дизайн-системы
• Как провести эффективное тестирование мобильных приложений? Стратегия пятиуровневой пирамиды тестов
• Работа тестировщика (не) сказка? Разбираем зоны ответственности QA-экспертов в командах без СМС и регистрации
• Как мы собрали решение для пассажиров: транспортный процессинг и вот это вот все
• Podlodka #296: 1С
• RealityScan от Epic превращает реальные объекты в 3D модели
• Разработка собственной библиотеки
• UI-kit для мобильных приложений
• AWS SimSpace Weaver создает симулятор города в облаке
• VK запускает новый VK Cup с призовым фондом 4 миллиона рублей
• Этот простой вопрос заставил меня нанять пару Junior-программистов
•
 Strategies I Use to Interview Candidates for Software Developer Positions
Strategies I Use to Interview Candidates for Software Developer Positions•
 9 VSCode Extensions You Definitely Need as a Developer
9 VSCode Extensions You Definitely Need as a Developer•
 Top Backend Frameworks for Mobile App Development in 2023
Top Backend Frameworks for Mobile App Development in 2023•
 Experimenting with Push Notifications for User Retention: Tested on a Million-Strong Audience
Experimenting with Push Notifications for User Retention: Tested on a Million-Strong Audience•
 Top 3 SVG Animation Techniques
Top 3 SVG Animation Techniques•
 What designers can learn from Apple’s new accessibility features
What designers can learn from Apple’s new accessibility features•
 Sticking to UI/UX trends is a losing strategy
Sticking to UI/UX trends is a losing strategy•
 Software disenchantment
Software disenchantment•
 Why Your Team Needs a Weekly Metrics Review
Why Your Team Needs a Weekly Metrics Review•
 Designing better developer interfaces (DI)
Designing better developer interfaces (DI)•
 2022 World Cup Simulator Using Data Science, with Python
2022 World Cup Simulator Using Data Science, with Python•
 Down the wrong path: the disaster of the latest Duolingo UI update
Down the wrong path: the disaster of the latest Duolingo UI update•
 Awesome CTO: быть CTO стартапа
Awesome CTO: быть CTO стартапа Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация• Удержание и возвраты 2022 — отчет AppsFlyer
• Яндекс монетизирует приложения в Huawei AppGallery и Xiaomi GetApps
• Цвет 2023 года — Viva Magenta
• Лучшие приложения и игры для Android 2022 по мнению Google Play
• Лучшие приложения для iPhone и iPad в App Store Awards 2022
• Маркетологи в мобайле: Анна Ямбирт (TenChat)
• В Великобритании подан иск против Google на $16.3 млрд
• Переворот на мировых рынках мобильных игр — рост во всех регионах в 3 квартале
• Nufa: идеальное тело в один клик
• Большинство приложений не соответствуют требованиям GDPR
 AI, Устройства, IoT
AI, Устройства, IoT• Автоматизируем умный коттедж: куда потратить миллионы?
• Как подключить свой умный дом на базе Home Assistant к Марусе и управлять им голосом
• Информационная безопасность в IoT
• Alexa с помощью ИИ создает истории для детей
• Google впервые лицензировал свою ИИ-систему диагностики рака
• OpenAI создал бота для Minecraft на основе 70,000 часов видео
? Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          