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

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