objc-retain.com

Каталог объектов недвижимости в мобильном приложении: UX и интеграции

Мобильные решения
Каталог объектов недвижимости в мобильном приложении: UX и интеграции

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

В российском PropTech каталог часто становится ядром клиентского пути: от первого поиска до ипотеки, записи на осмотр и приёмки. Поэтому сильный каталог — это одновременно UX-задача, интеграционная задача и бизнес-инструмент. За годы работы с Objective-C и iOS-разработкой я привык смотреть на такие вещи через призму управления памятью и архитектуры данных: если данные не синхронизированы, а интерфейс тормозит, даже самый красивый дизайн не спасёт.

Что должен делать хороший каталог недвижимости

Хороший каталог закрывает три сценария:

  • помогает быстро найти подходящий объект;
  • даёт достаточно информации для сравнения;
  • переводит пользователя в следующий шаг без потерь.

На практике это значит, что каталог должен работать не как «витрина», а как управляемая воронка. Пользователь должен понимать:

  • что за объект перед ним;
  • чем он отличается от других;
  • как быстро проверить актуальность цены и наличия;
  • что сделать дальше: сохранить, сравнить, забронировать, связаться с менеджером.

Если этого нет, каталог превращается в красивый, но бесполезный альбом. В одном проекте мы встроили кнопку «Забронировать» прямо в карточку списка — без перехода на детальную страницу. Это сократило путь от просмотра до заявки на 40%, потому что риэлтору больше не нужно было делать лишний тап. Но для этого пришлось решить непростую задачу: мгновенно проверять статус объекта через API и блокировать кнопку, если лот только что ушёл. Здесь пригодился опыт работы с многопоточностью в iOS: фоновый запрос с обработкой ответа в главном потоке и аккуратное обновление ячейки через NSManagedObjectContext, чтобы не словить краш из-за гонки данных.

Пользовательские сценарии: кто и зачем открывает каталог

Перед проектированием важно разделить аудиторию. В недвижимости один и тот же каталог используют разные люди, и у каждого свой сценарий.

1. Покупатель квартиры

Ищет объект по цене, району, сроку сдачи, этажу, планировке, ипотеке. Ему важна визуальная простота и быстрые фильтры, чтобы не потеряться в сотнях вариантов.

2. Риэлтор или брокер

Сравнивает лоты, проверяет остатки, быстро подбирает варианты под запрос клиента. Часто работает на ходу, с телефона в одной руке, поэтому интерфейс должен быть адаптирован под большие пальцы и минимум жестов. Мы делали отдельную роль в приложении: у риэлтора в списке сразу видны ключевые параметры для сравнения, а избранное синхронизируется между устройствами, чтобы можно было начать подбор в офисе и продолжить на встрече.

3. Менеджер отдела продаж

Использует каталог как внутренний рабочий инструмент: брони, статусы, шахматка, доступность, акции. Здесь критична актуальность данных в реальном времени. Помню, как мы подключали WebSocket для мгновенного обновления статусов: когда менеджер в CRM менял статус лота на «забронирован», в приложении карточка сразу подсвечивалась красным. Это исключило двойные брони и скандалы с клиентами.

4. Собственник или житель

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

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

UX-каркас каталога: что обязательно должно быть на экране

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

Базовые элементы

  • поиск по проекту, адресу, корпусу или номеру объекта;
  • фильтры по ключевым параметрам;
  • сортировка;
  • карточка объекта;
  • избранное;
  • сравнение;
  • карта или визуальная схема;
  • быстрый переход к броне или заявке.

Что показывать в карточке

Минимально полезная карточка обычно включает:

  • название проекта;
  • тип объекта;
  • цену;
  • площадь;
  • комнатность;
  • этаж;
  • срок сдачи или готовность;
  • статус: свободен, забронирован, продан;
  • 1–3 ключевых преимущества.

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

Хорошая практика

Пользователь должен видеть в списке только то, что помогает отсеять неподходящие варианты. Все остальное уходит в детальную страницу. В Objective-C мы часто использовали NSFetchedResultsController для эффективного отображения больших списков: он подгружает данные по мере скролла и автоматом обновляет UI при изменениях в Core Data. Это спасало от лагов даже на старых iPhone.

Фильтры: где проходит грань между удобством и перегрузкой

