В новом дайджесте быстродействие прокрутки в SwiftUI и выразительные анимации, сахар для UI-тестирования и красота Android, NativePHP, анатомия энергопотребления, небольшое изменение в интерфейсе Duolingo, которое меняет все и многое другое. Заходите!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.
iOS
• Для чего я написал собственный аудиопроигрыватель
• Быстродействие прокрутки в SwiftUI — в погоне за 120 кадрами в секунду
• Rafinad: сахар для UI-тестирования iOS-приложений
• SmartCaptcha Yandex на iOS: инструкция по внедрению
• Tuist. Как перенести проект
• Ускоряем приложение эффективно
• Swift Concurrency в iOS SDK Яндекс Доставки
• Как мы доверили качество наших приложений AI
• Вадим Чистяков — Global Talent Visa, переезд в Лондон, работа в IT
• Как писать игры на Swift для Playdate
• Мок-собеседование iOS-разработчика. SwiftUI •
• Макросы Swift: проще, чище, быстрее
• Мы решили все проблемы работы в модульном проекте. Хотите так же?
• Apple запустит iOS 26 и macOS 26 в рамках крупного ребрендинга
• Apple Watch и Apple TV получат серьезные изменения в дизайне на WWDC наряду с iOS 19
• Что такое static в Swift — вопросы с собеседований
•
Ever heard of .contextMenu()?
•
Drawing graphics with Canvas
•
Reading Piped Input in Swift Executables
•
Creating Xcode source editor extensions
•
Making your iOS app more accessible with dynamic type
•
Microapps architecture in Swift. Scaling.
•
Creating shapes using Path in the SwiftUI Canvas view
•
Billing Grace Period Explained: How It Works and Why It Matters
•
Turning Singleton Usage into Testable Code
•
How to easily inspect and modify network traffic
•
SwiftUI: Pass Through Gestures on Transparent Image Pixel (Without UIImageView)
•
How We Decomposed Tinder’s Monolith
•
Build an iOS app faster than ever with xtool
•
Swift 6 Refactoring in a Camera App
•
SwiftUI Caching: Key to Optimize Performance
•
Integrating App Intents with Control Action
•
Mastering Swift Concurrency: A Practical Guide
•
iOS Interview Question: Build a World Clock App in SwiftUI
•
6 Useful SwiftUI Modifiers — Xcode 16
•
How to Run Automated UI Tests in iOS with XCUITest
•
Elevate Your SwiftUI Lists with iOS 18’s New Container Features
•
SwiftUI iOS Localization Tutorial: Master String Catalogs in Xcode 16
•
How Task Cancellation Really Works in Swift (Behind the Scenes)
•
Re-creating iMessage Morph-Menu Effect Using SwiftUI
•
ObservableDefaults — интеграция SwiftUI, Observation и UserDefaults/iCloud Key-Value
•
SUICoordinator — навигация на Координатор для SwiftUI
•
DebugSwift — набор инструментов отладки для iOS-приложений
Android
• Советы для публикации в RuStore: альфа-тестирование, AAB и автоматизация с помощью API
• Большинство приложений для Android нарушают это правило чистого кода!
• Как создать кастомный угловой бейдж в Jetpack Compose
• Станет ли Android наконец красивым?
• Выразительные анимации для всех
• Создание кастомного тултипа Jetpack Compose
• FCM для Android и Backend на Kotlin
• Автоматизация проверки стиля кода с помощью KtLint в Android проекте
• Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory
• История одного бизнес-желания
• Наглядный пример, когда не следовать best practices for coroutines от Google
• Кто является Senior разработчиком?
• Оптимизация Compose: проблемы, опыт, тактика, стратегия
•
Deep dive into annotations in Jetpack Compose
•
5 strategies to address Android emulator instability during automated testing
•
From Gradle Plugin to CLI — A More Flexible Way to Distribute Android Apps with Firebase App Distribution
•
What’s new in Watch Faces
•
In-App Ratings and Reviews for TV
•
What’s new in Wear OS 6
•
Configuring Gradle Memory Usage
•
Understanding Android Architecture and Exploiting Vulnerabilities in the DIVA APK
•
Better Previews in Compose with State Hoisting + MVI template
•
Avoid using var in the data class constructor in Kotlin – now with Jetpack Compose
•
What Actually Happens Inside Koin (And Why It’s Not Black Magic)
•
How Does Mocking Work Internally? A Deep Dive into MockK Internals
•
Saving the UI State in a Compose Multiplatform App
•
Android Studio Meerkat Feature Drop
•
Material 3 Expressive: Rethinking Emotion, Accessibility & Modern UX
•
Better Previews in Compose with State Hoisting + MVI template
•
What’s new in Jetpack Compose
•
Google Home APIs, tools, and Gemini capabilities for your apps
•
KotlinConf’25 — Keynote
•
Everything you need to know about NEW Navigation 3
•
Path animations in Jetpack Compose
•
Pixel Weather App — погодное приложение в пиксель-арт
Кроссплатформа
• NativePHP: создать невозможное и заработать $100 тыс. за первые три месяца
• Нативная мощь: Flutter SDK на C++ ядре. Часть 2
• Борьба с лишним весом, или Методы оптимизации размеров Flutter-приложений
• 5 лет с Flutter: эволюция кроссплатформенности
• Flutter-диета. Как сбросить вес, выпиливая модули
•
How to force users to update your Flutter app
•
MVIKotlin in Practice: A Modern Architecture framework for Android and KMP
•
Gemini in Android Studio now speaks fluent Flutter
•
Flutter’s path towards seamless interop
•
Why Await? Futures in Dart & Flutter
•
8 Flutter Shortcuts That Feel Like Cheating
•
Hot Reload In Compose Multiplatform (CMP) — THIS Is All You Have to Know
•
Vibe Lander — ретро-игра на KMP
Разработка
• Фронтенд и бэкенд больше не будут общаться как прежде: создаём конструктор сценариев на базе Backend Driven UI
• Анатомия энергопотребления
• От J2ME до супераппов: 20 лет разработки глазами техдиректор
• Мнемотехника: запомнить всё — развитие памяти, насмотренность, саморазвитие
• Прокачиваем Code Review: как выжать максимум?
•
Practical AI techniques for daily engineering work
•
When a team is too big
•
Robust Database Backup Recovery at Uber
•
Don’t solve problems you don’t have. You’re literally creating problems.
•
Announcing Gemma 3n Preview: Powerful, Efficient, Mobile-First AI
•
Learn Python for Data Science – Full Course for Beginners
•
Firebase at Google I/O 2025
Аналитика, маркетинг и монетизация
• Небольшое изменение в интерфейсе Duolingo, которое меняет все
• LoveJack — приложение для знакомств, позволяющее найти любовь с помощью пяти слов
• App Store в США в 2024 обеспечил продажи на $406 млрд
• Как Apple боролась с мошенничеством в App Store в 2024
• Институциональные покупки: понимание и обнаружение
• Apple купила первую игровую студию
• Adjust Growth Copilot — AI-инструмент нового поколения для роста мобильных приложений
• Увеличиваем средний чек и количество повторных покупок с помощью мобильного приложения: кейсы ритейла 2025
• Как продвигать сервис продажи билетов, когда никто не путешествует
• Кейс Airba Fresh и Bidease: как за 4 месяца увеличить количество первых покупок в In-App в 5 раз
AI, Устройства, IoT
• Исследователи Яндекса выложили Yambda — один из крупнейших в мире датасетов для развития рекомендательных систем
• Умный дом на вырост
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.
iOS• Для чего я написал собственный аудиопроигрыватель
• Быстродействие прокрутки в SwiftUI — в погоне за 120 кадрами в секунду
• Rafinad: сахар для UI-тестирования iOS-приложений
• SmartCaptcha Yandex на iOS: инструкция по внедрению
• Tuist. Как перенести проект
• Ускоряем приложение эффективно
• Swift Concurrency в iOS SDK Яндекс Доставки
• Как мы доверили качество наших приложений AI
• Вадим Чистяков — Global Talent Visa, переезд в Лондон, работа в IT
• Как писать игры на Swift для Playdate
• Мок-собеседование iOS-разработчика. SwiftUI •
• Макросы Swift: проще, чище, быстрее
• Мы решили все проблемы работы в модульном проекте. Хотите так же?
• Apple запустит iOS 26 и macOS 26 в рамках крупного ребрендинга
• Apple Watch и Apple TV получат серьезные изменения в дизайне на WWDC наряду с iOS 19
• Что такое static в Swift — вопросы с собеседований
•
Ever heard of .contextMenu()?•
Drawing graphics with Canvas•
Reading Piped Input in Swift Executables•
Creating Xcode source editor extensions•
Making your iOS app more accessible with dynamic type•
Microapps architecture in Swift. Scaling.•
Creating shapes using Path in the SwiftUI Canvas view•
Billing Grace Period Explained: How It Works and Why It Matters•
Turning Singleton Usage into Testable Code•
How to easily inspect and modify network traffic•
SwiftUI: Pass Through Gestures on Transparent Image Pixel (Without UIImageView)•
How We Decomposed Tinder’s Monolith•
Build an iOS app faster than ever with xtool•
Swift 6 Refactoring in a Camera App•
SwiftUI Caching: Key to Optimize Performance•
Integrating App Intents with Control Action•
Mastering Swift Concurrency: A Practical Guide•
iOS Interview Question: Build a World Clock App in SwiftUI•
6 Useful SwiftUI Modifiers — Xcode 16•
How to Run Automated UI Tests in iOS with XCUITest•
Elevate Your SwiftUI Lists with iOS 18’s New Container Features•
SwiftUI iOS Localization Tutorial: Master String Catalogs in Xcode 16•
How Task Cancellation Really Works in Swift (Behind the Scenes)•
Re-creating iMessage Morph-Menu Effect Using SwiftUI•
ObservableDefaults — интеграция SwiftUI, Observation и UserDefaults/iCloud Key-Value•
SUICoordinator — навигация на Координатор для SwiftUI•
DebugSwift — набор инструментов отладки для iOS-приложений
Android• Советы для публикации в RuStore: альфа-тестирование, AAB и автоматизация с помощью API
• Большинство приложений для Android нарушают это правило чистого кода!
• Как создать кастомный угловой бейдж в Jetpack Compose
• Станет ли Android наконец красивым?
• Выразительные анимации для всех
• Создание кастомного тултипа Jetpack Compose
• FCM для Android и Backend на Kotlin
• Автоматизация проверки стиля кода с помощью KtLint в Android проекте
• Индикация клика на стероидах в Compose: пишем свою IndicationNodeFactory
• История одного бизнес-желания
• Наглядный пример, когда не следовать best practices for coroutines от Google
• Кто является Senior разработчиком?
• Оптимизация Compose: проблемы, опыт, тактика, стратегия
•
Deep dive into annotations in Jetpack Compose•
5 strategies to address Android emulator instability during automated testing•
From Gradle Plugin to CLI — A More Flexible Way to Distribute Android Apps with Firebase App Distribution•
What’s new in Watch Faces•
In-App Ratings and Reviews for TV•
What’s new in Wear OS 6•
Configuring Gradle Memory Usage•
Understanding Android Architecture and Exploiting Vulnerabilities in the DIVA APK•
Better Previews in Compose with State Hoisting + MVI template•
Avoid using var in the data class constructor in Kotlin – now with Jetpack Compose•
What Actually Happens Inside Koin (And Why It’s Not Black Magic)•
How Does Mocking Work Internally? A Deep Dive into MockK Internals•
Saving the UI State in a Compose Multiplatform App•
Android Studio Meerkat Feature Drop•
Material 3 Expressive: Rethinking Emotion, Accessibility & Modern UX•
Better Previews in Compose with State Hoisting + MVI template•
What’s new in Jetpack Compose•
Google Home APIs, tools, and Gemini capabilities for your apps•
KotlinConf’25 — Keynote•
Everything you need to know about NEW Navigation 3•
Path animations in Jetpack Compose•
Pixel Weather App — погодное приложение в пиксель-арт
Кроссплатформа• NativePHP: создать невозможное и заработать $100 тыс. за первые три месяца
• Нативная мощь: Flutter SDK на C++ ядре. Часть 2
• Борьба с лишним весом, или Методы оптимизации размеров Flutter-приложений
• 5 лет с Flutter: эволюция кроссплатформенности
• Flutter-диета. Как сбросить вес, выпиливая модули
•
How to force users to update your Flutter app•
MVIKotlin in Practice: A Modern Architecture framework for Android and KMP•
Gemini in Android Studio now speaks fluent Flutter•
Flutter’s path towards seamless interop•
Why Await? Futures in Dart & Flutter•
8 Flutter Shortcuts That Feel Like Cheating•
Hot Reload In Compose Multiplatform (CMP) — THIS Is All You Have to Know•
Vibe Lander — ретро-игра на KMP
Разработка• Фронтенд и бэкенд больше не будут общаться как прежде: создаём конструктор сценариев на базе Backend Driven UI
• Анатомия энергопотребления
• От J2ME до супераппов: 20 лет разработки глазами техдиректор
• Мнемотехника: запомнить всё — развитие памяти, насмотренность, саморазвитие
• Прокачиваем Code Review: как выжать максимум?
•
Practical AI techniques for daily engineering work•
When a team is too big•
Robust Database Backup Recovery at Uber•
Don’t solve problems you don’t have. You’re literally creating problems.•
Announcing Gemma 3n Preview: Powerful, Efficient, Mobile-First AI•
Learn Python for Data Science – Full Course for Beginners•
Firebase at Google I/O 2025
Аналитика, маркетинг и монетизация• Небольшое изменение в интерфейсе Duolingo, которое меняет все
• LoveJack — приложение для знакомств, позволяющее найти любовь с помощью пяти слов
• App Store в США в 2024 обеспечил продажи на $406 млрд
• Как Apple боролась с мошенничеством в App Store в 2024
• Институциональные покупки: понимание и обнаружение
• Apple купила первую игровую студию
• Adjust Growth Copilot — AI-инструмент нового поколения для роста мобильных приложений
• Увеличиваем средний чек и количество повторных покупок с помощью мобильного приложения: кейсы ритейла 2025
• Как продвигать сервис продажи билетов, когда никто не путешествует
• Кейс Airba Fresh и Bidease: как за 4 месяца увеличить количество первых покупок в In-App в 5 раз
AI, Устройства, IoT• Исследователи Яндекса выложили Yambda — один из крупнейших в мире датасетов для развития рекомендательных систем
• Умный дом на вырост
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.