Отдал приложение первым тестерам — и в первый же день оно сломалось прямо на входе

Можно месяцами гонять приложение на своих устройствах и быть уверенным, что всё работает. Достаточно одного дня с живыми тестировщиками, чтобы от этой уверенности ничего не осталось.

Я делаю Poply — анонимный чат, где собеседника находят по настроению и интересу, а не по фото. Делаю один: бэкенд, сайт, дизайн и мобильное приложение — всё сам, без команды и инвестиций, в свободное от основной работы время. В прошлой статье я рассказывал, зачем вообще берусь за такое. Здесь — про то, как идёт работа и что случилось за последнюю неделю.

Короткий контекст для тех, кто не читал: веб-версия уже несколько месяцев крутится на poply.chat, через неё прошло больше двух тысяч человек, на маркетинг я потратил 0 рублей. Идея проверку прошла, и теперь все силы — в мобильное приложение. На этой неделе оно наконец доехало до закрытого тестирования.

Дошёл до закрытого тестирования

Чтобы опубликовать приложение в Google Play, нужно собрать минимум 12 тестировщиков и продержать закрытый тест какое-то время — только после этого стор пускает релиз. Я написал, что ищу людей, готовых потыкать раннюю версию, и их набралось быстрее, чем я ожидал. Спасибо всем, кто отозвался.

А дальше началось самое полезное.

Первый день сломал вход в приложение

Самый обидный баг вылез сразу. При первой установке новый пользователь регистрируется анонимно — выбирает пол и диапазон возраста в небольшом окне. И ровно поверх этого окна система показывала свой запрос на разрешение уведомлений. Он перекрывал выбор так, что дальше пройти было нельзя: приложение оставалось нерабочим до перезапуска. То есть спотыкался об это каждый, кто ставил приложение впервые.

Второй баг: на части устройств внутри чата поверх поля ввода вылезала галерея и закрывала его. Плюс визуальные мелочи — неправильные срабатывания нажатий, кривые иконки и так далее.

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

Это, наверное, главный вывод недели, хоть и очевидный: сколько ни тестируй сам, первый день с живыми людьми покажет то, что ты не увидел бы никогда.

Чего просят живые люди

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

Поиск по интересам и свои игры

Отдал приложение первым тестерам — и в первый же день оно сломалось прямо на входе

Вторая большая вещь за неделю — на стороне сервера. Я добавил поиск по интересам.

Интересов много и они разные: игры, языки, кино, спорт, аниме, книги, прогулки и так далее. Можно выбрать сразу несколько направлений — скажем, и игры, и язык — и искать людей, которые совпадают с вами хотя бы по части из них.

Внутри направления всё ещё конкретнее. Возьмём игры: можно отметить сразу несколько (WoW, Dota 2, CS2) или вписать свою, если её нет в списке, — хоть Anno 1800. Тогда система в первую очередь ищет тех, кто указал ту же игру, то есть реальных напарников, а не просто "кого-нибудь".

Со своими играми есть задумка на будущее. Сейчас игра, вписанная руками, работает только для вас. Дальше хочу сделать так, чтобы добавленные игры попадали в общий список на сервере и становились видны другим: кто-то впишет свою любимую — и через неё найдутся люди, которые давно искали такого же напарника.

Лестничный поиск: как искать, когда людей мало

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

Лестничный поиск решает это постепенным расширением. Допустим, вы ищете "общение, игры: WoW". Если за 30 секунд никого нет, система расширяет запрос сама: сначала до "игры: любые", потом просто до "общение". Начинаете вы с самого точного варианта, а чем дольше ждёте — тем шире круг и тем выше шанс с кем-то совпасть. Для остальных направлений лестница работает примерно так же: от узкого к общему.

Есть исключение. Интерес "прогулки" по ступеням не расширяется: тут важен конкретный город, и подставлять соседние бессмысленно — человек хочет погулять у себя, а не за сотни километров.

Лестницу можно и отключить, чтобы искать строго по своему запросу. Но тогда, пока людей мало, поиск может затянуться — будем реалистами.

Приложение работает без интернета

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

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

Автозагрузку фото и видео при этом можно выключить — для этого есть отдельный экран "управление данными и памятью". Удобно, если не хочется тратить мобильный трафик или забивать память телефона.

Как устроены диалоги, простыми словами

Список чатов и сами переписки тоже хранятся на телефоне — и это не только про офлайн. Благодаря этому приложение открывается мгновенно: заходишь и сразу видишь все свои диалоги и последние сообщения, ничего не нужно ждать и подгружать.

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

Что ещё изменилось за неделю

Остального много, поэтому коротко.

Сайт я подтянул под мобильное приложение — раньше веб и мобилка выглядели как два разных продукта. Переписал дизайн и логику диалогов, добавил альбомы фото и видео, сетку фотографий, заново сделал сообщения — отвечать на них в браузере стало удобнее. Появилась жалоба на сообщение: если оно нарушает закон или правила сервиса, пользователь получает бан. Добавил время последнего посещения, а в профиль — возможность его скрыть, сменить почту и пароль, удалить аккаунт и небольшую статистику: сколько было знакомств, сколько чатов сохранено и сколько дней ты пользуешься сервисом.

По дизайну приложения: шапка в чате больше не выглядит как одна сплошная плашка — кнопки и блоки теперь отдельные, так интерфейс читается спокойнее. Сообщения, которые уходят за край экрана, получили затемнение и блюр (на iOS). И появился отдельный экран управления оформлением, где можно будет отключить эффект линзирования на iOS 26+.

Неделя вышла плотная. Дальше — добивать баги из теста и разбирать пожелания.

Если у вас есть вопросы или пожелания — пишите в комментарии или в мой телеграм-канал @poply_chat, там я рассказываю, что получается и что ломается по дороге. Буду стараться учитывать каждое пожелание.

1