Service Worker на Бітрікс — окрема пригода
Композитний кеш (CPagesCache) віддає HTML-сторінку з файлового кешу, а Service Worker поверх нього кешує ресурси через Cache API. Два шари кешування, які нічого не знають один про одного. Якщо не розвести їх стратегії — користувач бачить застарілий кошик після додавання товару. Ми починаємо будь-який PWA-проект на Бітрікс з налаштування правильного розділення: Service Worker бере статику (CSS, JS, шрифти) через Cache First, а HTML та API-відповіді завжди йдуть Network First з fallback на кеш. Композитний кеш Бітрікс при цьому працює на серверній стороні і не перетинається з клієнтським.
Типи мобільних додатків для Бітрікс
PWA (Progressive Web App) — веб-додаток, який виглядає як нативний, але живе в браузері. Встановлення зі стору не потрібне — додавання на домашній екран.
React Native — кроссплатформа від Meta. JavaScript, один код — нативний додаток для iOS та Android з повним доступом до API пристрою.
Flutter — кроссплатформа від Google на Dart. Власний рушій рендерингу Skia, стабільні 60/120 FPS.
Мобільний додаток Бітрікс24 — готове корпоративне рішення: CRM, завдання, чат, відеодзвінки.
| Критерій | PWA | React Native | Flutter |
|---|---|---|---|
| Вартість | Низька | Середня | Середня |
| Запуск | 1-3 тижні | 2-4 місяці | 2-4 місяці |
| App Store / Google Play | Ні (TWA) | Так | Так |
| Push | Так (iOS 16.4+) | Так | Так |
| Офлайн | Базовий | Повний | Повний |
| Камера, GPS | Обмежено | Повний | Повний |
| Продуктивність | Середня | Висока | Висока |
PWA випереджає нативну розробку за швидкістю запуску в 3 рази, а React Native на 40% дешевший за Flutter за трудозатратами для типового інтернет-магазину.
Як реалізувати PWA на Бітрікс без конфлікту кешів?
manifest.json — іконка, назва, display: standalone, theme_color, start_url. Користувач встановлює сайт на домашній екран. Файл кладемо в корінь і підключаємо через <link rel="manifest"> у header.php шаблону.
Service Worker — ядро PWA. Реєструємо в footer.php:
- Cache First для статики:
/bitrix/cache/, CSS, JS, шрифти, зображення товарів - Network First для HTML та API (
/ajax/,/bitrix/services/). Якщо мережа недоступна — віддаємо кеш. - Stale While Revalidate для каталогу — показуємо кешоване, оновлюємо у фоні
- Окрема логіка для кошика: завжди Network Only, інакше користувач бачить фантомні товари
Ключовий нюанс — конфлікт з композитом Бітрікс. Модуль composite кешує HTML на сервері і віддає статичні файли. Service Worker не повинен перехоплювати ці відповіді для авторизованих користувачів — інакше розлогінений користувач побачить кошик попереднього. Вирішуємо через перевірку cookie BX_USER_ID у fetch-обробнику.
Push-повідомлення — Firebase Cloud Messaging або OneSignal. Статус замовлення (OnSaleStatusOrder → trigger push), акції, надходження товару. Токен пристрою зберігаємо в UF-полі користувача.
Офлайн-каталог — раніше переглянуті товари доступні без інтернету. IndexedDB для карток, Cache API для зображень.
Сумісність з Проактивним захистом — модуль security перевіряє Referer та сесійні токени. Service Worker при prefetch може не передати потрібні заголовки — налаштовуємо винятки в BX_SECURITY_SESSION_VIRTUAL.
Приріст продуктивності мобільного сайту після впровадження PWA становить 60-80% за Time to Interactive, а конверсія з мобільних пристроїв зростає на 25-35%.
React Native для інтернет-магазинів на Бітрікс
Коли PWA мало — React Native дає повноцінний нативний додаток з єдиною кодовою базою.
Архітектура:
- Бекенд: Бітрікс віддає дані через REST API. Стандартні методи
catalog.product.list,sale.order.addдля каталогу та замовлень. Для кастомних сутностей — свої контролери через\Bitrix\Main\Engine\Controller. - Проміжний шар: BFF (Backend for Frontend) на Node.js або GraphQL. Агрегуємо 3-5 запитів до Бітрікс API в одну відповідь для мобільного клієнта — мобільний інтернет не пробачає зайвих round-trip.
- Фронтенд: React Native додаток.
Функціонал інтернет-магазину:
- Каталог: пошук, фільтри, сортування — дані з
CIBlockElement::GetListчерез REST - Картка товару: галерея (react-native-fast-image), опис, характеристики, відгуки
- Кошик та чекаут з persistence через AsyncStorage
- Особистий кабінет: замовлення, обране, профіль, адреси
- Push: статус замовлення, акції, залишений кошик — FCM/APNs, тригери на подіях Бітрікс
- Нативні фічі: сканер штрихкодів (react-native-camera), геолокація для ПВЗ, Face ID / Touch ID (react-native-biometrics)
- Офлайн: каталог та обране через AsyncStorage / WatermelonDB
- Deep linking:
react-navigationdeep link → конкретний товар з push або реклами
React Native обирають, тому що:
- React-розробники вже знають 80% стеку
- Екосистема: тисячі готових пакетів у npm
- Hot Reload — миттєвий feedback при розробці
- CodePush від Microsoft — оновлення JS-бандла без публікації в Store. Фікс багу за хвилини, а не за 2-3 дні рев'ю.
Flutter vs React Native: коли обрати Flutter
Альтернатива React Native. Обираємо, коли потрібен нестандартний UI з важкими анімаціями.
Сильні сторони:
- Skia engine — 60/120 FPS на складних анімаціях, де React Native починає підгальмовувати на bridge
- Піксельна ідентичність на iOS та Android — власний рендеринг, не платформені віджети
- Dart: строго типізований, помилки на етапі компіляції, а не в проді на пристрої користувача
- Material Design та Cupertino віджети з коробки
Коли Flutter:
- Інтерфейс зі складними анімаціями та кастомними переходами між екранами
- Критично важлива однаковість UI на обох платформах
- Плани на web та desktop (Flutter підтримує всі три таргети)
- Команда знає Dart або готова вкластися
Інтеграція з Бітрікс:
- REST API на стороні Бітрікс (аналогічно React Native)
- Пакет
dioдля HTTP з interceptors: автоматичне додавання auth-токена, retry на 5xx - Стан:
RiverpodабоBLoC— залежить від масштабу - Локальне зберігання:
Hiveдля key-value,sqfliteдля складних запитів до офлайн-даних
Для нестандартного інтерфейсу Flutter дає ідентичну поведінку на обох платформах — економія до 30% часу на крос-платформених багах.
Як підготувати API для мобільного додатку на Бітрікс?
Мобільний додаток рівно настільки хороший, наскільки хороший API.
Проектування:
- RESTful з версіонуванням (
/api/v1/,/api/v2/) — зворотна сумісність при оновленнях - JWT + refresh token. Access — 15 хвилин, refresh — 30 днів. Зберігання refresh у Keychain (iOS) / EncryptedSharedPreferences (Android).
- Пагінація курсором (
?after=eyJ...) — стабільне підвантаження без дублів при додаванні нових елементів - Sparse fieldsets:
?fields=id,name,price,image— віддаємо тільки потрібне екрану, економимо трафік
Оптимізація під мобільні мережі:
- Агреговані ендпоінти: один запит на екран замість п'яти.
/api/v1/homeповертає банери, рекомендації, акції та категорії однією відповіддю - Gzip-стиснення — у Бітрікс вмикається через
\Bitrix\Main\Config\Option::set('main', 'use_compression', 'Y') - ETag / Last-Modified — 304 Not Modified економить трафік і час
- Retry з exponential backoff + offline queue (запити накопичуються і надсилаються при відновленні мережі)
- Зображення за розміром пристрою:
CFile::ResizeImageGet()з параметрами із заголовкаDPR
Push-повідомлення:
- FCM (Android) + APNs (iOS)
- Тригери на подіях Бітрікс:
OnSaleStatusOrder,OnCatalogStoreProductUpdate,OnSaleBasketSaved - Сегментація: персоналізація за поведінкою з CRM
- Аналітика воронки: доставка → відкриття → перехід → конверсія
Що входить у розробку мобільного додатку під ключ?
- Аналітика — аудит поточного сайту, навантажувальне тестування, профілювання вузьких місць (SQL-запити, кешування). Збір вимог по фічам.
- Проектування API — проектування REST/GraphQL-схеми з курсорною пагінацією та sparse fieldsets, інтеграція з 1С через CommerceML, фіскалізація (54-ФЗ, АТОЛ, ОФД).
- Реалізація PWA — налаштування Service Worker, manifest, push-повідомлення, офлайн-каталог, тестування на реальних пристроях.
- Розробка нативного додатку — React Native або Flutter: верстка екранів, інтеграція з API, камера, геолокація, deep linking.
- Інтеграція з Бітрікс24 — REST OAuth, webhooks, Open Lines, Bizproc, синхронізація з CRM.
- Тестування — навантажувальне (k6), регресійне, кроссплатформене на iOS/Android, перевірка офлайн-сценаріїв.
- Деплой — публікація в App Store / Google Play, налаштування CI/CD, моніторинг (Sentry, Firebase Crashlytics).
- Документація — опис API, архітектури, інструкція по оновленню. Передача доступів та вихідних кодів.
Результат: працюючий додаток, документація, доступи до серверів та сторів, навчання команди замовника.
Терміни
| Задача | Терміни |
|---|---|
| PWA для існуючого сайту | 2-4 тижні |
| REST API для мобільного додатку | 3-6 тижнів |
| MVP на React Native / Flutter | 2-3 місяці |
| Повнофункціональний додаток | 4-6 місяців |
| Публікація в App Store / Google Play | 1-2 тижні |
| Кастомізація додатку Б24 | 2-4 тижні |
Рекомендуємо стартувати з PWA — перевірити гіпотезу за 2-3 тижні. Якщо мобільний трафік підтверджує попит — нарощувати нативний додаток з повним доступом до пристрою.
Наша команда — сертифіковані розробники 1С-Бітрікс з досвідом понад 7 років. За цей час реалізували 20+ мобільних проектів — від PWA для мережевих магазинів до нативних додатків для дистриб'юторів з інтеграцією СДЕК та 1С. Гарантуємо сумісність з актуальними версіями платформи та модулів.
Замовте попередню оцінку: надішлемо архітектурний план та терміни за 2 робочих дні. Отримайте консультацію розробника з вибору технології — заповніть форму на сайті або зателефонуйте нам.







