Разработка фронтенда на React для 1С-Битрикс

Когда каталог товаров начинает тормозить на 5000 позиций, а фильтры перезагружают страницу по три секунды — стандартные компоненты Битрикса перестают справляться? Мы сталкивались с этим десятки раз: клиент просит «как у Ozon», а Битрикс выдаёт jQuery-виджеты из коробки. Выход — React-фронтенд, ко
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка фронтенда на React для 1С-Битрикс
Средний
~1-2 недели

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

Часто задаваемые вопросы

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

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Когда каталог товаров начинает тормозить на 5000 позиций, а фильтры перезагружают страницу по три секунды — стандартные компоненты Битрикса перестают справляться?

Мы сталкивались с этим десятки раз: клиент просит «как у Ozon», а Битрикс выдаёт jQuery-виджеты из коробки. Выход — React-фронтенд, который берёт на себя интерфейс, оставляя Битриксу бизнес-логику и данные. В одном из проектов с каталогом 15 000 товаров время рендера страницы сократилось с 5 секунд до 400 мс после замены стандартного компонента на React-виджет с виртуализацией и кэшированием. Опыт показывает: гибридная архитектура (Битрикс + React) даёт выигрыш в скорости разработки сложных интерфейсов до 40% и упрощает поддержку. Главное — правильно настроить интеграцию: типизировать API, настроить кэширование и продумать обработку ошибок. Получите консультацию по вашему проекту — оценим его за 2 дня.

Три паттерна внедрения React в Битрикс

Мы выделяем три базовых паттерна внедрения. Выбор зависит от бюджета и степени интеграции с текущим шаблоном.

  • Виджеты. React-компонент монтируется на конкретный DOM-элемент внутри шаблона. Идеально для форм, фильтров, слайдеров, корзины. Минимальные изменения вёрстки — достаточно добавить div с id.
  • Страница-SPA. Контент полностью генерирует React, а Битрикс служит «оболочкой» (шапка, футер, меню). Данные подтягиваются через API. Пример: каталог с динамической подгрузкой товаров.
  • Headless CMS. React-приложение работает отдельно, Битрикс — только API. Самый гибкий, но трудоёмкий вариант. Требует перестройки маршрутизации и переноса шаблонов.
Паттерн Сложность Подходит для
Виджеты Низкая Точечные улучшения интерфейса
SPA-страница Средняя Каталог, личный кабинет
Headless CMS Высокая Полный редизайн или мобильное приложение

Почему стоит внедрить React в ваш Битрикс-проект?

Причины очевидны: динамические формы, сложные фильтры, корзина без перезагрузки — на чистом Битриксе это писать долго и больно. React с TypeScript и React Query дают типизацию, кэширование и декларативность. Ошибки на бэкенде (например, ошибка в API) не «роняют» страницу — компонент показывает fallback. Если ваша команда уже использует React, тащить jQuery-код в текущей версии не имеет смысла. Средняя экономия на разработке составляет 40%, а стоимость типового проекта интеграции — от 150 000 до 500 000 ₽ в зависимости от сложности. Мы реализуем интеграцию «под ключ» за 5–15 рабочих дней.

Пошаговая инструкция: как внедрить React в Битрикс

  1. Аудит текущего шаблона — определяем места, где React даст максимальный эффект. Обычно это каталог, корзина, личный кабинет.
  2. Проектирование API — создаём REST-эндпоинты или используем стандартные. В среднем требуется 3-5 эндпоинтов на раздел.
  3. Разработка компонентов — пишем React-компоненты с TypeScript. Для управления состоянием используем React Query с staleTime: 5 * 60 * 1000.
  4. Интеграция — встраиваем виджеты или переключаем маршрутизацию. Типовой объём работ — 2-3 дня на этап.
  5. Тестирование — Vitest + React Testing Library покрывают 80% кейсов. Мокируем API, проверяем рендер и поведение.
  6. Деплой — собираем бандл через Vite, размещаем в /local/js/build/. Настройка кэширования и CDN.

Как настроить авторизацию?

Битрикс управляет сессией и CSRF-токеном — React их только использует. Для проверки авторизации — один запрос:

// /local/js/src/hooks/useAuth.ts import { useQuery } from '@tanstack/react-query'; import { bitrixApi } from '../api/bitrix'; export function useAuth() { return useQuery({ queryKey: ['auth'], queryFn: () => bitrixApi.get<{ isAuthorized: boolean; userId?: number }>('user.current'), staleTime: Infinity, }); } 

Если пользователь не авторизован — редирект на стандартную страницу логина. Кастомную форму пишем только под специфические требования (например, вход по Email + соцсети).

Сравнение React vs стандартные компоненты Битрикса