Фильтры — самый критичный элемент каталога. Именно здесь чаще всего ломается UX. Помню случай: заказчик настоял на фильтре «окна на юг», но данные по ориентации окон были заполнены только для 30% объектов. В результате пользователи применяли фильтр, получали пустую выдачу и думали, что приложение сломано. Мы быстро убрали этот фильтр из быстрого доступа и показывали его только при наличии данных — доверие восстановилось.

Какие фильтры реально нужны

  • цена;
  • площадь;
  • комнатность;
  • этаж;
  • срок сдачи;
  • тип дома;
  • отделка;
  • ипотека;
  • район или метро;
  • наличие балкона, террасы, парковки;
  • вид на карту или корпус.

Какие фильтры стоит добавлять только при наличии данных

  • окна на определенную сторону света;
  • высота потолков;
  • видовые характеристики;
  • тип санузла;
  • условия рассрочки;
  • особенности планировки.

Если данных нет или они заполняются нерегулярно, фильтр только создаст пустые состояния и недоверие к приложению. Технически мы решали это так: перед отображением фильтра делали запрос к агрегирующему слою, который возвращал список доступных значений и количество объектов по каждому. Если значение отсутствовало или счетчик был нулевым, фильтр скрывался. Это требовало аккуратной работы с многопоточностью в iOS: запросы уходили в фоновый поток, а UI обновлялся через dispatch_async на main queue, чтобы не тормозить интерфейс.

Ошибка, которую часто допускают

Слишком много фильтров сразу. Пользователь не хочет «настраивать систему», он хочет быстро выбрать квартиру. Поэтому в мобильном приложении полезно делать:

  • несколько быстрых фильтров сверху;
  • расширенные параметры в отдельной панели;
  • сохранение последнего набора фильтров;
  • понятный сброс без потери сценария.

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

Таблица: что важнее всего в каталоге на мобильном устройстве

Этот чек-лист мы используем при аудите каталогов. В мобильной среде особенно важна скорость отклика фильтров и поиска, поэтому каждый пункт проверяем не только на соответствие бизнес-требованиям, но и на производительность.

Элемент Зачем нужен Что проверить
Поиск Быстрый вход в нужный объект Работает ли по названию, адресу, корпусу
Фильтры Сокращают выбор Понятны ли значения, не перегружен ли экран
Карточка Помогает сравнивать Видна ли цена, площадь, статус
Избранное Возвращает пользователя Сохраняется ли между устройствами
Сравнение Упрощает выбор Можно ли сравнить 2–4 объекта без лишних шагов
Карта/генплан Помогает ориентироваться Не теряется ли пользователь между схемой и списком
Статусы Показывают актуальность Обновляются ли они в реальном времени
CTA-кнопки Переводят к действию Ясно ли, что будет после нажатия

Добавлю от себя: обязательно проверяйте, как ведёт себя каталог при медленном интернете. Мы однажды обнаружили, что при Edge-соединении фильтры применялись с задержкой в 5 секунд, потому что каждый раз уходил запрос на сервер. Решили кэшированием доступных значений фильтров на клиенте и инкрементальной подгрузкой результатов.

Интерактивная схема, карта или список: что выбрать

Универсального ответа нет. Формат зависит от продукта и стадии покупки.

Когда лучше список

  • большая база объектов;
  • пользователь сравнивает много параметров;
  • важна скорость поиска;
  • приложение используется в пути, на встрече, в офисе продаж.

Когда лучше карта

  • важна локация;
  • объекты сильно завязаны на район;
  • пользователь выбирает между несколькими ЖК;
  • нужно показать инфраструктуру.

Когда нужен интерактивный генплан

  • продажа квартир в новостройке;
  • нужен выбор корпуса, секции, этажа, лота;
  • важна визуализация доступности.

На российском рынке интерактивные генпланы стали стандартом для многих девелоперских приложений, потому что они сокращают путь от «посмотреть» до «выбрать конкретную квартиру». Мы реализовали такой генплан для одного ЖК: пользователь мог тапнуть на корпус, затем на этаж, затем на квартиру — и сразу видеть карточку с ценой и статусом. Технически это была кастомная вьюха на UIKit, где каждый этаж — отдельный слой, а квартиры — кнопки с подсветкой статуса. Чтобы не грузить все этажи разом, мы подгружали данные по мере зума и скролла, а для плавности использовали CADisplayLink и асинхронную отрисовку. Синхронизация статусов шла через WebSocket, и если квартира бронировалась, её цвет менялся мгновенно у всех пользователей. Это был тот случай, когда управление памятью в Objective-C с ARC и слабыми ссылками на делегаты спасло от утечек при частых обновлениях интерфейса.

