В этом выпуске конкатенация против интерполяции, дизайн-система для мобильных устройств и TV, применение zero/empty объектов, игра на LUA для часов Xiaomi Redmi Watch 4, уродливые пейволы, навыки флирта с ИИ-персонажами и многое другое. Заходите!



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

iOS

• Конкатенация против интерполяции текста в SwiftUI
• Как правильно организовать проект c модульной архитектурой в iOS-разработке
• Документируем код с помощью DocC
• Google AI Studio: макеты Figma -> iOS приложение на Gemini 2.5 Experimental
• Воспроизведение и редактирование видео с AVFoundation. Часть 1. Ассеты простые
• Обзор Copilot в Xcode на SwiftUI
• Одна билд-система, чтоб править всеми
• Влияние Swift Runtime на производительность приложения
• Разрабатываем CLI-инструменты на Swift
• Бразилия расследует деятельность Apple и App Tracking Transparency
• Вышел swiftly 1.0
• Apple работает над масштабным обновлением приложения Health
• SwiftUI Grid, LazyVGrid, LazyHGrid Explained with Code Examples
• Building a dependency injection framework
• Fast & Fluid: Integrating Rust egui into SwiftUI
• Profiling apps using Instruments
• ModelActor is Just Weird
• How Trendyol Achieved 70% Faster Build Time with iOS App Revamp
• Presenting an Inspector with SwiftUI
• SwiftUI Craftsmanship: State Management
• The Dark Side of Apple Development: Why Developers Are Struggling On Apple’s Increasingly Hostile Platforms
• Say Goodbye to dismiss: A State-Driven Path to More Maintainable SwiftUI
• Create a Custom Single Select Button in SwiftUI
• Transform your LLM into an Xcode project copilot
• Region-Specific Language Control: Implementing Forced Localization in iOS Apps
• New in Swift 6.1: Test Scoping Traits
• Disable Interactive Dismissal of Navigation Zoom Transition
• Localizing Apple UI in 2025
• Monitoring iOS apps
• SwiftUI in UIKit?! Watch Me Inject Animations into a UIKit App
• SwiftUI Animation Bugs? Here’s How I Fixed Them!
• Animated Dialogs Like Family App Using SwiftUI
• Creating an Over Top View in SwiftUI: A Unique Way to Present Edit Views
• Swift Protocols — An Introduction
• VDAnimation — декларативные анимации для SwiftUI
• DriftCheck — обнаружение утечек памяти

Android

• Все знают, какие приложения установлены на вашем телефоне
• Как мы сделали дизайн-систему для мобильных устройств и TV
• Жизнь после отвала eMMC: Загружаем Android с MicroSD
• Lissen: как я красивый плеер для аудиокниг писал
• Как я писал проводник для Wear OS и что из этого вышло
• Разбираем чистую архитектуру в Android: от а до я
• Изучайте многомодульную архитектуру в Compose как можно скорее
• Валидация полей формы в Android приложении и не только
• Поддержка webextensions под Андроид, вторая серия
• BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform
• Как мы разработали свой фреймворк SingleState-навигации на Android
• Танцы вокруг дерева семантики: UI-тесты Compose-экранов
• Многомодульность — ответы на вопросы с экспертами
• Как работает Android Work Profile
• Разбор кода магазина приложений
• Google внедряет сторонний биллинг в Google Play в Великобритании
• APK vs AAB: How We Deliver Android Apps
• Android Architecture — Fetchers update
• Home sweet home: some thoughts on storing files
• Make WebViews edge-to-edge
• Media3 1.6.0 — what’s new?
• Local Database: Comparing Realm, SQLDelight, and Room
• Simplifying Dependency Injection in Android Jetpack Compose with Hilt
• Profile & Benchmark Android Builds
• Understanding Dispatchers: Main and Main.immediate
• Hybrid Encryption in Android: Secure Communication Between Mobile and Backend Systems
• Why Kotlin’s callbackFlow can cause memory leak (And How to Fix It!)
• Android Builds: Simple Recipes to Enhance Developer Productivity
• Enhancing app performance in Android
• Anatomy of the SDK Runtime
• No more Manual Koin Initialization — New Context Binding is Awesome
• Android Builds: Simple Recipes to Enhance Developer Productivity
• Gradle, Kotlin, Spring Skeleton — пример многомодульной сборки
• Tack Android — красивый метроном для Android
• AnimationSequence — последовательные анимации для Jetpack Compose

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