Критерий React Стандартные компоненты
Скорость рендера 5000 товаров 200-400 мс 2-5 сек
Кэширование запросов Встроенное (React Query) Нет, требуется доработка
Типизация TypeScript Нет (JS без типов)
Гибкость UI Высокая (библиотеки) Низкая (ограниченные шаблоны)
Поддержка SSR Next.js Встроенная (Bitrix)

React быстрее стандартных компонентов в 3-5 раз на сложных интерфейсах. А разработка занимает меньше времени благодаря готовым решениям.

Типизированный API-клиент

Вместо разрозненных fetch-запросов создаём единый типизированный API-клиент с автозаполнением CSRF-токена и типизацией ответов. Такой подход снижает количество ошибок интеграции в 2–3 раза. Пример реализации:

// /local/js/src/api/bitrix.ts interface BitrixResponse<T> { result: T; total?: number; error?: string; } class BitrixApiClient { private baseUrl: string; private sessionId: string; constructor() { this.baseUrl = '/local/ajax/api.php'; this.sessionId = (window as any).BX?.bitrix_sessid?.() || ''; } async get<T>(action: string, params: Record<string, unknown> = {}): Promise<T> { const url = new URL(this.baseUrl, window.location.origin); url.searchParams.set('action', action); Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, String(v))); const response = await fetch(url.toString(), { headers: { 'X-Bitrix-Csrf-Token': this.sessionId }, }); const data: BitrixResponse<T> = await response.json(); if (data.error) throw new Error(data.error); return data.result; } async post<T>(action: string, body: Record<string, unknown>): Promise<T> { const formData = new FormData(); formData.append('action', action); formData.append('sessid', this.sessionId); Object.entries(body).forEach(([k, v]) => formData.append(k, String(v))); const response = await fetch(this.baseUrl, { method: 'POST', body: formData, }); const data: BitrixResponse<T> = await response.json(); if (data.error) throw new Error(data.error); return data.result; } } export const bitrixApi = new BitrixApiClient(); 

Подробнее о REST API Битрикс.

React Query: управление серверными данными

React Query (TanStack Query) — стандарт для работы с API в React. Интеграция с Битрикс выглядит так:

// /local/js/src/api/catalog.ts import { useQuery } from '@tanstack/react-query'; import { bitrixApi } from './bitrix'; interface CatalogItem { id: number; name: string; price: number; quantity: number; previewPicture: string; } export function useCatalogItems(sectionId: number, page: number) { return useQuery({ queryKey: ['catalog', sectionId, page], queryFn: () => bitrixApi.get<CatalogItem[]>('catalog.list', { section_id: sectionId, page, limit: 24, }), staleTime: 5 * 60 * 1000, }); } // В компоненте: function CatalogSection({ sectionId }: { sectionId: number }) { const [page, setPage] = useState(1); const { data, isLoading, error } = useCatalogItems(sectionId, page); if (isLoading) return <CatalogSkeleton />; if (error) return <ErrorMessage error={error} />; return ( <div className="catalog-grid"> {data?.map(item => <ProductCard key={item.id} item={item} />)} <Pagination page={page} onChange={setPage} /> </div> ); } 

Тестируем компоненты: Vitest и моки

Компоненты тестируются изолированно от Битрикса. Для API-запросов используем моки:

// catalog.test.tsx import { render, screen } from '@testing-library/react'; import { CatalogSection } from './CatalogSection'; vi.mock('../api/bitrix', () => ({ bitrixApi: { get: vi.fn().mockResolvedValue([ { id: 1, name: 'Товар 1', price: 1000, quantity: 10, previewPicture: '' }, ]), }, })); test('рендерит название товара', async () => { render(<CatalogSection sectionId={5} />); expect(await screen.findByText('Товар 1')).toBeInTheDocument(); }); 
Структура директорий React-проекта
/local/ /js/ /src/ /components/ /hooks/ /api/ bitrix.ts catalog.ts cart.ts /store/ vite.config.ts package.json tsconfig.json /templates/ /main/ 

Что входит в работу (deliverables)

  • Исходный код React-приложения (TypeScript, Vite, React Query).
  • API-клиент для всех необходимых эндпоинтов Битрикса.
  • Интеграционные тесты ключевых компонентов.
  • Документация по сборке и деплою.
  • Инструкция по поддержке и доработкам.
  • Гарантия на код — 6 месяцев бесплатных консультаций.

Оценка масштаба работ

Свяжитесь с нами — мы проанализируем ваш проект за 2 дня и предложим смету. Стоимость рассчитывается индивидуально — после аудита определим точный объём работ. Опыт более 10 лет, более 50 проектов с интеграцией React и Битрикс. Получите консультацию — напишите в Telegram или на почту. Оценим проект бесплатно.