Интеграции: без них каталог быстро устаревает

Каталог в мобильном приложении не может жить отдельно от внутренних систем. Если данные не синхронизируются, пользователь видит неактуальные цены, недоступные лоты и устаревшие акции. Это прямой удар по продажам. В одном проекте мы столкнулись с тем, что цены в приложении отставали от CRM на несколько часов, потому что интеграция работала через ночную выгрузку. Перешли на событийную модель: при изменении цены в мастер-системе генерировалось событие, которое через очередь сообщений попадало в мобильное приложение по WebSocket. Задержка сократилась до секунд.

Ключевые интеграции

1. CRM

Нужна для:

  • заявок;
  • бронирований;
  • истории коммуникаций;
  • статусов сделок;
  • привязки пользователя к менеджеру.

Без CRM каталог превращается в изолированный остров. Мы обычно настраивали двустороннюю синхронизацию: заявка из приложения сразу создавала сделку в CRM, а менеджер видел, какой объект смотрел клиент. Это требовало аккуратной обработки ошибок сети и повторных попыток, чтобы заявка не потерялась при обрыве связи.

2. База объектов или мастер-система

Это источник правды по:

  • доступности;
  • ценам;
  • планировкам;
  • корпусам;
  • статусам лотов;
  • акциям и скидкам.

Здесь критично версионирование данных. Мы использовали ETag и Last-Modified заголовки, чтобы не тянуть весь каталог при каждом обновлении, а только изменившиеся объекты. На клиенте это ложилось на Core Data с политикой слияния NSMergeByPropertyObjectTrumpMergePolicy, чтобы данные сервера побеждали локальные изменения, кроме избранного пользователя.

3. Ценообразование и скидки

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

4. Ипотечные сервисы

Полезны, если приложение поддерживает расчет ежемесячного платежа, подбор программ и отправку заявки. Интеграция обычно идёт через API банков или агрегаторов. Мы кэшировали ставки на сутки, чтобы не дёргать сервер при каждом просмотре карточки.

5. Карты и геосервисы

Используются для:

  • привязки объекта к району;
  • отображения инфраструктуры;
  • навигации;
  • поиска ближайших точек.

В iOS мы использовали MapKit с кастомными аннотациями, но для сложной инфраструктуры иногда подключали Яндекс.Карты через их SDK. Важно следить за потреблением памяти при отрисовке множества аннотаций — тут помогала кластеризация и повторное использование вьюх.

6. Аналитика

Каталог должен передавать события:

  • просмотр списка;
  • открытие карточки;
  • применение фильтра;
  • добавление в избранное;
  • клик по CTA;
  • начало бронирования;
  • отказ на конкретном шаге.

Без аналитики невозможно понять, где именно пользователи «сыпятся». Мы настраивали события через внутреннюю шину, которая отправляла их в Firebase и Amplitude. Это позволяло строить воронки и видеть, что, например, фильтр по ипотеке отсекает 30% пользователей, потому что не все понимают его смысл. Меняли формулировку — конверсия росла.

Как строить архитектуру данных для каталога

У каталога есть одна жесткая техническая аксиома: данные должны быть согласованы между приложением, CRM, сайтом и внутренними системами. Когда я только начинал работать с Objective-C, мы часто хранили данные в песочнице и синхронизировали через самописные скрипты. Сейчас подходы стали строже.

Что важно предусмотреть

  • единый идентификатор объекта;
  • единый статус объекта;
  • версионирование цен;
  • кэширование без потери актуальности;
  • контроль дублей;
  • обработку пустых значений;
  • офлайн-режим для части сценариев.

На практике мы ввели глобальный уникальный идентификатор (GUID) для каждого лота, который использовался во всех системах. Это исключило путаницу при слиянии данных из разных источников. Для цен хранили историю изменений с датой, чтобы можно было откатить или показать динамику. Кэширование строили на Core Data с TTL: данные считались актуальными 15 минут, затем при следующем запросе обновлялись в фоне. Если сеть отсутствовала, показывали закэшированную версию с пометкой «данные могут быть неактуальны».

Практический совет

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

  • объектов много;
  • данные приходят из нескольких источников;
  • есть разные типы недвижимости;
  • каталог живёт в нескольких каналах одновременно.

