В новом дайджесте продолжаем изучение архитектурного линтинга и 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, где еще больше материалов для мобильных разработчиков.

• Архитектурный линтинг для Swift: часть 3 + часть 2
• Отлаживаем приложение вместе со SwiftUI Instruments
• Введение в Measurement в Swift
• Работа в Booking, жизнь в Амстердаме, автогонки в Европе
• Многопоточность с нуля на примере пиццы
• Организация и поддержка нативных UI-тестов в iOS
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• CI/CD по кнопке: как мы автоматизировали сборку SampleApp для SDK RuStore
• Обновляем AOSP-приложение «Контакты», или Чем обернулось «приключение на 20 минут» с legacy-кодом
• Как запустить локальную LLM (AI) в Android Studio
• Content Based Theme в Android приложении
• Разработка SDK
• Прожарка на код-ревью от Яндекса
• Алиса, открой багажник!
• Зачем нужен виртуальный дисплей в Android
• Находим и увольняем low-перформеров
• Опубликована программа I/O 2025
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Локализация Flutter приложения на сервере
•

•

•

•

•


• Вайб кодинг — не оправдание для некачественной работы
• Самодельная мобильная лаборатория из старого мультиметра и подручного телефона
• Закулисный взгляд на то, как Spotify выпускает приложения: часть 1
• Ох уж эти скрытные ботнеты
• Optional vs Nullable на стыке технологий
• Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения
• Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов (#13)
• Offline First в мобильных приложениях. CRUD на стороне клиента
• Разработчик и стартап: работать | основать | избегать?
• Чего боится твой тимлид?
• Как прогнозируют погоду в 2025 году — ML, Fortran и Big Data
• Tracer стал доступен для ОС Аврора
• Supabase получила еще $200 млн
• Монотонный стек: мощный инструмент для оптимизации алгоритмов
•

•

•

•

•

•

•

•

•


• Все знают, где ты находишься — можешь убедиться сам
• OpenAI может купить Chrome
• Game On, Telegram: как мессенджер превращается в игровую платформу будущего
• Сколько я заработал в RuStore и как Роскомнадзор продвигал мое приложение
• Маркетологи в мобайле: Алексей Фомин (Head of Performance Marketing, Бургер Кинг)
• Байесовские А/Б-тесты: множественные сравнения
• Chess.com достиг 200 млн пользователей
• Европейская комиссия оштрафовала Apple на $500 млн за нарушение DMA
• I******* запускает свой клон CapCut — редактор видео Edits

• Мы делали презентации 35 лет, а потом пришла нейросеть
• Пайплайн распознавания номеров транспортных средств: как это устроено
• Что нового у Wiren Board: модуль DALI, датчик присутствия в WB-MSW, новое реле в подрозетник
• Как мы в Авито предсказываем категории объявлений по описанию
• Cluely получил $5.3 млн на создание ИИ-платформы «списывания для всего»
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.