В новом дайджесте продолжаем изучение архитектурного линтинга и CI/CD, исследуем «приключение на 20 минут» с legacy-кодом и оправдания для вайб-кодинга, SwiftUI Instruments, скрытные ботнеты, выпуск приложений Spotify и многое другое. Заходите!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.
iOS
• Архитектурный линтинг для Swift: часть 3 + часть 2
• Отлаживаем приложение вместе со SwiftUI Instruments
• Введение в Measurement в Swift
• Работа в Booking, жизнь в Амстердаме, автогонки в Европе
• Многопоточность с нуля на примере пиццы
• Организация и поддержка нативных UI-тестов в iOS
•
Is There A Better AsyncButton?
•
Using NavigationPath with TabView in SwiftUI
•
Automatic Dependency Injection (DI) in Swift 6 to make your code clean
•
Swift 6.2: A first look at how it’s changing Concurrency
•
A fast, lightweight replacement for SwiftData
•
How to Build a Native QR Code Generator for iPhone with SwiftUI
•
Reading data from HealthKit in a SwiftUI app
•
See How Many Times Your SwiftUI Views Redraw Using Instruments
•
SwiftUI: Inline Editable Table
•
Building Type‑Safe, High‑Performance SwiftData / Core Data Models
•
Using singletons in Swift 6
•
How to persist navigation state in SwiftUI
•
NavigationRouter: A simple stack-based navigation system for SwiftUI
•
How to Add Tap to Copy with UIPasteboard in SwiftUI
•
Github Actions for iOS project
•
SwiftUI Inline Toasts — Xcode 16
•
Special Effects with SwiftUI Text
•
Mastering SwiftUI Transitions – Custom & Built-in Animations
•
Build a Custom Location Picker in SwiftUI: Search & Map Interactions
•
SwiftUI — Auto / Manual Scrolling Infinite Carousel in 4 Minutes — Xcode 16
•
Videos from try! Swift Tokyo 2025
•
AAInfographics — декларативный фреймворк для создания графиков
•
SnapshotTestingMacros — макросы для генерации снепшотов из функций
Android
• CI/CD по кнопке: как мы автоматизировали сборку SampleApp для SDK RuStore
• Обновляем AOSP-приложение «Контакты», или Чем обернулось «приключение на 20 минут» с legacy-кодом
• Как запустить локальную LLM (AI) в Android Studio
• Content Based Theme в Android приложении
• Разработка SDK
• Прожарка на код-ревью от Яндекса
• Алиса, открой багажник!
• Зачем нужен виртуальный дисплей в Android
• Находим и увольняем low-перформеров
• Опубликована программа I/O 2025
•
Exploring Jetpack Compose: DockedSearchBar
•
Maps in Jetpack Compose — A beginner’s guide
•
The Story Behind K2 Mode and How It Works
•
Configuring multiple SQLite databases in Android with SQLDelight 2
•
Lint Be Gone: Speed Up Your Android Release APK Builds
•
How to have ‘Crystal Clear Certificates’: Securing your Android Apps using Certificate Transparency
•
Leveraging Sealed Classes and Interfaces for Better Domain Modeling
•
Kotlin Coroutines: The real difference between Job.cancel() and Scope.cancel()
•
Understanding Execution Order in Jetpack Compose: DisposableEffect, LaunchedEffect, and Composables
•
Collapsing AppBar with Scroll Effect in Jetpack Compose
•
Kotlin Generics Explained: Once Upon a Type…
•
How I Use Internal Testing to Ship Production-Ready Android Apps
•
How Dropbox leverages testing to maintain high level of trust at scale
•
What’s new in the Jetpack Compose April ’25 release
•
At the Mountains of Madness with Jetpack Compose
•
Write Testable Time-Dependent Coroutine Code in Kotlin: Avoid System.currentTimeMillis
•
TOP 10 Live Data Questions (2025)
•
Developing for the SDK Runtime
•
Now in Android: 115 — Gemini in Android Studio, Enhancing Safety and Security, and more
•
The 3 Biggest Coding Mistakes I Made In My Android Projects
•
Full Guide to Testing APIs on Android & KMP With Ktor MockEngine
•
How Junie Helps You Code Faster with Kotlin in IntelliJ IDEA
•
Double Dispatch: Prelude to the Visitor Pattern
•
What if your IDE could talk back… and help? Junie by JetBrains is here.
•
Why did my build fail? Using AI to troubleshoot faster with Failure Summaries
•
SoundRemote — воспроизведение музыки с PC на Android
•
AstraCrypt — шифрование и сокрытие файлов
•
Learn Kotlin Flow — реальные примеры работы с Kotlin Flow
Кроссплатформа
• Локализация Flutter приложения на сервере
•
Flutter | Understanding InheritedWidget
•
Flutter Hero Widget and PageRouteBuilder Animation
•
Stop Using MediaQuery for Responsiveness in Flutter
•
Create a Student–Tutor Booking App with Flutter Calendar
•
Testing Business Logic with Either in Dart: Why You Should Try It
Разработка
• Вайб кодинг — не оправдание для некачественной работы
• Самодельная мобильная лаборатория из старого мультиметра и подручного телефона
• Закулисный взгляд на то, как Spotify выпускает приложения: часть 1
• Ох уж эти скрытные ботнеты
• Optional vs Nullable на стыке технологий
• Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#13)
• Offline First в мобильных приложениях. CRUD на стороне клиента
• Разработчик и стартап: работать | основать | избегать?
• Чего боится твой тимлид?
• Как прогнозируют погоду в 2025 году — ML, Fortran и Big Data
• Tracer стал доступен для ОС Аврора
• Supabase получила еще $200 млн
• Монотонный стек: мощный инструмент для оптимизации алгоритмов
•
Claude Code: Best practices for agentic coding
•
Lessons from building and maintaining distributed systems at scale
•
How I created UI with ChatGPT’s new image generator (4o)
•
We Interviewed 100 Eng Teams. The Problem With Modern Engineering Isn’t Speed. It’s Chaos.
•
Stop Writing If-Else Trees: Use the State Pattern Instead
•
AI Horseless Carriages
•
How to Embed HTML5 Games in Apps & Grow App Revenue
•
Code Your Own Llama 4 LLM from Scratch – Full Course
•
Essential Machine Learning and AI Concepts Animated
Аналитика, маркетинг и монетизация
• Все знают, где ты находишься — можешь убедиться сам
• OpenAI может купить Chrome
• Game On, Telegram: как мессенджер превращается в игровую платформу будущего
• Сколько я заработал в RuStore и как Роскомнадзор продвигал мое приложение
• Маркетологи в мобайле: Алексей Фомин (Head of Performance Marketing, Бургер Кинг)
• Байесовские А/Б-тесты: множественные сравнения
• Chess.com достиг 200 млн пользователей
• Европейская комиссия оштрафовала Apple на $500 млн за нарушение DMA
• I******* запускает свой клон CapCut — редактор видео Edits
AI, Устройства, IoT
• Мы делали презентации 35 лет, а потом пришла нейросеть
• Пайплайн распознавания номеров транспортных средств: как это устроено
• Что нового у Wiren Board: модуль DALI, датчик присутствия в WB-MSW, новое реле в подрозетник
• Как мы в Авито предсказываем категории объявлений по описанию
• Cluely получил $5.3 млн на создание ИИ-платформы «списывания для всего»
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.
iOS• Архитектурный линтинг для Swift: часть 3 + часть 2
• Отлаживаем приложение вместе со SwiftUI Instruments
• Введение в Measurement в Swift
• Работа в Booking, жизнь в Амстердаме, автогонки в Европе
• Многопоточность с нуля на примере пиццы
• Организация и поддержка нативных UI-тестов в iOS
•
Is There A Better AsyncButton?•
Using NavigationPath with TabView in SwiftUI•
Automatic Dependency Injection (DI) in Swift 6 to make your code clean•
Swift 6.2: A first look at how it’s changing Concurrency•
A fast, lightweight replacement for SwiftData•
How to Build a Native QR Code Generator for iPhone with SwiftUI•
Reading data from HealthKit in a SwiftUI app•
See How Many Times Your SwiftUI Views Redraw Using Instruments•
SwiftUI: Inline Editable Table•
Building Type‑Safe, High‑Performance SwiftData / Core Data Models•
Using singletons in Swift 6•
How to persist navigation state in SwiftUI•
NavigationRouter: A simple stack-based navigation system for SwiftUI•
How to Add Tap to Copy with UIPasteboard in SwiftUI•
Github Actions for iOS project•
SwiftUI Inline Toasts — Xcode 16•
Special Effects with SwiftUI Text•
Mastering SwiftUI Transitions – Custom & Built-in Animations•
Build a Custom Location Picker in SwiftUI: Search & Map Interactions•
SwiftUI — Auto / Manual Scrolling Infinite Carousel in 4 Minutes — Xcode 16•
Videos from try! Swift Tokyo 2025•
AAInfographics — декларативный фреймворк для создания графиков•
SnapshotTestingMacros — макросы для генерации снепшотов из функций
Android• CI/CD по кнопке: как мы автоматизировали сборку SampleApp для SDK RuStore
• Обновляем AOSP-приложение «Контакты», или Чем обернулось «приключение на 20 минут» с legacy-кодом
• Как запустить локальную LLM (AI) в Android Studio
• Content Based Theme в Android приложении
• Разработка SDK
• Прожарка на код-ревью от Яндекса
• Алиса, открой багажник!
• Зачем нужен виртуальный дисплей в Android
• Находим и увольняем low-перформеров
• Опубликована программа I/O 2025
•
Exploring Jetpack Compose: DockedSearchBar•
Maps in Jetpack Compose — A beginner’s guide•
The Story Behind K2 Mode and How It Works•
Configuring multiple SQLite databases in Android with SQLDelight 2•
Lint Be Gone: Speed Up Your Android Release APK Builds•
How to have ‘Crystal Clear Certificates’: Securing your Android Apps using Certificate Transparency•
Leveraging Sealed Classes and Interfaces for Better Domain Modeling•
Kotlin Coroutines: The real difference between Job.cancel() and Scope.cancel()•
Understanding Execution Order in Jetpack Compose: DisposableEffect, LaunchedEffect, and Composables•
Collapsing AppBar with Scroll Effect in Jetpack Compose•
Kotlin Generics Explained: Once Upon a Type…•
How I Use Internal Testing to Ship Production-Ready Android Apps•
How Dropbox leverages testing to maintain high level of trust at scale•
What’s new in the Jetpack Compose April ’25 release•
At the Mountains of Madness with Jetpack Compose•
Write Testable Time-Dependent Coroutine Code in Kotlin: Avoid System.currentTimeMillis•
TOP 10 Live Data Questions (2025)•
Developing for the SDK Runtime•
Now in Android: 115 — Gemini in Android Studio, Enhancing Safety and Security, and more•
The 3 Biggest Coding Mistakes I Made In My Android Projects•
Full Guide to Testing APIs on Android & KMP With Ktor MockEngine•
How Junie Helps You Code Faster with Kotlin in IntelliJ IDEA•
Double Dispatch: Prelude to the Visitor Pattern•
What if your IDE could talk back… and help? Junie by JetBrains is here.•
Why did my build fail? Using AI to troubleshoot faster with Failure Summaries•
SoundRemote — воспроизведение музыки с PC на Android•
AstraCrypt — шифрование и сокрытие файлов•
Learn Kotlin Flow — реальные примеры работы с Kotlin Flow
Кроссплатформа• Локализация Flutter приложения на сервере
•
Flutter | Understanding InheritedWidget•
Flutter Hero Widget and PageRouteBuilder Animation•
Stop Using MediaQuery for Responsiveness in Flutter•
Create a Student–Tutor Booking App with Flutter Calendar•
Testing Business Logic with Either in Dart: Why You Should Try It
Разработка• Вайб кодинг — не оправдание для некачественной работы
• Самодельная мобильная лаборатория из старого мультиметра и подручного телефона
• Закулисный взгляд на то, как Spotify выпускает приложения: часть 1
• Ох уж эти скрытные ботнеты
• Optional vs Nullable на стыке технологий
• Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#13)
• Offline First в мобильных приложениях. CRUD на стороне клиента
• Разработчик и стартап: работать | основать | избегать?
• Чего боится твой тимлид?
• Как прогнозируют погоду в 2025 году — ML, Fortran и Big Data
• Tracer стал доступен для ОС Аврора
• Supabase получила еще $200 млн
• Монотонный стек: мощный инструмент для оптимизации алгоритмов
•
Claude Code: Best practices for agentic coding•
Lessons from building and maintaining distributed systems at scale•
How I created UI with ChatGPT’s new image generator (4o)•
We Interviewed 100 Eng Teams. The Problem With Modern Engineering Isn’t Speed. It’s Chaos.•
Stop Writing If-Else Trees: Use the State Pattern Instead•
AI Horseless Carriages•
How to Embed HTML5 Games in Apps & Grow App Revenue•
Code Your Own Llama 4 LLM from Scratch – Full Course•
Essential Machine Learning and AI Concepts Animated
Аналитика, маркетинг и монетизация• Все знают, где ты находишься — можешь убедиться сам
• OpenAI может купить Chrome
• Game On, Telegram: как мессенджер превращается в игровую платформу будущего
• Сколько я заработал в RuStore и как Роскомнадзор продвигал мое приложение
• Маркетологи в мобайле: Алексей Фомин (Head of Performance Marketing, Бургер Кинг)
• Байесовские А/Б-тесты: множественные сравнения
• Chess.com достиг 200 млн пользователей
• Европейская комиссия оштрафовала Apple на $500 млн за нарушение DMA
• I******* запускает свой клон CapCut — редактор видео Edits
AI, Устройства, IoT• Мы делали презентации 35 лет, а потом пришла нейросеть
• Пайплайн распознавания номеров транспортных средств: как это устроено
• Что нового у Wiren Board: модуль DALI, датчик присутствия в WB-MSW, новое реле в подрозетник
• Как мы в Авито предсказываем категории объявлений по описанию
• Cluely получил $5.3 млн на создание ИИ-платформы «списывания для всего»
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.