Force Update vs Soft Update

Два механизма решают разные задачи:

Force update (принудительное): приложение при запуске проверяет версию и при несоответствии минимально допустимой — блокирует доступ полностью. Пользователь видит экран с кнопкой «Обновить» и не может продолжить работу без обновления.

Soft update (рекомендательное): приложение показывает баннер или диалог с предложением обновиться, но пользователь может его закрыть и продолжать работу.

Когда применять force update

Force update — жёсткое решение с реальными потерями. Применять только при наличии весомых оснований:

Ситуация Force / Soft
Критическая уязвимость безопасности Force
Несовместимое изменение API (500-ошибки в старой версии) Force
Требование платёжного процессора (PCI DSS) Force
Новые функции и улучшения Soft
Исправление UI-багов без критичных последствий Soft
Устаревший SDK третьей стороны Зависит от критичности

Техническая реализация

Стандартная схема через Remote Config:

Старт приложения
       ↓
Запрос к Remote Config / endpoint
       ↓
min_required_version = "2.5.0"
current_version = "2.3.1"
       ↓
current < min? → Показать force update screen
                 → Редирект в App Store / Google Play

Remote Config (Firebase Remote Config, собственный сервер) позволяет менять min_required_version в реальном времени без нового релиза. Это важно: если новая версия оказалась нестабильной — можно откатить min_version обратно.

Важно: Всегда тестируйте force update screen перед его активацией. Распространённая ошибка — экран с кнопкой «Обновить», которая ведёт на неверный URL или не работает на части устройств.

Влияние на бизнес-метрики

Force update неизбежно вызывает отток части аудитории:
— Пользователи с медленным соединением могут не завершить загрузку
— Устройства с заполненной памятью не обновятся
— Пользователи без автообновления могут не заметить апдейт в фоне

Рекомендуемая стратегия: за 2–4 недели до активации force update запустить soft update. Это даёт аудитории время подготовиться и существенно снижает разовый пик оттока.