Розробка decoupled-фронтенду для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Розробка decoupled-фронтенду для 1С-Бітрікс
Середній
~1-2 тижні
Часті запитання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    944
  • 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
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    829
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1074

Розробка 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="UAH">
</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
  • Тестування продуктивності (заміри до/після)

Процес роботи

  1. Аналітика — вивчаємо існуючий сайт, навантаження, вузькі місця. Визначаємо, які сторінки замінити в першу чергу.
  2. Проектування — обираємо стек (React/Vue), проектуємо API, опрацьовуємо архітектуру компонентів.
  3. Реалізація — пишемо код паралельно з вашою командою. Щотижневі демо.
  4. Тестування — навантажувальні тести, регресія за функціоналом Бітрікса.
  5. Деплой — викочуємо поетапно, моніторимо помилки. Передбачений відкат на 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. Отримайте консультацію щодо впровадження вже сьогодні.

Чому верстка сайтів на 1С-Бітрікс вимагає професіоналізму?

Відкриваєте template.php у попереднього підрядника — а там SQL-запити, бізнес-логіка та inline-стилі в одному файлі. На кожному другому проєкті, який ми беремо на підтримку, код шаблонів виглядає як звалище: кеш не працює, додати нову фічу — переписуй все. Виправлення такої верстки може коштувати чимало, а втрачений виторг через зламаний кошик у пік сезону може сягати десятків тисяч гривень.

Ми — команда сертифікованих розробників 1С-Бітрікс із десятирічним досвідом. За нашими плечима понад 50 успішних проектів верстки та підтримки. Наш підхід строго розділяє: логіка — в result_modifier.php або component_epilog.php, представлення — в template.php. Жодного CIBlockElement::GetList в шаблоні. Це скорочує час правок на 30–40% та виключає типові помилки, які ламають кеш. Подібну проблему виправляли клієнту з інтернет-магазину — він місяць не міг оновити блок «Акції». Після налаштування тегованого кеша правки вставали за хвилину, а не за день.

Отримайте безкоштовний аудит вашого проекту — зв'яжіться з нами.

Як правильно організувати шаблони компонентів?

Кастомний шаблон — це не один файл, а структура з п’яти-шести файлів:

  • template.php — тільки HTML та виведення $arResult
  • result_modifier.php — підготовка даних, додаткові вибірки
  • component_epilog.php — код після кешування (лічильники, динаміка)
  • style.css та script.js — підключаються через Asset::getInstance()->addCss() та addJs() (не через <link> — інакше ламається об'єднання)
  • .parameters.php — параметри візуального редактора

Приклад структури для каталогу:

local/templates/your_template/components/bitrix/catalog.section/.default/
├── template.php
├── result_modifier.php
├── component_epilog.php
├── style.css
├── script.js
└── .parameters.php

Типові шаблони, які верстаємо під ключ:

Компонент Що робимо
catalog.section та catalog.element Перемикання вигляду (плитка/список/таблиця), lazy load для зображень, srcset для ретини
sale.basket.basket AJAX-оновлення без перезавантаження, міні-кошик через sale.basket.basket.line
menu Мегаменю з кешуванням за розділами, відкладене завантаження підменю
search.title Автопідказки з дебаунсом 300 мс, прев'ю товарів у дропдауні
breadcrumb Мікророзмітка BreadcrumbList за Schema.org

Кешування: чому воно ламається і як лагодимо?

Компонентне кешування в Бітрікс ламається однією помилкою: вивели ім'я користувача всередині кешованого каталогу — всі бачать одне ім'я. Рішення — component_epilog.php для динамічних вставок.

Tagged cache ($this->setResultCacheKeys, CIBlock::clearIblockTagCache) налаштовуємо обов'язково. Змінили товар — очищується кеш лише цього товару, а не всього розділу. На проєкті з 50 000 товарів це дає приріст швидкості на 40% — в 1.4 раза швидше порівняно з повним скиданням.

Реальний кейс. Наш клієнт скаржився — на сторінці каталогу у всіх один кошик. Виявилося, попередній розробник вивів $_SESSION['BASKET'] всередині template.php компонента catalog.section. Компонент кешувався на годину — кошик застиг. Перенесли виведення в component_epilog.php, налаштували тегований кеш на sale.basket.basket.line. Сторінка не втратила у швидкості, кошик став актуальним. Збитки від несправного кошика в пік сезону могли бути значними, а вартість виправлення — помірною.

CSS-підходи: BEM, Tailwind або гібрид?

Для великих проєктів (30+ шаблонів) використовуємо BEM.product-card__price, .product-card--featured. Стилі ізольовані, конфліктів немає. У Бітрікс обгортки з класами bx-component не чіпаємо — обгортаємо свій BEM-блок всередині.

Для типових завдань (лендінги, адмінки) беремо Tailwind 3+ з PurgeCSS — підсумковий CSS 10–30 КБ замість сотень. Дизайн-токени в tailwind.config.js фіксують кольори, шрифти, відступи в одному місці.

На більшості проєктів застосовуємо гібрид: BEM для структурних компонентів (каталог, картка, чекаут), Tailwind для утилітарних речей (відступи, flex-розкладки). Межу обговорюємо з командою заздалегідь.

Як досягти Core Web Vitals при верстці сайтів на Бітрікс?

Critical CSS — виділяємо стилі першого екрану через пакет critical, інлайнимо в <head>. Решта завантажується асинхронно через media="print" onload="this.media='all'". LCP на мобільних скорочується на 1–1.5 секунди.

Зображення — головне гальмо. Використовуємо <picture> з WebP та JPEG-фолбеком. loading="lazy" для всього нижче першого екрану. width та height явно прописані — CLS = 0. Обробник в urlrewrite.php генерує WebP на льоту.

Мініфікація та стиснення. CSS та JS через Vite або вбудоване об'єднання Бітрікс. Brotli на nginx (brotli_comp_level 6) — на 15–20% ефективніше за gzip. Кешування статики: expires 1y + версіонування через query string.

Ми готові зробити аудит вашого проєкту та запропонувати конкретні кроки. Закажіть консультацію.

Що входить в послугу верстки сайтів на 1С-Бітрікс?

Після замовлення верстки шаблону або адаптації готового рішення передаємо:

  • Вихідні коди шаблонів компонентів з розділенням на template.php, result_modifier.php, epilog
  • CSS та JS, підключені через Asset — без інлайн-стилів
  • Налаштоване кешування з тегами
  • Документацію за структурою та параметрами
  • Доступ до Git-репозиторію з історією змін
  • Навчання вашого розробника: як правити шаблон без втрати оновлюваності

Гарантуємо відповідність Core Web Vitals та кросбраузерність. Закріплюємо інженера з досвідом 10+ років.

Типові помилки при верстці, які ми виправляємо - Inline-стилі в шаблонах — ламають кешування та об'єднання CSS. - Відсутність `component_epilog.php` — динамічний контент застигає. - Неправильне підключення скриптів через `