В новом дайджесте продолжаем изучение архитектурного линтинга и 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 млн на создание ИИ-платформы «списывания для всего»

Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.