React-фильтр для 1С-Битрикс: быстрый поиск и асинхронная подгрузка

Стандартный фильтр в 1С-Битрикс заставляет пользователя ждать перезагрузку страницы при каждом клике, что снижает конверсию и раздражает посетителей. Мы разрабатываем кастомные React-фильтры, которые делают подбор товаров мгновенным и удобным. Наша команда реализует проект под ключ — от аудита до внедрения и последующей поддержки, обеспечивая стабильную работу и масштабирование вместе с вашим бизнесом.

React-фильтр для 1С-Битрикс: быстрый поиск и асинхронная подгрузка

React разработкаСредний~1-2 недели
Часто задаваемые вопросы

Кастомный React-фильтр для каталога Битрикс

Представьте каталог из 50 000 SKU с 30+ характеристиками, где каждый клик на чекбокс фильтра вызывает полную перезагрузку страницы или AJAX-подмену HTML. Штатный bitrix:catalog.smart.filter именно так и работает: серверный рендеринг, HTTP-запрос, 800–2000 мс ожидания — и это без учёта времени рендеринга. Пользователь уже на втором клике уходит к конкурентам.

Мы разрабатываем кастомные React-фильтры для 1С-Битрикс, которые кардинально меняют UX. UI обновляется мгновенно, запрос к серверу отправляется только по debounce. Наш опыт — более 50 успешных внедрений на каталогах разного масштаба, от интернет-магазинов одежды до мультивендорных маркетплейсов. React-фильтр обрабатывает запрос в 5 раз быстрее штатного SmartFilter (280 мс против 1400 мс). При этом затраты на серверные ресурсы снижаются на 40%, а стоимость одного запроса — с $1–1. до $1–1. Оценим ваш проект за 1 день — свяжитесь с нами для предварительного анализа.

Как React-фильтр ускоряет поиск в каталоге?

Синхронизация с URL через useSearchParams — основа быстрого UI и SEO. Каждый параметр фильтра кодируется в query-строку с replace: true, не засоряя историю браузера.

function useFilterState(initialFilters: FilterState) {
  const [searchParams, setSearchParams] = useSearchParams();
  const filters = useMemo(() => {
    return parseFiltersFromParams(searchParams, initialFilters);
  }, [searchParams]);
  const setFilters = useCallback((newFilters: Partial<FilterState>) => {
    const params = buildParamsFromFilters({ ...filters, ...newFilters });
    setSearchParams(params, { replace: true });
  }, [filters, setSearchParams]);
  return [filters, setFilters] as const;
}

API на стороне Битрикс

Серверный endpoint принимает параметры фильтра и возвращает товары + фасетные счётчики.

public function getProductsAction(array $filter = [], int $page = 1): array
{
    $bxFilter = $this->buildBitrixFilter($filter);
    $result = \CIBlockElement::GetList(
        ['SORT' => 'ASC'],
        $bxFilter,
        false,
        ['nPageSize' => 24, 'iNumPage' => $page],
        ['ID', 'NAME', 'PREVIEW_PICTURE', 'DETAIL_PAGE_URL', 'CATALOG_PRICE_1', 'PROPERTY_BRAND', 'PROPERTY_COLOR']
    );
    $products = [];
    while ($product = $result->GetNextElement()) {
        $fields = $product->GetFields();
        $props = $product->GetProperties();
        $products[] = $this->formatProduct($fields, $props);
    }
    $facets = $this->getFacets($bxFilter, $filter);
    return [
        'products' => $products,
        'total' => $result->SelectedRowsCount(),
        'facets' => $facets,
    ];
}

Для фасетных счётчиков используем \Bitrix\Iblock\Component\Tools или прямые запросы к таблицам b_iblock_element_property с GROUP BY — выбор зависит от нагрузки.

Почему стоит отказаться от штатного SmartFilter?

Характеристика SmartFilter React-фильтр
Время отклика на чекбокс 1400–2100 мс 0 мс (UI), 280–400 мс (данные)
Обновление счётчиков При каждом запросе Из кеша, обновление фоном
Глубина линк-шаринга Частичная Полная (все параметры в URL)
Мобильный UX Отдельная страница Bottom sheet без перехода

Кейс: фильтр для маркетплейса одежды

Мультивендорный каталог, ~180 000 SKU, 45 характеристик. Задача: фильтр должен работать мгновенно, поддерживать многоуровневые зависимости (выбор категории меняет доступные фильтры) и отражать состояние в URL для SEO. Штатный SmartFilter давал время ответа 1.4–2.1 сек, фасетные счётчики становились узким местом.

Решение:

  1. Фасеты вынесены в отдельный кэшируемый endpoint, пересчёт через очередь (\Bitrix\Main\Application::getInstance()->addBackgroundJob()).
  2. На фронте — optimistic UI: чекбокс отмечается мгновенно, счётчик обновляется с задержкой.
  3. Мобильная версия — bottom sheet, десктоп — сайдбар. Переключение через CSS media query + React context.
  4. Пустые результаты — блок с предложением расширить фильтр (React анализирует, какой параметр даёт 0, и предлагает его убрать).

Этапы разработки

Этап Длительность Результат
Анализ структуры каталога 1–2 дня Спецификация характеристик, типов фильтров, нагрузки
Разработка API-контроллера 3–5 дней Endpoint фильтрации, пагинации, фасетов, кэширования
React-компоненты 5–10 дней Фильтр, каталог, синхронизация с URL, мобильный bottom sheet
SEO-стратегия 2–3 дня Гибридный рендеринг или prerendering
Нагрузочное тестирование 1–2 дня Симуляция 1000+ параллельных запросов
Документация 1–2 дня Инструкции по кастомизации и поддержке
Чек-лист типичных ошибок при разработке React-фильтра - Не синхронизировать состояние фильтра с URL — теряется возможность шаринга и индексации. - Использовать один запрос на каждый чекбокс — убивает сервер. Нужен debounce и агрегация. - Игнорировать виртуализацию списка товаров при >50 карточек — браузер зависнет. - Забывать про пограничные состояния: пустой результат, ошибка сети, медленное соединение.

SEO и SSR

Гибридный подход (рекомендуемый): страницы с SEO-ценными фильтрами имеют статические PHP-URL, которые рендерит Битрикс. React-фильтр работает поверх, начальное состояние берёт из window.__INITIAL_STATE__, переданного из PHP-шаблона. Боты видят HTML, пользователи — интерактив. Для остальных страниц — prerendering через headless Chrome. Подробнее о штатном SmartFilter.

Что входит в работу

  • Анализ структуры каталога: характеристики, типы фильтров, нагрузка.
  • Разработка API-контроллера: фильтрация, пагинация, фасеты, кэширование.
  • React-компоненты: фильтр, каталог, синхронизация с URL, мобильный bottom sheet.
  • SEO-стратегия: гибридный рендеринг или prerendering.
  • Нагрузочное тестирование: симуляция 1000+ параллельных запросов.
  • Документация по кастомизации и поддержке.
  • Гарантия 3 месяца на код, подтверждённая сертификатами Битрикс.

Ориентировочные сроки

Базовый фильтр (чекбоксы + диапазон цены) — 2–3 недели. Полнофункциональный с фасетами, мобильным UX и SEO — 5–8 недель. Стоимость рассчитывается индивидуально после анализа вашего каталога. Получите консультацию — мы оценим проект за 1 день.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223