В новом выпуске полезные инструменты и модуляризация приложений, производительность, ориентированная на пользователей, и почти ручной DI, новый шрифт Office, блокчейн в Google Play, промпт-инжиниринг в масштабе и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/r4/ep/ok/r4epokcjtcgclvxulkrmgx3bm9q.jpeg)
iOS
• Используем атрибут @backDeployed для расширения доступности функций
• Полезные iOS-инструменты для дебаггинга
• Что делать iOS-разработчикам в России?
• Модульное тестирование в iOS: всё, что надо знать. Часть 2 + Часть 1
•
SwiftUI Repeatable Button
•
SwiftUI 5: What’s New In ScrollView
•
Build A To Do List App using SwiftData (Swift Data Tutorials)
•
Becoming an “iOS-lite” developer
•
Build a Live Activity Realtime Polls App with Firebase & APNS Push Token
•
SwiftUI Data Flow with the new Observation
•
SwiftUI Search Bar — How to work with searchable in your iOS and macOS apps
•
SwiftData Suprises
•
Advanced Animation in SwiftUI under iOS17
•
How to use String Catalogs for pluralization in Swift
•
RadialGradient in SwiftUI
•
iOS: UI Testing Strategy and Tooling at Reddit
•
Build A To Do List App using SwiftData
•
Dependency Injection Demystified
•
Creating a Circle Loader Animation in SwiftUI
•
How to Use Material Nodes in Reality Composer Pro’s Shader Graph
•
A few Xcode debugging tips
•
Unidirectional flow in Swift
•
Floating Action Button in SwiftUI
•
Mastering SSL Pinning in Swift: No Third-Party Libraries Required
•
Protocol Oriented Programming: Prioritizing Flexibility and Reusability
•
Learn how to unleash the Power of Automatic Grammar Agreement in Swift
•
Find unused code in Swift
•
Implementing Dark Mode and using CGColor
•
Backend Driven Development for iOS Developers
•
SwiftUI 5: What’s New In ScrollView
•
iOS Architecture Essentials: Choosing Between Closures and Protocols
•
The Ultimate Guide to Building Scalable SwiftUI Apps: Master the Art of Modular Architecture
•
Swift HTTP Types: работа с HTTP-запросами в Swift
•
Queryable: ML-поиск фотографий на iOS
•
ScrollViewLoader: бесконечный список для SwiftUI
Android
• Модуляризация мобильных приложений в масштабе
• Производительность мобильных приложений, ориентированная на пользователей
• Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах
• Делаем эмулятор Android через Terminal: пошаговое руководство
• Как избежать хаоса: навигация как отдельный логический уровень
• От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)
• Храним краску с умом: как организовать ресурсы в многомодульном проекте
• Ручной DI на Котлине? Легко! Ну, почти…
• Google Play разрешает NFT
• Вышел Android 14 Beta 4
•
Now in Android: 86 — Google Play at I/O, Pixel Fold and Tablet, Google Developer Expert
•
WorkManager — Android Basics 2023
•
Blast Off: Managing Hundreds of UI Updates for an Emoji Cannon
•
A Guide to Filament for Android
•
Eliminating coroutine races
•
No Mocks Allowed
•
Learn rememberCoroutineScope — Mastering Side Effects
•
Getting Started With SQLDelight in Android Development
•
Boost your Android Developer Workflow with Chat-GPT!
•
Demystifying Kotlin’s Channel Flows
•
10 Questions and Answers about ViewModels in Android
•
Unlocking the Art: A Guide to Generating Code with Kotlin Symbol Processor
•
Implementing in-app subscriptions and products using Jetpack Compose
•
WhatsApp Home Screen Design in Jetpack Compose
•
Cracking the Kotlin Interview
•
Android Custom Tab Material Layout With Dynamic Padding
•
Mastering Kotlin: The Ultimate Guide to Becoming a Productivity Ninja
•
How we improved our Android apps performance by up to 24%
•
Android unit testing at Zenjob
•
How to create a chatbot with Firebase Firestore and ChatGPT on Android
•
Android App Optimization: Strategies for Performance and Battery Efficiency
•
Deep Dive Into Android OS Fundamentals
•
My Takeaways From The Droidcon Berlin 2023
•
InnerTune: плеер музыки для YouTube в Material 3
Кроссплатформа
• The State of Kotlin Multiplatform
• Использование Provider, Riverpod, Bloc(Cubit), Redux, MobX на одном простом примере
• Как собрать iOS-фреймворк из исходных файлов на Kotlin
•
Kotlin Multiplatform in Production
•
MVI Compose Multiplatform Contacts List App With Photos (iOS & Android)
•
A New React Native Development Approach – Part 2: The “How?”
•
Jetpack Compose Multiplatform Android & iOS
•
Flutter for Web Development: Building Responsive and Feature-Rich Web Apps
•
How the GetIt service locator package works in Dart
•
How To Manage State In Your Flutter App With State Groups
•
Redwood: мультиплатформенный реактивный UI для Android, iOS и веб
Разработка
• Как остановить бесконечный скроллинг, и нужно ли это делать
• Анализ приложений Threads
• Моя история: разработчик в 16
• Простыми словами о базовых принципах SRE
• Чем отличается тестирование на эмуляторах, фермах и физических устройствах
• Игры, в которые играют люди на собеседованиях
• Podlodka #324: холакратия — самоорганизующиеся команды
• 42% программистов не перерабатывают
• Evernote увольняет всех американских сотрудников и переезжает в Европу
• Как дизайнер запустил продукт и не нашел product market fit
• В Microsoft Office будет новый шрифт по умолчанию
•
Super app evolution: Building a platform-based ecosystem for holistic user experience
•
This Happens? You’re Too Old To Be a Programmer
•
Developers Need To Enjoy The Struggle
•
Invisible Details of Interaction Design
•
The 8 Must-Have Productivity Apps for Programmers in 2023
•
Confirmed: Code Coverage Is a Useless Management Metric
•
Mastering Design Patterns: A Guide to Writing Cleaner Code
•
27 Must-Read Software Development Books for 2023
Аналитика, маркетинг и монетизация
• Раскрытие потенциала SKAN 4: оптимизация кампаний и подготовка к развитию в будущем
• Расходы на рекламу приложений достигнут $94.9 млрд в 2025
• Решаем шахматные задачи с Chess Puzzles Set: разбор приложения
• Верификация пользователей принесла Instagram более $15 млн
• Самые скачиваемые приложения в июне 2023
• Кейс «Хлебная Усадьба»: разработка собственного мобильного приложения для сетевой пекарни
• Новый опрос Developer Nation
• Локализация игр при помощи ChatGPT — недорого и качественно. Гайд
• Как создать популярную игру в Google Play
AI, Устройства, IoT
• Нейронные сети врываются в медицину
• Интеллектуальная панель Sunton 7″ на базе ESP32S3
• Stable Doodle от Stability AI превращает скетчи в изображения
• NotebookLM от Google добавляет ИИ к вашим записям
• Code Interpreter стал доступен всем подписчикам ChatGPT — «теперь каждый может стать аналитиком данных»
•
CodeGen2: a new open-source model for coding
•
GPT Prompt Engineer: промпт-инжиниринг в масштабе
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/r4/ep/ok/r4epokcjtcgclvxulkrmgx3bm9q.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Используем атрибут @backDeployed для расширения доступности функций
• Полезные iOS-инструменты для дебаггинга
• Что делать iOS-разработчикам в России?
• Модульное тестирование в iOS: всё, что надо знать. Часть 2 + Часть 1
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.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)
• Модуляризация мобильных приложений в масштабе
• Производительность мобильных приложений, ориентированная на пользователей
• Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах
• Делаем эмулятор Android через Terminal: пошаговое руководство
• Как избежать хаоса: навигация как отдельный логический уровень
• От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)
• Храним краску с умом: как организовать ресурсы в многомодульном проекте
• Ручной DI на Котлине? Легко! Ну, почти…
• Google Play разрешает NFT
• Вышел Android 14 Beta 4
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• The State of Kotlin Multiplatform
• Использование Provider, Riverpod, Bloc(Cubit), Redux, MobX на одном простом примере
• Как собрать iOS-фреймворк из исходных файлов на Kotlin
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](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/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как остановить бесконечный скроллинг, и нужно ли это делать
• Анализ приложений Threads
• Моя история: разработчик в 16
• Простыми словами о базовых принципах SRE
• Чем отличается тестирование на эмуляторах, фермах и физических устройствах
• Игры, в которые играют люди на собеседованиях
• Podlodka #324: холакратия — самоорганизующиеся команды
• 42% программистов не перерабатывают
• Evernote увольняет всех американских сотрудников и переезжает в Европу
• Как дизайнер запустил продукт и не нашел product market fit
• В Microsoft Office будет новый шрифт по умолчанию
•
![](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)
• Раскрытие потенциала SKAN 4: оптимизация кампаний и подготовка к развитию в будущем
• Расходы на рекламу приложений достигнут $94.9 млрд в 2025
• Решаем шахматные задачи с Chess Puzzles Set: разбор приложения
• Верификация пользователей принесла Instagram более $15 млн
• Самые скачиваемые приложения в июне 2023
• Кейс «Хлебная Усадьба»: разработка собственного мобильного приложения для сетевой пекарни
• Новый опрос Developer Nation
• Локализация игр при помощи ChatGPT — недорого и качественно. Гайд
• Как создать популярную игру в Google Play
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Нейронные сети врываются в медицину
• Интеллектуальная панель Sunton 7″ на базе ESP32S3
• Stable Doodle от Stability AI превращает скетчи в изображения
• NotebookLM от Google добавляет ИИ к вашим записям
• Code Interpreter стал доступен всем подписчикам ChatGPT — «теперь каждый может стать аналитиком данных»
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.