В этом выпуске отслеживаем утечки памяти в iOS и выносим ViewModel из Compose функций, тестируем производительность Flutter и React Native, определяем кто тратит больше всего денег в приложениях и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/vv/pm/se/vvpmsekoc7zboezrv4_9h1ynejc.png)
iOS
• Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
• Concurrency шаг за шагом — сетевой запрос
• Performance Testing для iOS
• 5 рандомных вопросов на собеседовании iOS разработчика
• Антимат в чате на iOS: как я мешаю пользователям сквернословить
• От Cocoapods к Tuist+SPM быстрыми шагами
• Apple все еще стоит на пути магазина приложений Epic
• На iPhone в ЕС можно будет менять телефон и приложения для обмена сообщениями по умолчанию
• Springboard в iOS падает при вводе четырех символов
• Руководитель App Store покидает свой пост, Apple готовится к организационным изменениям
•
An Initial Hands-On with SwiftCloud
•
Disabling Xcode Asset Symbol Generation
•
Exploring SwiftUI: Creating a Playful Onboarding Screen
•
Understanding the @FetchRequest property wrapper in SwiftUI
•
How to create custom reusable container views in SwiftUI
•
Creating a Swipeable View that is Backward Compatible with iOS 16
•
The Hidden Treasures of Crash Reports
•
Exploring Interactive and Useful Features in Swift 6
•
SwiftUI+MapKit: Maps, Styles, Overlays and Controls
•
Typed throws in Swift
•
SwiftUI App Theme Switcher — iOS 17 & 18
•
SwiftUI Task Modifier Lifecycle Handling
•
MeshGradients in iOS 18 and Xcode 15
•
Floating Tab Bar — iOS 17 & 18
•
Swift MMIO — типобезопасный MMIO
•
STTextView — мощный TextView
Android
• Выносите ViewModel из Compose функций
• Мечтают ли Андроиды о нейропроцессорных модулях? Перенос модели TensorFlow Lite в мобильное приложение
• Фантастические баги: как их ловить и править
• Избегайте неиспользуемых сценариев в многоуровневой архитектуре
• Google закрывает Google Play Security Reward Program
•
Building BookMatch: A Journey into AI-Powered Book Recommendations
•
Replace Useless Cases with Interfaces
•
Nothing is really cool in Kotlin
•
Forbidden Love of Preference and DataStore
•
Understanding Side -effects in Jetpack Compose
•
Quickly Toggle Between Artifactory and Local Android Libraries
•
Boost Developer Efficiency: Automate Android Login Workflows with ADB and Python
•
Designing Effective UIs For Enhancing Compose Previews
•
Guide to Identify and Solve ANR Issues: Uncover the Hidden Culprits
•
Kotlin reified Explained (no more type erasure)
•
Teaching a Composable to jump
•
Learn Kotlin and Android With Dove Letter
•
Kotlin 2.0.20 Released
•
Jetpack Compose: Top 10 mistake we all have made
•
Fragments in Compose
•
How to Show Snackbars From ANY Place In Your Compose App
•
How to Render PDFs on Android in Jetpack Compose •
•
Going fast with Kotlin
•
From Code to Streams
•
a href=«www.youtube.com/watch?v=vRzE6HIz-_M»>Dynamic Exploration of Static Analysis with Compose
•
Applying the Decorator Pattern in Kotlin
•
Reorderable — перетаскивание элементов в Lists и Grids в Jetpack Compose
•
OTP Helper — автоматическое получение кодов из уведомлений
Кроссплатформа
• Flutter против React Native — тест производительности
• Руководство по deep links в Flutter-приложениях
• Валидация форм во Flutter как PRO. Мастер-класс по использованию form_model и BLoC
• Тестирование BLoC
• Почему вам стоит учить/использовать Kotlin Multiplatform
•
Flutter: Module-based Code Coverage Thresholds
•
Flutter: Google Maps Autocomplete SearchBar with Debouncing
•
Flutter clean code and best practices
•
Comprehensive Guide to Testing Riverpod Providers
•
The rollercoaster of releasing an Android, iOS, and macOS app with KMP
•
Using C & native platforms in Kotlin: Building a multi-platform advanced library
•
Mastering Concurrency: End to End Stress Testing with Kotlin Multiplatform
•
React Native MacOS App Tutorial – Book Management System
•
BookMatch — BB рекомендации книг на KMP
Разработка
• Как я сделал успешный побочный проект и возненавидел его
• «По вертикали и по горизонтали»: как перенести бумажные сканворды в онлайн, чтобы решать с друзьями на удаленке
• Гайд: создаем функционального Telegram-бота на Dart
• 11 исследований, кризис и вызовы: всё о технической трансформации «Райффайзен Онлайн»
• VK Education открывает набор на бесплатные образовательные IT-курсы
• Задачи с собеседований: Leetcode — Является ли число палиндромом
• Как делать что угодно очень быстро
• Задача на логику из собеседования в Amazon
• Ozon Tech Community TeamLead Meetup
• Как успевать больше, оставаясь эффективным, и не выгореть
•
Project Management Flow for Indies
•
cAlgorithms we develop software by
•
Exploring Indie Life: Reducing Friction by Analytics
•
Server Driven UI: 6 reasons to not use it
•
How DoorDash Defines Great Engineering Management
Аналитика, маркетинг и монетизация
• Топ быстрорастущих приложений в России в августе
• Кто тратит больше всего денег в приложениях
• Почему CapCut может отказаться от бесплатных пользователей?
• Как удерживать пользователей в мобильных играх
AI, Устройства, IoT
• Как Яндекс создал технологию эмоционального синтеза в Алисе
• Как с помощью ML делать профессиональные подборки лучше редакторов
•
How to get from high school math to cutting-edge ML/AI
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
![](https://habrastorage.org/webt/vv/pm/se/vvpmsekoc7zboezrv4_9h1ynejc.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Отслеживание утечек памяти в iOS-приложении со SwiftUI в Runtime
• Concurrency шаг за шагом — сетевой запрос
• Performance Testing для iOS
• 5 рандомных вопросов на собеседовании iOS разработчика
• Антимат в чате на iOS: как я мешаю пользователям сквернословить
• От Cocoapods к Tuist+SPM быстрыми шагами
• Apple все еще стоит на пути магазина приложений Epic
• На iPhone в ЕС можно будет менять телефон и приложения для обмена сообщениями по умолчанию
• Springboard в iOS падает при вводе четырех символов
• Руководитель App Store покидает свой пост, Apple готовится к организационным изменениям
•
![](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/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)
• Выносите ViewModel из Compose функций
• Мечтают ли Андроиды о нейропроцессорных модулях? Перенос модели TensorFlow Lite в мобильное приложение
• Фантастические баги: как их ловить и править
• Избегайте неиспользуемых сценариев в многоуровневой архитектуре
• Google закрывает Google Play Security Reward Program
•
![](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/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)
• Flutter против React Native — тест производительности
• Руководство по deep links в Flutter-приложениях
• Валидация форм во Flutter как PRO. Мастер-класс по использованию form_model и BLoC
• Тестирование BLoC
• Почему вам стоит учить/использовать Kotlin Multiplatform
•
![](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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как я сделал успешный побочный проект и возненавидел его
• «По вертикали и по горизонтали»: как перенести бумажные сканворды в онлайн, чтобы решать с друзьями на удаленке
• Гайд: создаем функционального Telegram-бота на Dart
• 11 исследований, кризис и вызовы: всё о технической трансформации «Райффайзен Онлайн»
• VK Education открывает набор на бесплатные образовательные IT-курсы
• Задачи с собеседований: Leetcode — Является ли число палиндромом
• Как делать что угодно очень быстро
• Задача на логику из собеседования в Amazon
• Ozon Tech Community TeamLead Meetup
• Как успевать больше, оставаясь эффективным, и не выгореть
•
![](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)
• Топ быстрорастущих приложений в России в августе
• Кто тратит больше всего денег в приложениях
• Почему CapCut может отказаться от бесплатных пользователей?
• Как удерживать пользователей в мобильных играх
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как Яндекс создал технологию эмоционального синтеза в Алисе
• Как с помощью ML делать профессиональные подборки лучше редакторов
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.