Developing a PWA on top of 1C-Bitrix turns a website into a progressive web app with offline access and push notifications. The standard pwa module in Bitrix generates a basic manifest.json and Service Worker, but it cannot version the cache or handle complex scenarios: catalogs with thousands of products, authorized users, integration with composite. We customize the Service Worker, set caching strategies, and ensure a green Lighthouse. The result is budget savings on native development and increased conversion.
What problems does PWA on Bitrix solve?
The built-in pwa module generates /manifest.json and registers /sw.js, but it does not manage cache versioning or handle complex offline catalog scenarios. For an e-commerce store with tens of thousands of products, the default Cache First approach is not suitable — custom strategies are needed: Stale While Revalidate for API, Network First with fallback for HTML. We solve these issues by adapting the Service Worker to the specific template and business logic.
Another problem is interaction with the composite module. Composite HTML is cached by the Service Worker, and when content changes (prices, stock levels), users see outdated data. Cache versioning via CACHE_VERSION eliminates this, along with proper exclusion of dynamic URLs.
How we implement PWA on Bitrix
Audit of the current site
We evaluate the impact of composite, check iOS support, calculate Lighthouse scores. We identify bottlenecks: incorrect start_url, missing 512×512 icon, incompatible caching strategies. More about PWA can be found on Wikipedia.
Service Worker setup
Custom logic is written in /local/templates/main/sw-custom.js and connected via importScripts(). We do not modify /sw.js directly — it is regenerated by the module. We use three strategies:
- Cache First for static assets (
/bitrix/js/, /bitrix/css/, /upload/)
- Network First for HTML, excluding URLs with
sessid and AJAX requests to bitrix/services/main/ajax.php
- Stale While Revalidate for catalog API responses — serve from cache, update in parallel
Cache versioning
We add a custom field sw_version to manifest.json. On deploy, we increment it, and the Service Worker cleans old caches on activation:
const CACHE_VERSION = 'v1.4';
self.addEventListener('activate', event => {
event.waitUntil(
caches.keys().then(keys =>
Promise.all(keys.filter(k => k !== CACHE_VERSION).map(k => caches.delete(k)))
)
);
});
Why is cache versioning critical for PWA?
Without versioning, users see outdated content even after the site is updated. The Service Worker continues to serve old files until the cache expires. Versioning ensures that after deploy everyone gets fresh resources — critical for e-commerce with frequently changing prices.
PWA vs native app: which to choose?
| Criteria |
PWA |
Native (iOS/Android) |
| Installation |
From browser, no App Store |
App Store / Google Play |
| Updates |
Automatic via Service Worker |
Via store, requires approval |
| Device access |
Camera, geolocation, notifications |
Full API access |
| Offline |
Cached content |
Full offline logic |
| Size |
0 MB (browser cache) |
20–100+ MB |
| Development time |
1–2 weeks on top of site |
2–4 months separate project |
PWA is developed 3–5 times faster than a native app and takes up 10 times less space. For a catalog, corporate site, news portal, PWA is sufficient. For an app with Bluetooth, NFC, a native client is needed.
Stages and timelines
Work stages:
- Audit (2–3 days) — template check, composite impact, Lighthouse.
- Module and Service Worker setup (3–5 days) — manifest.json, caching strategies, offline page, push subscription.
- Testing (2–3 days) — Android (Chrome, Samsung Internet), iOS (Safari), desktop; Lighthouse at each step.
- Launch and monitoring (1–2 days) — deploy, metric check, alerts on Service Worker errors.
Approximate timelines:
| Scope |
Timeline |
| PWA for existing site with composite |
1–2 weeks |
| PWA + push notifications + offline catalog |
2–3 weeks |
| PWA with custom App Shell |
3–5 weeks |
Pricing is determined individually — contact us for a consultation and savings estimate.
What's included in PWA development?
- Audit and recommendations
- Manifest.json and custom Service Worker setup
- Push notifications via pull module
- Offline page creation
- Documentation and administrator training
- 30-day warranty support
Typical mistakes when implementing PWA
- iOS Safari does not support Background Sync, Badge API, full push without Home Screen.
- Service Worker update — even with
skipWaiting(), the new version is only applied on the next page open.
- Cache size is limited: Chrome allocates up to 80% of free space, Safari — 50MB per origin. Caching the entire catalog of 10,000 products is not possible — only critical resources.
- The composite module with CDN may generate HTML with absolute CDN domain URLs — the Service Worker will not intercept requests to another origin. We check
scope in register().
Get a consultation — we'll help determine the optimal PWA implementation route for your project. Request an audit and cost estimate today.
How to properly design infoblocks?
When developing a 1C-Bitrix website, we see dozens of projects where poor infoblock structure slows down the site. Typical scenario: the client asks for a "product catalog." The developer creates one infoblock catalog, puts 15 properties in it. Six months later – 40 properties, 8 of which are used only for one category. The filter lags, the b_iblock_element_property table grows to millions of rows, CIBlockElement::GetList runs for 3 seconds. Consequences – conversion drop, loss of customers, additional optimization costs. In one project after catalog refactoring, page generation time dropped from 4.2 to 0.8 seconds, and annual support costs were reduced by over $10,000 through eliminated redundant queries and agents.
Our approach: design infoblocks before writing a single line of code. Separate infoblocks for entities (products, categories, brands), dictionary properties via highload blocks, trade offers for SKUs. This builds performance for years. If you want a preliminary audit of your infoblock schema, contact us for a free review of common mistakes and recommendations.
Why 1C-Bitrix outperforms most CMS for business
The choice of CMS is dictated by business needs, not preferences. Native 1C exchange via catalog.import.1c provides two-way synchronization of products, prices, balances, and orders through CommerceML without third-party modules — five times faster than developing custom exchange on OpenCart or WordPress, saving hundreds of thousands of rubles. Proactive security module includes WAF, file integrity control, SQL injection protection, and two-factor authentication; it's certified for FSTEK requirements. Modular architecture lets you enable only needed modules — iblock, catalog, sale, search — reducing DB queries per hit. Regular patches close vulnerabilities faster than open-source projects (average CVE fix time two weeks). Official documentation is maintained on the vendor's site.
What highload blocks are and how they speed up the catalog
Highload blocks are an alternative to extended infoblock properties when the list of values can grow to thousands of entries. Typical example: manufacturers, countries, colors. If stored as list properties in an infoblock, each filter triggers a full scan of b_iblock_property_enum table. With HL-blocks, selection uses indexes – filter response time drops from 1–2 seconds to 50 ms. We use HLB component and custom queries via Bitrix\Highloadblock\DataManager. This is critical for catalogs with 100,000+ items.
From our practice: an online store with 500,000 items. Standard filter by brand took 4 seconds. The server couldn't handle 50 concurrent requests – pages crashed. We moved the brand directory to an HL-block, added tagged caching for 15 minutes, and set up an agent to clear cache on change. After optimization, filter time was 120 ms, average LCP was 1.8 seconds. The project runs stable without failures.
What integrations are critical for 1C-Bitrix stores
Each e‑commerce project requires reliable connections with payments, fiscalization, logistics, and CRM. We integrate YooKassa, CloudPayments, Tinkoff, Apple Pay, Google Pay for payments; ATOL and OrangeData for 54-FZ compliance via sale.cashbox; CDEK, Boxberry, PEC, Russian Post, Yandex.Delivery for logistics; Bitrix24, amoCRM, Roistat, Calltouch, Mindbox for analytics and CRM. All integrations are configured with proper error handling and fallback logic.
What's included in 1C-Bitrix website development
Each project includes a full set of documentation and artifacts to prevent knowledge loss after handover.
- Technical specification – user stories, infoblock diagrams, integration schemas.
- Source code in Git – with commit history, release tags, branching rules.
- Administrative documentation – description of custom components, deployment instructions, list of agents and events.
- Staff training – up to a 3-hour webinar: admin panel, order management, price settings. Recorded for later review.
- Access to staging during development – test before production deployment.
- Warranty support – bug fixes for 30 days after launch. Post-warranty support packages with SLA (response 2 hours, resolution 8 hours).
Our process and technologies
| Project type |
Timeline |
Complexity |
Key features |
| Corporate website |
from 1 month |
Medium |
Catalog, news, forms, CRM integration |
| Online store |
from 2 months |
High |
54-FZ, marketplaces, 1C exchange, SKU |
| B2B portal |
from 3 months |
Very high |
Personal prices, document flow, Bizproc |
| Landing page |
from 2 weeks |
Low |
LCP < 2s, composite cache, static |
| Multisite structure |
from 1.5 months |
High |
Separate content, shared catalog, hreflang |
Tech stack: mobile-first markup, tested on physical devices (iPhone, iPad, Android). Use BrowserStack for Safari on iOS. Performance goals: LCP < 2.5 s, FID < 100 ms, CLS < 0.1. Enable composite site (composite module), CDN, tagged caching, WebP/AVIF, lazy loading. SEO: Schema.org via JSON-LD, auto-generation of sitemap.xml via seo module, canonical and hreflang for multilingual versions. robots.txt blocks /bitrix/ from indexing. CI/CD: Git, auto-deploy via GitLab CI, staging. DB migrations: sprint.migration module with versioning.
Process:
-
Analytics – study competitors, gather requirements, create prototypes in Figma. Output: technical specification with user stories.
-
Design – UI/UX with design system. Components are reusable.
-
Development – write components with custom templates in
local/templates/. Business logic in local/modules/.
-
Testing – functional, cross-browser, load testing (up to 1000 requests). Critical bugs fixed before launch.
-
Launch – deploy to production, monitoring via UptimeRobot, alerts in Telegram. Fixes for first 48 hours.
Multilingual support and redesign
Full localization via language files lang/ and SITE_ID mechanism. hreflang for each version. Regional versions with different prices and content – IP detection (main.geo) or manual selection. Multidomain – unified management of multiple domains.
Redesign without losing rankings: performance audit (PageSpeed, WebPageTest), SEO (Screaming Frog). New template in local/templates/ with preserved URL structure. 301 redirects only if URL changes significantly. Kernel update, migration to D7 ORM, infoblock restructuring, migration via sprint.migration with Git.
Guarantee and support
We have been working with 1C-Bitrix for 12+ years, completed 500+ projects. Certified developers on staff. Fixed price in contract – no surprises. Warranty period covers code errors. After warranty, subscription packages with SLA (response time 2 hours, resolution 8 hours). 24/7 availability monitoring, alerts in Telegram. Get a consultation and preliminary estimate: contact us via the form on the website or chat – we'll respond within an hour. Order turnkey development – we'll design infoblocks, integrate 1C, and speed up the catalog. If you already have a site on another CMS, order a performance audit and migration to Bitrix.