• Dart/Flutter — применяя zero/empty объекты ко всему
• Реализация простого SSE клиента на Dart
• Kotlin в GitHub Actions. Расширяем горизонты KMP
• Как я перестал бояться и полюбил компилятор Dart
• Exposing SwiftUI Views to React Native: An Integration Guide
• Deep Dive into Haptics: Enhancing User Experience through Tactile Feedback
• Develop Your Own Networking Client In Compose MultiPlatform
• Shopping list and Compose Multiplatform
• Build Gen AI Apps Fast with Firebase and Flutter: A Hands-On Starter Guide
• Leveraging Dart FFI for high-performance ML in Flutter — a practical implementation
• How to Implement Swipe Actions in Flutter with Slidable
• Flutter Routing Done Right: A Scalable Approach
• Using Platform-Specific APIs in KMP Apps
• Flutter Belgium Meetup #23
• The Ultimate React Native Course — Build Your First Mobile App in 2025

Разработка

• Как работать в разработке в условиях спада
• Разработка топ мобильной игры в соло, с нуля, без бюджета, без движка, без знания языка программирования. Начало
• Это весело и забавно… пока ваш босс не узнает про вайб-кодинг
• Нет никакого вайб-инжиниринга
• Пишем игру на LUA для часов Xiaomi Redmi Watch 4.Часть 1. Знакомство с экосистемой Xiaomi
• Отказоустойчивая распределённая архитектура для UX-аналитики
• Avito UX meetup: взаимодействие, метрики и мемы
• Полный обзор новой операционной системы HarmonyOS Next. Получилось ли?
• Профессия: cистемный аналитик
• Открытое алгоритмическое собеседование
• Deploying a Swift Server App to Fly.io and Railway
• Setting up a translation system for your Android and iOS app
• How our Meditation App Broke Records Overnight, almost crashing our servers
• WattWise: Terminal-Based Power Monitoring Using Smart Plugs
• Making Uber’s ExperimentEvaluation Engine 100x Faster
• The 13 software engineering laws
• Full 2025 Backend Dev Crash Course for Beginners With Spring Boot (Kotlin, JWT Auth, MongoDB)
• How to Survive in 2025 Tech Job Market?

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

• Протестируйте уродливый пейвол: вот почему вам стоит это сделать
• Тим Суини назвал Apple и Google «бандитскими» компаниями
• Skylight — альтернатива TikTok, созданная на основе Bluesky
• Новая игра Tinder проверяет ваши навыки флирта с ИИ-персонажами
• Apple Invites не разрушили рынок, а создали его заново
• Инди-геймдев и A/B тесты: совместить несовместимое
• Push Notifications Statistics (2025)

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

• Открываем instruct-версию YandexGPT 5 Lite
• Блокбастер на коленке с НЛО, коровами и Ван Даммом. Тестируем нейросети для видео
• Пилим игровой мультиплеерный сервер на базе esp32: завершение. Портируем игру на esp32
• Что вам нужно знать, если вы решили внедрить LLM
• Как мы пишем ML-приложения с использованием паттерна пайплайнов
• Дистанционное управление шлагбаумом с помощью MTC Exolve и GSM модуля
• Что скрывает тупой пульт в вашем умном доме
• «ИИ-агенты для начинающих» — бесплатный курс Microsoft
• Train & Weather Tracker with Raspberry Pi & E-Ink
• Code DeepSeek V3 From Scratch in Python — Full Course

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