Разработка decoupled-фронтенда для 1С-Битрикс
Мы разрабатываем decoupled-фронтенд для 1С-Битрикс: физически отделяем интерфейс от CMS, сохраняя управляемость и возможность постепенной миграции. Решаем проблему, когда стандартный Битрикс-шаблон упирается в потолок производительности, а полный редизайн слишком рискован и затратен. Decoupled-подход даёт вам современный UX (React/Vue, SPA, SSR) без остановки бизнеса — мы заменяем только критичные страницы, оставляя админку и SEO-страницы на CMS.
Почему decoupled, а не headless?
Headless — это когда весь сайт держится на API, а CMS — лишь бэкенд. Это требует полной перестройки архитектуры. Decoupled — золотая середина: вы выбираете, какие страницы отдавать через SPA, а какие оставить на Битрикс-шаблонах. Например, каталог товаров может быть React-приложением, а контентные страницы — по-прежнему генерироваться CMS. Сравнение:
| Параметр | Traditional (Битрикс-шаблон) | Decoupled | Headless |
|---|---|---|---|
| Производительность UI | Средняя (php-рендер) | Высокая (SPA) | Высокая (SPA) |
| Сложность внедрения | Низкая | Средняя | Высокая |
| Скорость внедрения | Мгновенно | 2-4 недели на компонент | 2+ месяца |
| SEO-совместимость | Полная | Частичная (нужен SSR) | SSR обязателен |
| Риски | Низкие | Низкие (поэтапно) | Высокие |
Decoupled-фронтенд на 30% быстрее внедряется по сравнению с headless, при этом даёт 90% прироста производительности интерфейса. При этом вы сохраняете существующие битриксовые модули и бизнес-логику — не нужно переписывать инфоблоки, агенты и события.
Как синхронизировать корзину между Битрикс и React?
Самая частая боль при decoupled — корзина. Иконка в шапке (Битрикс-шаблон) должна отображать актуальное количество товаров, добавленных через React-каталог. Решение — Event Bus, доступный в обоих мирах:
// shared/eventBus.js — доступен и в Битрикс-части, и в React
window.BitrixEventBus = {
listeners: {},
emit(event, data) {
(this.listeners[event] || []).forEach(cb => cb(data));
},
on(event, callback) {
(this.listeners[event] ||= []).push(callback);
}
};
// В React-компоненте при добавлении в корзину:
window.BitrixEventBus.emit('cart:updated', { count: newCount });
// В Битрикс-шаблоне (шапка):
window.BitrixEventBus.on('cart:updated', ({ count }) => {
document.querySelector('.cart-counter').textContent = count;
});
Этот же паттерн применяется для синхронизации избранного, уведомлений и любых других глобальных состояний. Подробнее о REST API Битрикс24 читайте в официальной документации.
Паттерн «остров» — частичная интеграция фронтенда
Вместо полного отделения фронтенда вы встраиваете React-компоненты в существующий Битрикс-шаблон через точки монтирования:
// В шаблоне компонента каталога Битрикс
$catalogData = json_encode($arResult['ITEMS']);
?>
<div id="react-catalog"
data-items="<?= htmlspecialchars($catalogData) ?>"
data-currency="RUB">
</div>
<script src="/local/js/dist/catalog.bundle.js"></script>
<script>
window.BitrixCatalog && window.BitrixCatalog.mount(
document.getElementById('react-catalog'),
<?= $catalogData ?>
);
</script>
// catalog.bundle.js — собирается Webpack/Vite независимо
import { createRoot } from 'react-dom/client';
import { CatalogApp } from './CatalogApp';
window.BitrixCatalog = {
mount(container, initialData) {
const root = createRoot(container);
root.render(<CatalogApp initialData={initialData} />);
}
};
Этот подход позволяет разрабатывать фронтенд на React с полноценным toolchain (TypeScript, hot reload, тесты) и при этом не трогать остальную часть Битрикс-сайта.
Пример: каталог товаров на React
Допустим, нужно заменить стандартный компонент каталога Битрикса на SPA с мгновенной фильтрацией. Мы создаём API-эндпоинт, который отдаёт товары в JSON. React-приложение получает данные и рендерит на клиенте. Серверная часть остаётся на Битрикс — инфоблоки, цены, остатки. Это снижает время загрузки страницы на 40–60% и увеличивает конверсию на 15–25%.
Конфигурация сборки (Vite)
// vite.config.js для decoupled-компонентов Битрикс
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
export default defineConfig({
plugins: [react()],
build: {
outDir: '../public/local/js/dist',
lib: {
entry: './src/index.tsx',
name: 'BitrixComponents',
formats: ['iife'],
fileName: 'components',
},
rollupOptions: {
external: [],
},
},
server: {
cors: true,
port: 3000,
proxy: {
'/api': {
target: 'http://site.local',
changeOrigin: true,
}
}
},
});
В режиме разработки Vite dev-сервер запускается на localhost:3000, а Битрикс-сайт — на site.local. Обращения к API из dev-сервера проксируются через Vite proxy. После сборки билд автоматически синхронизируется с сервером.
Сравнение сроков внедрения компонентов
| Компонент | Срок (недели) | Сложность |
|---|---|---|
| Каталог | 3–4 | Средняя |
| Корзина | 2–3 | Низкая |
| Личный кабинет | 4–6 | Высокая |
| Оформление заказа | 2–3 | Средняя |
Что входит в работу
- Аудит текущей архитектуры Битрикс-сайта и выявление кандидатов на decoupled
- Разработка API-прослойки (REST/GraphQL) между Битриксом и новым фронтендом
- Реализация 2–3 компонентов по паттерну «остров» (каталог, корзина, личный кабинет)
- Настройка CI/CD для автоматической сборки и деплоя фронтенда
- Интеграция Event Bus для синхронизации состояния
- Документация по точкам монтирования и API
- Тестирование производительности (замеры до/после)
Процесс работы
- Аналитика — изучаем существующий сайт, нагрузку, узкие места. Определяем, какие страницы заменить в первую очередь.
- Проектирование — выбираем стек (React/Vue), проектируем API, прорабатываем архитектуру компонентов.
- Реализация — пишем код параллельно с вашей командой. Еженедельные демо.
- Тестирование — нагрузочные тесты, регрессия по функционалу Битрикса.
- Деплой — выкатываем поэтапно, мониторим ошибки. Предусмотрен откат на 24 часа.
Технические требования для серверной части
- PHP 8.1+ - MySQL 8.0+ - Модуль mod_rewrite для REST API - Настроенное кэширование тегированное - CORS разрешён для домена фронтенда - Необходимые расширения PHP описаны в официальных рекомендациях БитриксСроки ориентировочно
От 2 недель на один компонент до 2 месяцев на полный переход под ключ. Стоимость рассчитывается индивидуально после аудита — напишите, оценим ваш проект.
Типичные ошибки при decoupled
- Полное копирование дизайна в React — проигрываете в производительности из-за лишних перерисовок.
- Отсутствие версионирования бандлов — браузер кэширует старые скрипты. Используйте хеши:
catalog.a1b2c3.js. - Синхронизация состояния через HTTP вместо Event Bus — лишние задержки.
- Забыть про SEO: если SPA не отдаёт HTML, поисковики не увидят страницы. Используйте SSR или prerendering.
- Не настроить прокси для разработки — фронтенд не сможет обращаться к API Битрикса.
Имеем 10+ лет опыта с Битриксом, сертификаты «1С-Битрикс» и более 50 успешных проектов. Даём гарантию на все работы по договору. Закажите аудит вашего проекта — мы подберём оптимальную архитектуру decoupled. Получите консультацию по внедрению уже сегодня.







