110 статей для Middle Mobile-разработчика: большая подборка
Материалы для самостоятельной разработки мобильных приложений: архитектура, состояние, offline-first, производительность, автотесты, CI/CD, безопасность и аналитика.
Архитектура Android
- Jetpack Compose — как легко построить UI на Android
Чтобы принимать устойчивые архитектурные решения.
- Jetpack Compose для Android TV: как происходит перемещение фокуса
Чтобы принимать устойчивые архитектурные решения.
- Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения
Чтобы принимать устойчивые архитектурные решения.
- Как работать с Custom Layout в Jetpack Compose
Чтобы принимать устойчивые архитектурные решения.
- Как использовать Kotlin Multiplatform ViewModel в SwiftUI и Jetpack Compose
Чтобы принимать устойчивые архитектурные решения.
- Погружаемся в Compose-Verse — руководство по Jetpack Compose для начинающих: управление состоянием
Чтобы принимать устойчивые архитектурные решения.
- Библиотека «Jetpack Compose» для начинающего Android-разработчика
Чтобы принимать устойчивые архитектурные решения.
- Jetpack Compose — сила Android-разработки
Чтобы принимать устойчивые архитектурные решения.
- Figma2Android: Как мы делали плагин для Figma, чтобы ускорить разработку интерфейсов в Jetpack Compose
Чтобы принимать устойчивые архитектурные решения.
- Compose. Jetpack Compose
Чтобы принимать устойчивые архитектурные решения.
- Навигация в Jetpack Compose без магии: что на самом деле делают библиотеки навигации
Чтобы принимать устойчивые архитектурные решения.
- Пять ошибок при работе с Jetpack Compose, из-за которых тормозит recomposition
Чтобы принимать устойчивые архитектурные решения.
- Jetpack Compose как unbundled-библиотека. Скорость UI vs. Гибкость разработки
Чтобы принимать устойчивые архитектурные решения.
Архитектура iOS
- MVVM на основе Combine в UIKit и SwiftUI приложениях для UIKit разработчиков
Чтобы принимать устойчивые архитектурные решения.
- Разделяй и властвуй. Модульное приложение из монолита на Objective-C и Swift
Чтобы принимать устойчивые архитектурные решения.
- Пишем декларативный Package.swift: DSL для модульной архитектуры iOS проекта
Чтобы принимать устойчивые архитектурные решения.
- Как я бросила двустороннюю архитектуру и ушла к Redux со SwiftUI и SwiftData
Чтобы принимать устойчивые архитектурные решения.
- Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)
Чтобы принимать устойчивые архитектурные решения.
- Архитектура SwiftUI + VIPER: модульный подход к разработке iOS‑приложений
Чтобы принимать устойчивые архитектурные решения.
- Архитектурные паттерны в iOS: привет от дядюшки Боба, или Clean Architecture
Чтобы принимать устойчивые архитектурные решения.
- Разбор архитектуры VIPER на примере небольшого iOS приложения на Swift 4
Чтобы принимать устойчивые архитектурные решения.
- Как заставить крутиться таймер – инструкция для iOS-разработчиков
Чтобы принимать устойчивые архитектурные решения.
- Творческая переработка MVVM и TCA на примере iOS
Чтобы принимать устойчивые архитектурные решения.
- Как правильно организовать проект c модульной архитектурой в iOS-разработке
Чтобы принимать устойчивые архитектурные решения.
- Роутинг для iOS: универсальная навигация без переписывания приложения
Чтобы принимать устойчивые архитектурные решения.
- Навигация на SwiftUI: чего не хватает и как исправить
Чтобы принимать устойчивые архитектурные решения.
Flutter и React Native в production
- State-менеджмент «из коробки» во Flutter: эффективная альтернатива BLoC и Riverpod
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Как мы переписали мобильное приложение с React Native на Flutter
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Сравнение React Native и Flutter с точки зрения их применения в реальных проектах
Чтобы собирать интерфейс из переиспользуемых компонентов.
- React Native тормозит? Проверь эти 8 узких мест в производительности, прежде чем винить фреймворк [ЧЕК-ЛИСТ]
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Flutter в своей продакшн-эре и другие откровения на Flutter in Production
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Компонентная архитектура приложений на Flutter: почему выбрать BLoC недостаточно
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- React Native is better than Flutter*
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Cтейт-менеджмент на Flutter. Введение в Bloc
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Road to Flutter – анализ опыта миграции с React Native
Чтобы собирать интерфейс из переиспользуемых компонентов.
- WASM vs JavaScript 2026 — проверка на Flutter Web
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Flutter — для веб приложений, Jaspr — для веб сайтов
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Как мигрировать Flutter-приложение на SPM — гайд с граблями, костылями и скриптами
Чтобы создавать интерфейсы из переиспользуемых компонентов.
- Подстраиваемся под новые требования Google: переходим на 16 KB memory page (гайд для разработчиков React Native)
Чтобы собирать интерфейс из переиспользуемых компонентов.
Состояние и зависимости
- Как следить за состоянием мобильного приложения?
Чтобы контролировать данные и связи модулей.
- Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru
Чтобы контролировать данные и связи модулей.
- Современный способ организации зависимостей в Android. Version catalog и Gradle convention plugin
Чтобы контролировать данные и связи модулей.
- Простой, но масштабируемый State Management для Flutter
Чтобы контролировать данные и связи модулей.
- React Native iOS Push Notifications: почему push не сохраняются в background/killed state
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Ciklum Speakers' Corner “How to save money on QA — Dependency Injection and automated testing on Android”, 29 мая, Киев
Чтобы контролировать данные и связи модулей.
- Hilt+Retrofit+Coroutine
Чтобы контролировать данные и связи модулей.
- jugger – внедрение зависимостей как в Android
Чтобы контролировать данные и связи модулей.
- Практическое руководство по использованию Hilt с Kotlin
Чтобы контролировать данные и связи модулей.
- Будущее внедрения зависимостей в Android
Чтобы контролировать данные и связи модулей.
- Проверка внедрения зависимостей на Swift
Чтобы контролировать данные и связи модулей.
- Управляем зависимостями в iOS-приложениях правильно: Знакомство с Typhoon
Чтобы контролировать данные и связи модулей.
- Управление зависимостями в iOS-приложения на Swift со спокойствием
Чтобы контролировать данные и связи модулей.
Сеть, offline-first и синхронизация
- Offline First в мобильных приложениях. Кэширование
Чтобы приложение работало без стабильной сети.
- Работа с данными в мобильных приложениях. Реализуем offline хранилище и синхронизацию данных используя Microsoft Azure и SQLite
Чтобы приложение работало без стабильной сети.
- Сетевой слой iOS‑приложения
Чтобы приложение работало без стабильной сети.
- Offline First в мобильных приложениях. CRUD на стороне клиента
Чтобы приложение работало без стабильной сети.
- Настройка Workbox Background Sync для совместимости с iOS и Android WebView
Чтобы приложение работало без стабильной сети.
- Синхронизация данных Carbonio Community Edition с почтовыми клиентами и мобильными устройствами по протоколу CalDAV
Чтобы приложение работало без стабильной сети.
Данные и производительность
- Блеск и нищета key-value базы данных LMDB в приложениях для iOS
Чтобы находить узкие места и ускорять систему.
- Flutter Widget Previewer: разработка UI без запуска приложения
Чтобы находить узкие места и ускорять систему.
- Память в Swift
Чтобы находить узкие места и ускорять систему.
- Анализ производительности React Native приложений: как выявить проблемы и улучшить перформанс
Чтобы собирать интерфейс из переиспользуемых компонентов.
- Путь к стабильности: как мы снизили потребление оперативной памяти в iOS-приложении
Чтобы находить узкие места и ускорять систему.
- Как не забросить свой пет-проект. Мой кейс запуска приложения в App Store
Чтобы находить узкие места и ускорять систему.
- О производительности Android-приложений
Чтобы находить узкие места и ускорять систему.
- Оптимизация Flutter-приложения: списки, build() и утечки памяти
Чтобы находить узкие места и ускорять систему.
- Сравнение производительности Xamarin (monodroid) и Java (DalvikVM) на Android устройствах
Чтобы находить узкие места и ускорять систему.
- Как не потерять голову (и память) при поиске утечек в iOS
Чтобы находить узкие места и ускорять систему.
- Как портировать SDK Flutter на ТВ-приставку для разработки и запуска приложений Android TV
Чтобы находить узкие места и ускорять систему.
- Как мы ускорили запуск приложения Dropbox для Android на 30 %
Чтобы находить узкие места и ускорять систему.
- Как сократить время запуска приложений под iOS
Чтобы находить узкие места и ускорять систему.
Автоматизированное тестирование
- От ручного тестирования к автоматизированному: пишем compose UI-тест под Android
Чтобы находить ошибки до выпуска продукта.
- Синергия E2E и скриншотных тестов: создание надежной системы тестирования iOS с помощью XCTest
Чтобы находить ошибки до выпуска продукта.
- Внедряем Snapshot testing в UI-тесты iOS
Чтобы находить ошибки до выпуска продукта.
- Snapshot тесты для iOS. быстро, стабильно на Metal
Чтобы находить ошибки до выпуска продукта.
- XCUITest для начинающих: как сделать тестирование iOS красивым с Allure
Чтобы находить ошибки до выпуска продукта.
- 250 тестов вручную? Нет, спасибо. Автоматизируем screenshot-тестирование через Compose Preview
Чтобы находить ошибки до выпуска продукта.
- Быстрее, чище, стабильнее: как мы ускорили UI-тесты в iOS в 2,5 раза
Чтобы находить ошибки до выпуска продукта.
- Rafinad: сахар для UI-тестирования iOS-приложений
Чтобы находить ошибки до выпуска продукта.
- Ускоряем прохождение iOS UI-тестов. Часть 1. Запуск тестов без сборки проекта
Чтобы находить ошибки до выпуска продукта.
- Как устроено автоматическое тестирование в Почте Mail.Ru под iOS
Чтобы находить ошибки до выпуска продукта.
- Про тестирование мобильных приложений. Часть 4. Интеграционное тестирование
Чтобы находить ошибки до выпуска продукта.
- Про тестирование мобильных приложений. Часть 2. Unit tests
Чтобы находить ошибки до выпуска продукта.
- Два по цене одного: snapshot-тесты на основе SwiftUI Preview
Чтобы находить ошибки до выпуска продукта.
CI/CD и выпуск приложения
- Автоматизация метаданных App Store и Google Play с fastlane и Azure Pipelines
Чтобы автоматизировать проверки и выпуск изменений.
- Альтернативы Google Play и App Store или как живет Китай без Google Play
Чтобы автоматизировать проверки и выпуск изменений.
- По следам публикации в Google Play/App Store/ Steam Greenlight
Чтобы автоматизировать проверки и выпуск изменений.
- Эксперимент: бесплатно переводим кейворды и описание приложений для App Store и Google Play в обмен на статистику
Чтобы автоматизировать проверки и выпуск изменений.
- Опыт публикации Андроид приложения в Google Play независимым разработчиком в 2024 году
Чтобы автоматизировать проверки и выпуск изменений.
- Наш опыт публикации мобильных приложений. Часть 1: AppStore и Google Play
Чтобы автоматизировать проверки и выпуск изменений.
- 7 основных причин, почему блокируют приложения в Google Play и AppStore
Чтобы автоматизировать проверки и выпуск изменений.
- Есть ли жизнь без Google Play? Альтернативы и обновление приложений
Чтобы автоматизировать проверки и выпуск изменений.
- Видео для Google Play: интерфейс, анимация или видеосъемка?
Чтобы автоматизировать проверки и выпуск изменений.
- Приложение «ВКонтакте» удалено из Google Play по просьбе правообладателей музыкального контента
Чтобы автоматизировать проверки и выпуск изменений.
- Android'мания: за четыре года доходы Google Play выросли более чем в 35 раз
Чтобы автоматизировать проверки и выпуск изменений.
- Поисковая оптимизация для AppStore и Google Play или ASO
Чтобы автоматизировать проверки и выпуск изменений.
Безопасность, аналитика и стабильность
- Tracer спустя год: новые фичи и возможности инструмента для аналитики ошибок в мобильных приложениях
Чтобы снизить риски и защитить систему.
- Crash-crash, baby. Автоматический мониторинг фатальных ошибок мобильных приложений
Чтобы снизить риски и защитить систему.
- Обход средств защиты в iOS-приложениях
Чтобы снизить риски и защитить систему.
- Прямая без препятствий. Часть 2. Защита мобильных приложений — выход найден?
Чтобы снизить риски и защитить систему.
- Безопасность iOS-приложений: гайд для новичков
Чтобы снизить риски и защитить систему.
- Ошибки не должны быть безмолвными: Sentry, Firebase Crashlytics и Datadog в одном Flutter‑приложении
Чтобы снизить риски и защитить систему.
- Another client side: безопасность мобильных приложений глазами атакующего
Чтобы снизить риски и защитить систему.
- Всё, что нужно знать об Android 15: архивирование, защита данных и новые API
Чтобы снизить риски и защитить систему.
- Фокус на безопасность мобильных приложений
Чтобы снизить риски и защитить систему.
- Защита iOS-приложений от реверс-инженеринга
Чтобы снизить риски и защитить систему.
- Шорт-лист мифов о безопасности мобильных приложений и неприкрытая правда
Чтобы снизить риски и защитить систему.
- Аналитика мобильных приложений на Flutter. Часть 2. Подключение Firebase Analytics
Чтобы снизить риски и защитить систему.
- Защита персональных данных в мобильных приложениях: как не нарушить закон
Чтобы снизить риски и защитить систему.
Планирование разработки
- Планирование проекта
Чтобы выбрать приоритеты и согласовать действия.