Мы такой слой реализовали на Node.js: он собирал данные из CRM, ERP и файлов выгрузки, нормализовал и отдавал REST API с JSON. Мобильное приложение общалось только с этим API, что резко упростило логику на клиенте. В Objective-C мы парсили ответ через NSJSONSerialization и мапили на объекты Core Data, избегая циклических ссылок через weak self в блоках.

UX для каталога: принципы, которые реально работают

1. Сначала смысл, потом визуал

Пользователь должен быстро понять, что за объект перед ним. Красивая анимация не заменяет ясную структуру. Мы однажды увлеклись параллакс-эффектами в карточках, но на тестах риэлторы сказали: «Уберите, это отвлекает». Оставили только микроанимации для обратной связи.

2. Один экран — одна задача

Если на одном экране смешаны подбор, аналитика, чат, ипотека и избранное, пользователь теряет фокус. В мобильной среде это критично. Мы разносили функционал по вкладкам, а каталог оставляли чистым списком с фильтрами.

3. Минимум лишних решений

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

4. Показывайте актуальность

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

5. Учитывайте мобильную механику

Большой палец, короткий экран, медленный интернет, переключение между приложениями — все это влияет на UX сильнее, чем в вебе. Мы тестировали на реальных устройствах в условиях слабого сигнала и оптимизировали размеры кнопок под зону досягаемости большого пальца (правило 44pt минимум). В Objective-C для этого использовали UIEdgeInsets и Auto Layout с приоритетами.

Типовые ошибки в каталогах недвижимости

  • слишком длинный список фильтров;
  • отсутствие понятных статусов;
  • неактуальные цены;
  • сложная карточка объекта;
  • нет сохранения избранного;
  • нет сравнения;
  • CTA спрятан внизу;
  • карта не синхронизирована со списком;
  • данные в приложении отличаются от сайта;
  • нет аналитики по шагам выбора;
  • слишком много экранов до заявки.

Каждая из этих ошибок кажется мелкой. В сумме они дают падение конверсии и рост нагрузки на менеджеров. Я вспоминаю случай, когда в приложении забыли синхронизировать статусы с CRM, и клиент увидел проданную квартиру как свободную. Он потратил время на осмотр, а потом выяснилось, что объект ушёл неделю назад. Репутационные потери были серьёзными. После этого мы внедрили обязательную проверку статуса при каждом открытии карточки и push-уведомления о смене статуса для избранных объектов.

Ещё одна распространённая проблема — отсутствие офлайн-режима. Риэлтор на встрече в подвале или в лифте теряет связь, и каталог превращается в тыкву. Мы реализовали кэширование последних 50 просмотренных объектов и всего избранного в Core Data. При потере сети приложение переключалось в офлайн-режим и показывало сохранённые данные с пометкой. Это спасло не одну сделку.

Пошаговый план запуска каталога в мобильном приложении

Шаг 1. Определить сценарии

Сначала нужно понять, кто пользуется каталогом и для чего: поиск, подбор, бронирование, сопровождение сделки. Мы обычно проводили интервью с будущими пользователями и рисовали Customer Journey Map. Это помогало выявить скрытые потребности, например, необходимость быстрого сравнения планировок в офлайн-режиме.

Шаг 2. Собрать структуру данных

Нужно зафиксировать набор полей для объекта, статусы, связи с проектами и правила обновления. Важно договориться о едином справочнике статусов между всеми системами. Мы создавали документ-спецификацию, который подписывали все участники: отдел продаж, CRM-администратор, разработчики. Это предотвращало разночтения вроде «забронирован» vs «в резерве».

Шаг 3. Спроектировать фильтры

Начинать стоит с минимального набора, который реально влияет на решение. Мы обычно брали топ-5 параметров из аналитики поисковых запросов на сайте и добавляли их в быстрые фильтры. Остальное выносили в расширенные.

Шаг 4. Сделать карточки и список

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

Шаг 5. Подключить интеграции

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

Шаг 6. Провести UX-проверку

Смотрим, где пользователь путается, где теряет контекст и где бросает сценарий. Мы использовали запись экрана и тепловые карты касаний. Однажды обнаружили, что кнопка «Сравнить» была слишком маленькой и расположена в неудобной зоне — пользователи просто не замечали её. Увеличили и перенесли — использование сравнения выросло на 25%.

Шаг 7. Запустить аналитику

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

