Мобильная разработка за неделю #636 (22 — 28 июня)

от автора

В этом выпуске хардкорная агентская разработка под iOS и Preview-Driven скриншот тестирование для Android, кольца-расстояния и инерция пальца, пять ошибок начинающих Android‑разработчиков и пять ошибок при работе с Jetpack Compose, динамические иконки приложения на Flutter, ручной DI в Kotlin Multiplatform, расширенные возможности оплаты и низкие комиссии в Google Play, и многое другое. Заходите!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков.

iOS

• Хардкорная агентская разработка под iOS, часть 1: отдельный Mac Mini для агентов
• Realtime-чат без WebSocket: long-polling, гонки переподключения и дубли пушей
• Copy-on-Write в Swift: подготовка к собеседованию
• «Люди вокруг» на SpriteKit: кольца-расстояния, инерция пальцем и виртуализация аватаров
• Opaque types vs Existential Types vs Generics
• Как нарисовать тысячи объектов на карте и не убить FPS: эволюция рендера на Mapbox GL
• Архитектура, перформанс, дебаг: как мы делали медиаленту
• SwiftSyntax: пишем свой DI framework
• Swift Package Index присоединился к Apple
• Дизайн киты для iOS, iPadOS и macOS 27
• Новая неустранимая уязвимость в чипах Apple открывает путь к взлому iPhone
• SwiftUI: Observable macro under the hood
• Stop Using lazy in Swift Until You Read This
• Swift Developers With 5+ Years of Experience Still Get These Questions Wrong
• 7 Things I Automate in Xcode to Save Time
• How did Apple cut launch time by 30% in iOS 27?
• 10 Swift Features That Instantly Make You a Better Developer
• Core AI Announced
• WWDC 2026: AsyncImage Caching
• SwiftUI Best Practices for Views
• Swift Conditionals: if, switch, guard, and the Pattern Matching
• Taking control of toolbar items in SwiftUI
• New macros for SwiftNavigation
• 12 Ways to Save Time in iOS Development
• An AI Interviewed Me for an iOS Job
• iOS 27 Style Glass Sliders Using SwiftUI
• What’s new in Swift and SwiftUI (WWDC 2026)
• Setting up Gemini in Xcode’s Coding Agent
• Swift Macros Demystified: Build a Freestanding Expression Macro
• Weather App Style Sticky Scroll Section Using SwiftUI
• SwiftStreamingMarkdown — рендеринг Markdown с поддержкой стриминга
• AetherEngine — медиаплеер для iOS, tvOS и macOS
• JBird — быстрая, типобезопасная библиотека для работы с JSON в Swift

Android

Web3-мессенджер размером в 3.5 Мб: инди-разработка с нулевым бюджетом
• Preview-Driven скриншот тестирование для локалей, ключей и масштабов шрифта
• Android-троян Mamont — теперь на Kotlin
• Как превратить Смарт ТВ в «почти» полноценную рабочую станцию на Linux
• Пять ошибок начинающих Android‑разработчиков при работе с жизненным циклом
• Пять ошибок при работе с Jetpack Compose, из-за которых тормозит recomposition
• Сетчатые градиенты в Jetpack Compose
• Sliding Doors: ten years of RSS-Parser
• I was tired of testing AGSL shaders through a sample app, so I built an Android Studio plugin
• Writing Custom Detekt Rules That Auto-Correct Your Kotlin Code
• My AI Workflow for Android Development
• Beyond ExoPlayer: Designing a Production Audio Engine on Android with Media3, MediaSession, and JUCE DSP
• Android 17 Contact Picker Series
• Writing K2 Compiler Plugins: Type-Safe Validation and Resource Generation
• NEW Scoped ViewModels API in Jetpack Compose
• Mesh Gradients in Jetpack Compose
• A ViewModel Dies with Its Owner: There Are Only Three Owners in Navigation 3
• How to understand Play’s expanded billing options and lower fees
• Is THIS How Android Apps Communicate In Future? — Exploring the NEW AppFunctions
• NEW Scoped ViewModels API in Jetpack Compose
• Anti-Vocale — транскрибация голосовых сообщений на Android
• Hydra — защита Android-приложения

Кроссплатформа

• Покой как фича: анти-шагомер на Expo, который ругает за активность
Динамические иконки приложения на Flutter: подробная инструкция для ручного выбора и обновлений по воздуху
• Ручной DI в Kotlin Multiplatform: понравится и тебе, и твоему ИИ‑агенту
• Как подготовиться к собеседованию на Flutter-разработчика
• Как мы внедряли Compose Multiplatform в Я.Team
• yx_state + yx_scope + yx_navigation: единый стек Flutter-приложений
• Warm Tyres: Image Loading and Caching in Compose Multiplatform with Coil 3
• Stop Using copyWith() Blindly — Here’s What It Costs You in Flutter
• I Deleted a Million Lines of Code from an App 90 Million People Use
• How we built a Flutter-powered AI coffee shop
• From 4.1s to 0.9s — How We Fixed Our React Native Launch Time
• Flutter Lifecycle Callbacks: What I Learned After 7 Years of State Management

Разработка

• Apple просто убила App Store
• Тестирование UX для мобильных приложений: чек‑лист без софта и магии
• Backend-Driven UI для умного дома: как обучить сервер верстать интерфейсы
• T-Shape мобильный разработчик
• Найм в эпоху AI — собеседования, IT найм, рынок труда
• Компании начинают задаваться вопросом об эффективности ИИ
• You should use AI for reviewing code especially when the diff is huge
• Nearly Half of LG Smart TV Apps Are Laced with Proxies
• I Built a Monster CLAUDE.md, And My Coding Agent Got Scary Good
• How to Write an Effective Software Design Document

Аналитика, маркетинг и монетизация

• Расширенные возможности оплаты и более низкие комиссии в Google Play
• Китайские разработчики подали антимонопольный иск против Apple из-за комиссий App Store
• Маркетологи в мобайле: Анастасия Луканова (руководитель направления по развитию рекламного бизнеса RuStore)
• Почему мобильные приложения начали мыслить как live-service игры
• Ribbie превращает бейсбольную статистику в аркадные пиксельные трансляции
• Your app is perfectly optimized. That’s why nobody remembers it.

AI, Устройства, IoT

• Зоопарк протоколов и человеческий фактор: что внутри сложной IoT-интеграции климатического оборудования
• Погружаем модели в сказки русские, да рассказы древние – тестируем возможности Qwen и Whisper на дореволюционномъ
• Сплит на 36 клавиш — неочевидный путь к слепому десятипальцевому набору
• Переделка системы автоматизации в коттедже: ошибки прошлого интегратора, доработки, результат
• Как мне удалось уменьшить размер классификатора болезней растений с 16 до 5 МБ с потерей точности менее 1%

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

ссылка на оригинал статьи https://habr.com/ru/articles/1052920/