Вернуться к блогу
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga.
Перед релизом мобильного продукта команда обычно хорошо помнит про главные сценарии: регистрацию, каталог, оплату, личный кабинет, пуши, интеграции. Все, что видно пользователю и заказчику на демо, находится в фокусе.
Но есть другой слой – менее эффектный, зато очень важный. Его часто вспоминают уже после публикации: когда пользователь не может объяснить ошибку, аналитика не показывает причину просадки, поддержка не понимает, что произошло, а новая версия выкатывается с нервами.
Я говорю о вещах, которые редко продают проект на презентации, но сильно влияют на жизнь продукта после запуска.
Самая частая ошибка – выпустить продукт и смотреть только на установки, регистрации и общую активность. Этих цифр мало.
До релиза важно предусмотреть два связанных слоя аналитики. Продуктовая показывает, как люди проходят сценарии и где теряется конверсия. Техническая помогает увидеть ошибки, предупреждения и замедления, из-за которых этот путь может прерываться.
После запуска важнее понимать путь пользователя: где он начал сценарий, где остановился, на каком шаге возникла ошибка, что он сделал после отказа. Без этого команда видит только результат, но не видит причину.
Например, конверсия в заказ снизилась. Почему? Пользователи не доходят до оплаты? Не выбирают доставку? Ошибка возникает при применении промокода? Или все ломается на конкретной версии Android?
Если события не заложены заранее, команда начинает гадать. А гадание в разработке всегда стоит дороже, чем нормальная аналитика на старте.
В Amiga мы стараемся заранее договориться, какие действия отслеживать в первой версии: старт сценария, успешное действие, ошибку, отказ, повторную попытку. Подробнее о роли аналитики до старта разработки можно почитать на странице услуги. Это не значит, что надо превращать продукт в таблицу событий. Но ключевые точки должны быть видны.
Техническая аналитика отвечает на другой набор вопросов: падает ли приложение, растет ли число предупреждений, не зависают ли экраны, достаточно ли быстро запускается приложение и отвечает сервер. Эти данные важно смотреть в разрезе версии приложения, устройства, ОС и типа соединения.
Минимальный набор для запуска – сбор ошибок и падений, технические события вокруг сбоя и основные показатели скорости: время запуска, загрузки ключевых экранов и сетевых запросов, доля зависаний. Если после релиза замедлился конкретный экран или проблема появилась только в одной версии Android, команда должна увидеть это до того, как накопятся обращения.
Связка двух слоев дает контекст. Продуктовая аналитика показывает, на каком шаге просела конверсия, а техническая – совпала ли просадка с ошибкой, предупреждением или ухудшением скорости. Это не отменяет QA и контроль качества перед релизом, но помогает быстрее реагировать после запуска.
Схема показывает два слоя аналитики: путь пользователя и техническую диагностику.
Фраза «что-то пошло не так» – почти всегда плохой вариант.
Пользователь не понимает, что случилось. Поддержка не понимает, что проверить. Команда не понимает, где искать причину. В итоге одна маленькая ошибка превращается в цепочку ручных уточнений.
Хорошее сообщение об ошибке должно отвечать хотя бы на два вопроса: что произошло и что делать дальше.
Например, если не прошла оплата, не надо просто показывать красный экран. Лучше объяснить: платеж не завершен, деньги не списаны, попробуйте другую карту или повторите попытку позже. Если не загрузились данные – показать, что можно обновить экран или проверить соединение.
Еще один слой – как ошибка уходит в систему мониторинга. Для пользователя текст должен быть человеческим. Для команды – технически полезным: код ошибки, устройство, версия ОС, сценарий, время события.
Такой слой редко заметен на красивом макете, но после релиза он спасает много времени.
На дизайне часто показывают идеальный экран: данные загрузились, карточки есть, пользователь авторизован, интернет работает. В жизни так бывает не всегда.
Кроме основного сценария, отдельно проверяют пограничные состояния:
Состояние | Что показать пользователю | Зачем это нужно |
Нет данных | Пустой экран с пояснением и следующим действием: изменить фильтр, добавить объект, повторить поиск. | Пользователь понимает, что сервис не сломан. |
Медленное соединение | Состояние загрузки, skeleton или понятный индикатор ожидания. | Человек видит, что действие принято. |
Нет интернета | Сообщение о соединении и возможность повторить запрос. | Сценарий не обрывается молча. |
Нет доступа к камере, геолокации или уведомлениям | Объяснение, зачем нужен доступ, и ссылка на настройки. | Пользователь понимает причину ограничения. |
Сессия истекла | Мягкий возврат к авторизации без потери контекста. | Снижается риск потерять незавершенное действие. |
Сервер временно недоступен | Человеческое сообщение, повторная попытка и фиксация ошибки в мониторинге. | Команда быстрее видит проблему после релиза. |
Пустой список после фильтрации | Текст, что по выбранным условиям ничего не найдено, и быстрый сброс фильтра. | Пользователь остается в сценарии. |
Это не «мелочи дизайна». Это часть пользовательского опыта.
Если пустое состояние не продумано, человек видит белый экран и думает, что сервис сломан. Если нет нормального состояния загрузки, кажется, что кнопка не нажалась. Если отказ в доступе к камере никак не объяснен, сценарий просто обрывается.
Хороший мобильный продукт ведет пользователя даже тогда, когда все пошло не по идеальному пути.
Примеры пограничных состояний интерфейса мобильного приложения.
О релизе часто думают как о финише. На практике это начало эксплуатации.
Через какое-то время появится новая версия. И тут заранее решают, как она поведет себя со старыми пользователями, устаревшими API и сохраненными данными. Отдельно проверяют авторизацию, кэш, настройки и незавершенные сценарии.
Например, пользователь начал оформление заказа в одной версии, а закончил уже после обновления. Или в новой сборке поменялась логика личного кабинета. Или старое API больше не поддерживает часть данных.
Если сценарий обновления не продуман, можно получить странные ошибки, которые сложно поймать на обычном тестировании.
Перед запуском проходят хотя бы базовые вопросы: можно ли безопасно обновиться, не потеряются ли данные, поддерживается ли предыдущая версия, что увидит пользователь при обязательном обновлении.
Важно помнить: обычное обновление пользователь может отложить или вообще не установить. Поэтому до релиза нужен механизм напоминания. Для совместимой версии подойдет мягкий экран или баннер: что изменилось, зачем обновляться, кнопки «Обновить» и «Позже». Его не стоит показывать при каждом запуске – частоту и повторный показ задают заранее.
Обязательное обновление используют отдельно – когда старая версия несовместима с сервером, содержит критическую ошибку или создает риск безопасности. В этом случае приложение должно понятно объяснить причину, сохранить доступный контекст и дать прямую кнопку перехода в стор. Команде также нужен управляемый параметр минимально поддерживаемой версии, чтобы не выпускать новую сборку ради изменения текста напоминания.
Сравнение рекомендательного и обязательного обновления мобильного приложения.
Еще один недооцененный момент – понятный путь в поддержку.
Пока продукт не опубликован, кажется, что все очевидно: если будет проблема, пользователь напишет «куда-нибудь». После запуска выясняется, что «куда-нибудь» – это отзывы в сторе, комментарии в соцсетях или личные сообщения менеджерам.
Внутри мобильного сервиса должен быть простой способ обратиться за помощью: форма, чат, почта, телефон, ссылка на базу знаний – зависит от продукта. Главное, чтобы пользователь не оставался без маршрута.
Не всегда возможно автоматически приложить к обращению весь контекст. Практичный минимум для серверных ошибок – понятный идентификатор: показать код на экране, дать скопировать его и предложить отправить в поддержку. По этому ID команда сможет найти связанный запрос и технические детали, не заставляя пользователя заново описывать все по памяти.
Хорошо, если обращение сразу содержит контекст: версия, устройство, ID пользователя, экран, на котором возникла проблема. Это сокращает время разбора и снижает нагрузку на поддержку.
Сценарий передачи кода ошибки из мобильного приложения в поддержку.
Оценки в сторах часто вспоминают слишком поздно. А первые отзывы могут сильно повлиять на восприятие продукта.
Нельзя просто в первый же день просить всех поставить пять звезд. Лучше встроить запрос аккуратно: после успешного действия, когда пользователь получил ценность и не находится в проблемном сценарии.
Например, после завершенного заказа, успешной записи, получения результата или нескольких удачных сессий. Не после ошибки и не при первом запуске, когда человек еще не успел оценить продукт. Запрос не должен появляться при каждом следующем запуске: задайте паузу и не показывайте его повторно после ответа пользователя.
С негативной обратной связью тоже лучше определиться до публикации. Если человеку есть куда написать внутри продукта, часть проблем не уйдет сразу в публичный отзыв.
В Amiga подготовка к релизу не ограничивается финальным тестом перед публикацией. Мы заранее смотрим на сценарии пользователей, события аналитики, обработку ошибок, обновления, поддержку и работу приложения в реальных условиях.
Если продукт создается с нуля, эти требования закладываются в мобильную разработку еще на этапе проектирования. Если команда готовит уже существующее решение к релизу или развитию, подключаем тестирование цифровых продуктов и проверяем, где после запуска могут появиться риски.
Такой подход помогает не просто выложить приложение в стор, а выпустить сервис, который можно поддерживать, обновлять и спокойно развивать после первых пользователей.
Перед публикацией я бы отдельно прошелся по такому списку:
Это не огромный отдельный проект. Чаще это набор решений, которые нужно не забыть включить в нормальную подготовку к запуску.
Перед запуском проверяют не только основные функции, но и аналитику, ошибки, пустые состояния, работу без интернета, мониторинг, поддержку пользователей и сценарии обновления.
Без аналитики команда видит только общий результат, но не понимает, где пользователь прерывает сценарий и почему возникают проблемы после релиза.
Продуктовая аналитика показывает, где пользователь прерывает сценарий, а техническая – не связана ли просадка с ошибкой, предупреждением или низкой скоростью работы. Вместе они помогают увидеть не только результат, но и вероятную причину.
Часто забывают состояния без интернета, отказ в доступе к камере или геолокации, истекшую сессию, пустые списки, сбои оплаты и ошибки внешних сервисов.
После запуска пользователи всё равно будут задавать вопросы. Если путь в поддержку не продуман, проблемы уходят в отзывы, соцсети или ручные обращения без нужного контекста.
Запуск мобильного приложения – это не момент, когда файл оказался в App Store или Google Play. Это момент, когда продукт начинает жить у реальных пользователей: с плохим интернетом, разными устройствами, неожиданными сценариями и вопросами в поддержку.
В Amiga мы стараемся смотреть на релиз не как на красивую дату в плане, а как на переход в эксплуатацию. Поэтому заранее обсуждаем аналитику, ошибки, мониторинг, поддержку, обновления и работу с обратной связью.
Потому что сильный мобильный продукт – это не только основной сценарий, который работает на демо. Это еще и все, что помогает ему спокойно пережить реальный запуск.