Чек-лист перед релизом

  • пользователь понимает, что это за объект за 3–5 секунд;
  • фильтры не перегружают экран;
  • цена и статус актуальны;
  • избранное сохраняется;
  • сравнение работает;
  • карточка ведёт к понятному действию;
  • бронирование или заявка не требуют лишних шагов;
  • каталог корректно работает при медленном интернете;
  • события аналитики настроены;
  • данные синхронизируются с CRM и прайсингом.

Добавлю от себя: обязательно проверьте каталог на утечки памяти. В Objective-C мы использовали Instruments (Allocations, Leaks) и следили, чтобы при пролистывании списка из 500 объектов память не росла бесконтрольно. Часто виновниками были циклические ссылки в блоках, которые после миграции на ARC всё ещё могли возникать, если забыть weakify/strongify. Также тестируйте на реальных устройствах с низким зарядом батареи — энергопотребление геолокации и фоновой синхронизации может убить аккумулятор за пару часов.

Когда каталог нужно делать не как «раздел», а как ядро продукта

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

  • девелоперов;
  • агентств с большим пулом объектов;
  • брокерских сервисов;
  • суперприложений с жильем, сервисами и сделками;
  • платформ, где покупка идет через мобильный сценарий, а не через сайт.

В таких продуктах каталог фактически определяет качество всего приложения. Мы делали суперапп для девелопера, где каталог был хабом: из него можно было перейти к ипотечному калькулятору, записаться на приёмку, заказать услугу управляющей компании или посмотреть данные с IoT-датчиков в уже купленной квартире. Технически это была модульная архитектура на координаторах, где каталог выступал корневым экраном. Благодаря слабой связности модулей мы могли переиспользовать компоненты каталога в разных сценариях, не дублируя код. А управление памятью в таком сложном приложении требовало строгой дисциплины: каждый модуль жил в своём контексте, и мы тщательно следили за циклами владения через граф зависимостей.

Вывод

Сильный каталог недвижимости в мобильном приложении — это сочетание понятного UX, точных данных и надежных интеграций. Если убрать хотя бы один из этих элементов, продукт начинает терять лиды, а менеджеры — время на ручную сверку информации. За годы работы я убедился: каталог нельзя проектировать в отрыве от реальных сценариев и технических ограничений. Он должен быть живым организмом, который мгновенно реагирует на изменения в CRM, поддерживает офлайн-режим и не тормозит на старых устройствах.

В российском рынке выигрывают решения, где каталог не просто показывает объекты, а ведёт пользователя по короткому и прозрачному пути: поиск, сравнение, проверка актуальности, действие. Именно такой подход превращает мобильное приложение из «ещё одной витрины» в рабочий инструмент продаж, который ценят и риэлторы, и покупатели.

FAQ

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

Сколько фильтров должно быть в мобильном каталоге?
Столько, сколько действительно помогает выбрать объект. Для первого экрана лучше оставить 4–6 самых важных параметров, а остальное вынести в расширенные настройки. Мы проверяли это A/B-тестом: вариант с 10 фильтрами сразу показывал более высокий процент отказов, чем с 5 основными и кнопкой «Все фильтры».

Почему важно подключать CRM к каталогу?
Потому что CRM обеспечивает связку между просмотром объекта, заявкой, бронированием и работой менеджера. Без этой интеграции каталог быстро теряет актуальность и ценность. В одном проекте мы интегрировали каталог с amoCRM через Webhooks: когда пользователь нажимал «Забронировать», в CRM создавалась сделка, и менеджер сразу перезванивал. Время реакции сократилось с часов до минут.

Нужна ли аналитика в каталоге?
Да. Без событийной аналитики нельзя понять, на каком шаге пользователь уходит и какие фильтры или карточки реально работают. Мы, например, выяснили, что фильтр «отделка» использовали только 2% пользователей, и убрали его из быстрого доступа, освободив место для более востребованного «срок сдачи».

Что критично проверить перед запуском?
Актуальность цен, статусов, стабильность фильтров, скорость загрузки, сохранение избранного и корректную синхронизацию с внутренними системами. И обязательно — поведение приложения при обрыве сети и на устройствах с малым объёмом оперативной памяти. Мы однажды обнаружили, что на iPhone 6 каталог вылетал при пролистывании из-за нехватки памяти, и пришлось оптимизировать размер загружаемых изображений и агрессивнее освобождать кэш.