Ссылка открыла приложение. Почему человек не попал туда?

Ссылка на профиль открывает нужный экран. Команда проверила адрес, переход работает. Затем человек нажимает «Назад» и выходит из приложения: профиль оказался единственной страницей в навигационном стеке.

Для проверки диплинка часто достаточно факта открытия цели. Для человека — нет. Он хотел посмотреть профиль и продолжить работу, а не снова искать вход в приложение.

В условном адресе /profiles/42 есть идентификатор цели. Но там нет ответа, что должно находиться под профилем: главный экран, список людей или пространство команды. Этот ответ относится к продукту, а не к парсеру URL.

Для одного сценария можно записать явный маршрут: Главная → Профиль. Первый Back вернёт на главную. Это не универсальное правило: карточке товара может требоваться каталог, сообщению — переписка. Родительский экран нужен не для того, чтобы искусственно удерживать человека в приложении, а чтобы дать ему понятное продолжение.

При уже открытом приложении решение становится сложнее. Если человек редактирует несохранённую заявку, а ссылка из уведомления заменяет весь стек, возврат к работе может исчезнуть. Тогда нужно заранее выбрать: сохранить текущую задачу под новой страницей, предложить сохранить черновик или действительно заменить маршрут. У каждого варианта другой результат первого Back.

Практическое требование к классу ссылок можно уложить в три вопроса: куда открываем, куда ведёт первый Back, что делаем с уже начатой задачей? После этого проверять надо не один скриншот, а последовательность действий на холодном и тёплом запуске.

Источник ссылки тоже не должен незаметно менять смысл маршрута. Один и тот же профиль можно открыть из браузера, QR-кода или уведомления. После разбора адреса приложение получит одну цель, но разные обработчики входа нередко собирают разные стеки. Если возврат из push действительно должен отличаться, это отдельное продуктовое решение. Если нет — разница станет дефектом, который трудно увидеть при тестировании каждого источника по отдельности.

Есть и противоположная ошибка: воспроизвести историю, которой не было. Человек пришёл извне, а Back ведёт его в список профилей, будто он только что выбирал запись в этом списке. Иногда список — полезное продолжение. Иногда главная будет честнее. Требование к родителю определяется следующим действием пользователя, а не желанием получить красивую схему навигации.

В Ark Navigation такой выбор можно выразить через stackPlanBuilder: приложение явно задаёт Home → Profile, и навигация применяет план. Без планировщика пакет создаёт только целевой экран; родителя он не угадывает. Локальная проверка подтвердила построение стека и первый pop, но не проверяла системный Back на устройствах Android и iOS.

Отдельно нужно разобрать ссылку на удалённый или закрытый профиль. Молчаливый перевод на главную маскирует проблему. Неизвестный адрес и известная цель без доступа — разные исходы, требующие разных объяснений.

Полный инженерный разбор с кодом и границами проверки — ArkTelos Lab. Об экосистеме — ArkTelos. Каналы лаборатории: RU | EN.

Ссылка открыла приложение. Почему человек не попал туда? | Сетка — социальная сеть от hh.ru