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

iOS

- Настраиваем работу с iOS-проектами в Zed
- Расследуем дело асинхронного программирования с Леонидом Каневским
- Как 40 строк кода ускорили End to End тесты на iOS более чем на 50%
- SwiftUI. Навигация по строке в разделяемом координаторе
- Исследуем мир фото и видео редакторов
- Найди и исправь ошибки в коде — Задачи с собеседования
- Запускаем приложения на своем iOS-симуляторе
- Осторожно, Combine!
- Позаботимся о памяти при использовании value-типов
- Swift – больше, чем язык для iOS
- WWDC 25 пройдет с 9 по 13 июня 2025
SwiftUI TabView: Explained with Code Examples Public-key cryptography with CryptoKit for iOS The Composable Architecture: How Architectural Design Decisions Influence Performance Strategies to avoid merge conflicts in Xcode Projects Creating and Using Protocols in Swift Awaiting multiple async tasks in Swift The Simple Life(cycle) of a SwiftUI View in 2025 Clean Up Your Sheet API OptionSet vs. enum in Swift: A Deep Dive with Use Cases SwiftUI MVVM Explained (Beginner Friendly) My checklist before submitting a new app to App Store Connect Beyond Video Transcription: How to work with Videos in Gemini 2.5 Pro Experimental in Swift How to turn a SwiftUI color into a gradient Designing for Apple Intelligence: Extending your app features to the system The Vibe Shift Amongst Apple Developers Detecting Barcodes on an image with the Vision Framework Using StoreKit’s ExternalPurchaseLink Building Flexible, Styled ListItems in SwiftUI Optimize your Swift test suite to run faster Videos from Swift Heroes 2024 Staggered Animated View Using SwiftUI Advanced SwiftUI Animations — PhaseAnimator A case for Custom Bindings in SwiftUI: Essential Tips and Tricks VoiceMemos Waveform Audio Scrubber Using SwiftUI — Waveform Visualization Step By Step — счетчик шагов с геймификацией AestheticText — строки равной ширины
Android
- Хакнуть Qt: как мы запускали Picture-in-Picture в навигаторе 2ГИС
- Как мы ускоряли Android-сборку «селлера»
- Топ-7 утечек памяти Android и как их избежать
- Dagger 2 и жизненный цикл
- Сценарии использования ServerSocket
- Как работать с Custom Layout в Jetpack Compose
- Основы цветовой системы Material3 для Android-разработчиков
- Как мы следим за качеством unit-тестов
- Kotlin и Jetpack Compose: портируем DOOM на смарт-часы
- ServerSocket на Android в пределах одной сети
- Практический GrapheneOS для параноиков
- Корутины Kotlin: быстрый старт
- С заботой о комфортном просмотре: как команда VK справляется с высокой нагрузкой на видеоплеер на Android-устройствах
- Распутываем легаси-код на Android проекте
- Почему вам стоит включить Gradle Configuration Cache
- Интеграция GeckoView в Dynamic Feature
- Последнее слово в Android-навигации
- Google будет разрабатывать Android в закрытом режиме
- Google укрепляет экосистему Android
OpenAI vs. DeepSeek: Which AI Understands Kotlin Better? Exploring Jetpack Compose: SearchBar UseCases: Injectable Functions A new way of handling one-off events in your Android application (and even more) Understanding Notifications in Android: A Developer’s Guide Understanding ViewModel Scoping in Jetpack Compose Six Ways to Start a Coroutine in Kotlin, Ranked Compose Hot Reload is Now Available Android Context — Part 2: The Android Internals Deep Dive 10 Kotlin Coroutine Mistakes Seniors Should Avoid How to Automatically Test Jetpack Compose Navigation 3 neat animations you can create with Modifier.animateBounds Setting Up Dependency Injection Using Anvil: A Step-by-Step Guide Introduction to the SDK Runtime How to Refactor Legacy Android Code With a Clear Step-By-Step Approach Applying the Observer Pattern in Kotlin Validating the chaos of RSS feeds with JetBrains’ Junie & some domain modeling sorcery MCP Kotlin SDK — Kotlin-реализация Model Context Protocol Scratchify — скретч-карты на Jetpack Compose Multiplatform
Кроссплатформа
- Автоматизация версионирования в Kotlin Multiplatform: Решение для Android и iOS
- Kotlin не для Android
- Как мы делали суперапп «Дилер онлайн», и что из этого получилось
- Совместная работа Kotlin/Native GC и ARC в iOS
Streamline your KMP development with Pale Blue KMP Core From an Android to a Kotlin Multiplatform library Stunning Animations with Custom Fragment Shaders 10 Principles for Writing Clean Code in Dart Integrating Native Swift Code in a Kotlin Compose Multiplatform App Integrating GraphQL in Compose Multiplatform project
Разработка
- «Давайте просто…»: системные идеи, которые звучат хорошо, но почти никогда не работают
- Как я «взломал» популярное приложение и добыл корпоративный токен OpenAI
- Самые высокооплачиваемые вакансии марта в сфере разработки приложений
- Забытые концепции прошлого: как Дзен Palm взрастил лучшую мобильную ОС и приложения для неё более 25 лет назад?
- Основные принципы создания иконок
- Сделай удобно: подборка UI/UX-кейсов из цифровых и нецифровых продуктов
- Правовой статус кода
- Пишем рекомендательную систему музыки на Java
- Задача из Моего Собеседования в Amazon
- Ада Лавлейс и программирование
- Осознанный подход к метрикам
Revenge of the junior developer Cracking the code of vibe coding Getting Started with TDD: A Practical Guide to Beginning a Lasting Practice The role of developer skills in agentic coding How Apple Pay Handles 41 Million Transactions a Day Securely Mocking Star — мощный инструмент мокирования запросов Blocks — крошечный клон Minecraft на C и GLSL ttyd — шаринг терминала через веб
Аналитика, маркетинг и монетизация
- Установки Signal после скандала выросли на 28%
- ЕС закроет антимонопольное расследование в отношении экрана выбора браузера Apple
- Arcade переходит в ИИ создании от ювелирных изделий к товарам для дома