How to Develop a Mobile App for a Bitrix Online Store?
The request for a mobile app arises when responsive layout is already in place, mobile traffic converts at 0.8% vs. 2.5% on desktop, and marketing wants push notifications that don't work in mobile Safari. The question is not "why an app," but which approach to choose — PWA, cross-platform with React Native, or native development — and how to properly connect it to Bitrix. We select the approach based on specific budget and goals, leveraging 9+ years of Bitrix experience and 50+ completed projects. With the right choice, payback is 6–12 months, and development cost varies by functionality.
Why React Native Is the Choice for Most Stores
React Native delivers 2–3x faster launch compared to native development while maintaining native UX. Bitrix acts as the backend, serving data via REST API. If custom API endpoints (headless) are already written for the web version, the app reuses them unchanged.
Architecture:
React Native App → HTTPS → API Gateway → Bitrix REST API → ORM → MySQL
Key REST methods: catalog.product.list, sale.basket.addItem, sale.order.add. But standard REST is insufficient. We write custom endpoints via \Bitrix\Main\Engine\Controller:
-
/api/mobile/catalog/list — lightweight response for listings (ID, name, price, preview)
-
/api/mobile/catalog/detail — full card with SKUs
-
/api/cart/calculate — recalculate cart with discounts
-
/api/checkout/delivery-options — calculate shipping costs
Why separate endpoints? Response size. On 3G, a catalog with 50 fields per item kills UX. A mobile endpoint returns 7–8 fields for listings.
How Cursor Pagination Solves Duplicate Problems
On the web, page-based pagination (page=3&limit=20) works. On mobile, users scroll infinitely. If a new product is added between requests — duplicates appear. The solution is cursor pagination. Each response contains a cursor (ID+timestamp of the last item). The next request passes cursor instead of a page number.
GET /api/mobile/catalog/list?section_id=15&cursor=...&limit=20
On the Bitrix side, the cursor is decoded into WHERE ID < 1500 ORDER BY ID DESC LIMIT 20 — stable selection regardless of new products.
Push Notifications: Architecture and Scenarios
Push is the main advantage of an app. Architecture:
- Device token — the app registers with FCM or APNs, gets a token, sends it to the server via
/api/push/register.
- Token storage — custom table in Bitrix:
USER_ID, DEVICE_TOKEN, PLATFORM, CREATED_AT.
- Event generation — a handler for
OnSaleStatusOrder or an agent for abandoned carts builds the payload.
- Sending — HTTP POST to FCM API v1 with the token, title, text, and deeplink.
Scenarios:
- Order status — event
OnSaleStatusOrder
- Abandoned cart — 30 minutes after adding (agent
CAgent)
- Price drop — a favorited item’s price decreased
- Personalized promotions — via CRM segmentation
We use @react-native-firebase/messaging to receive pushes, react-native-push-notification for local display.
What Offline Mode Provides
On first launch, the app downloads the catalog via REST API in batches of 100 items and stores it in local SQLite. Images are cached via react-native-fast-image. Then delta synchronization. Endpoint /api/catalog/delta?since=... returns only changed products. On the Bitrix side:
SELECT ID, NAME, PREVIEW_PICTURE, DETAIL_PAGE_URL
FROM b_iblock_element
WHERE IBLOCK_ID = 15
AND TIMESTAMP_X > ?
AND ACTIVE = 'Y'
Plus a separate request for deleted items. The cart offline is saved locally; when connectivity returns, it syncs with the server and checks current prices. The app shows a diff: "Price for item changed from 1500 to 1350 rub."
Checkout and Payment In-App
Checkout is technically complex. Sequence:
- Delivery address — autocomplete via DaData or saved address
- Delivery calculation — request to
/api/checkout/delivery-options with address and cart. Bitrix calls handlers (CDEK, Boxberry), returns options with prices and terms
- Payment method selection — list from
sale.paySystem.getList
- Promo code — verification via custom endpoint, recalculates total
- Confirmation —
sale.order.add
Card payment — via payment gateway SDK (YooKassa, Apple Pay, Google Pay). The SDK opens a native payment screen, handles 3D Secure, returns the result. After payment, Bitrix receives a callback from the gateway at /bitrix/tools/sale_ps_result.php and sets PAYED = 'Y' in b_sale_order.
Comparison of Approaches
| Characteristic |
PWA |
React Native |
Native |
| Complexity |
Low |
Medium |
High |
| Access to native APIs |
Limited |
Good |
Full |
| Push on iOS |
With limitations |
Full |
Full |
| Performance |
Medium |
High |
Maximum |
| Development time |
2–3 days |
3–12 weeks |
8–20 weeks |
PWA is 5x faster to develop than React Native, but not suitable for complex scenarios. React Native is the sweet spot for 90% of stores. Native development is needed only for extreme performance requirements.
What Is Included in the Work
When ordering turnkey development:
- technical specification with architecture and prototypes
- code repository (GitHub/GitLab), configured CI/CD
- deployment and integration documentation for Bitrix
- instructions for publishing to App Store and Google Play
- training for administrators on push notifications and content updates
- code warranty — 12 months of free bug fixes
Timeline by Scale
| Scale |
What's Included |
Time (React Native) |
| PWA |
Manifest, service worker, offline page |
2–3 days |
| MVP |
Catalog, product card, cart, checkout, push |
3–5 weeks |
| Standard |
+ Account, history, favorites, offline catalog |
6–8 weeks |
| Advanced |
+ Scanner, AR try-on, chat, Apple Pay/Google Pay |
8–12 weeks |
Contact us for a project assessment — we'll select the optimal stack and timeline. Get a consultation on choosing the approach — we'll compare options for your budget.
PWA — MDN Web Docs: Progressive Web Apps
Why is 1C-Bitrix the flagship of e-commerce?
A faceted index on a catalog of 200,000 SKUs is not built — bitrix:catalog.smart.filter takes 4 seconds instead of 200 ms, and the customer leaves. Our online store development on 1C-Bitrix eliminates such scenarios: from infoblock architecture and price types to cluster balancing under peak loads. With over 12 years of experience and 200+ completed e-commerce projects, we have solved every performance bottleneck.
Two-way synchronization with 1C via CommerceML — catalog, prices, balances, orders, and statuses. Configured from the admin panel via the catalog module -> 'Exchange with 1C'. Export to marketplaces via YML feeds (catalog.export) for Yandex.Market, Google Shopping, Ozon, Wildberries. According to Wikipedia, 1C-Bitrix is used by more than 70,000 commercial sites in Russia and the CIS (https://en.wikipedia.org/wiki/1C-Bitrix). Contact us to evaluate your current architecture.
How do we solve key performance problems?
bitrix:catalog.smart.filter without faceted index generates queries that bring down MySQL. Solution: build b_catalog_iblock_index — response time drops from 4 seconds to 100–200 ms. For SEO filters, we use catalog.seo.filter — indexable filter intersection pages with unique meta tags.
Composite cache (bitrix:main.composite) speeds up page loading by 3–5 times compared to regular. Goal — product card TTFB < 200 ms. For sessions we use Redis (SESSION_SAVE_HANDLER = redis in .settings.php). Lazy load images, CDN for static, SQL optimization (especially JOINs on b_iblock_element_property). As noted in the official Bitrix documentation, composite cache delivers a page from HTML, bypassing PHP execution and database requests, giving a speed advantage of up to 5x.
Why is caching critical for an online store?
Each second of page load delay reduces conversion by an average of 7%. At TTFB > 400 ms, 32% of users leave the site. Composite cache delivers a page from HTML, bypassing PHP execution and database requests — this gives a speed advantage of up to 5 times. For product cards with frequent price and stock changes, we use tagged caching: invalidation occurs only for affected entities. In practice, we have reduced TTFB from 1.2 seconds to 180 ms. Time savings on catalog loading — up to 60%.
Store types and their features
| Store type |
Key modules |
Features |
| B2C retail |
catalog.smart.filter, catalog.compare.list, reviews, ratings |
Faceted index, conversion funnel from card to payment |
| B2B wholesale |
dealer prices (b_catalog_group), min. lots, credit limits |
Personal accounts, quick order by SKU, PDF invoices |
| Digital goods |
licenses, subscriptions, files |
OnSaleOrderPaid -> automatic access granting |
| Marketplace |
"Marketplace" module or custom |
Multiple sellers, separate accounting, commission model |
| PWA / mobile |
Progressive Web App, React Native + REST API |
Offline catalog, push notifications |
Integrations: payment systems, delivery, CRM, marketplaces
Payment systems. Handlers in sale.handlers: YooKassa, CloudPayments, Tinkoff, Sberbank, Apple Pay, Google Pay, installment. Callback sale.payment.notify for status confirmation. Delivery. Handlers sale.delivery for CDEK, Boxberry, Russian Post, DPD — real-time cost calculation via API, tracking. Warehouse management. Reservation (RESERVED = Y in b_sale_basket), automatic write-off upon shipment, notifications when stock falls below threshold, pre-order for goods in transit. CRM. Bitrix24 or amoCRM — orders from b_sale_order are sent automatically, client base is synchronized. Triggers: abandoned cart, review request, reactivation. Marketplaces. Export via YML to Ozon, Wildberries, Yandex.Market. Orders flow into a single system. Analytics and marketing. GA4, Yandex.Metrica, email newsletters (Unisender, SendPulse). Logistics. MyWarehouse, Antor — labels, picking lists.
Migration from other CMS
Migration from OpenCart, WooCommerce, Shopify, MODX: transfer of catalog (elements, properties, sections, images, SEO-URLs), migration of client base (b_user) and order history (b_sale_order), 301 redirects via urlrewrite.php. Parallel operation during the transition period — old site sells, new one is accepted. Team experience — 50+ migration projects.
Example migration: from OpenCart with 50,000 products
We transferred all data, including custom attributes and review history, in two weeks with zero downtime. The new store was tested in parallel before switching DNS. Result: 25% faster page load and 15% increase in sales.
What is included in the work (deliverables)
| Deliverable |
Description |
| Technical specification |
Business requirements, catalog structure, integrations, cart logic |
| Infoblock architecture |
Price types, properties, sections, HL-blocks, ORM entities |
| Components and templates |
Custom or adapted standard (Component 2.0) |
| Integrations |
Payments, delivery, CRM, marketplaces, 1C |
| Documentation |
Content filling instructions, REST API, DB schema |
| Team training |
Working with admin panel, exports, updates |
| Warranty |
Free support 3 months after launch, bug fixes |
Stages and timelines
Average project duration — 2 to 4 months:
- Analytics (1–2 weeks) — business requirements, catalog structure, integrations, technical specification
- Design (2–3 weeks) — prototypes, design system, layouts
- Development (4–8 weeks) — components, templates, integrations, content
- Testing (1–2 weeks) — functional, load, acceptance
- Launch (2–3 days) — deployment, monitoring, operational support
Budget range: from $10,000 for a basic store to $60,000+ for a complex marketplace with multiple integrations. Clients typically see a 20–30% increase in conversion after optimization. Contact us for a precise estimate — we tailor the solution to your specific catalog size and business logic.
Loyalty program and conversion
Bonus system: points for purchases, reviews, recommendations. Accrual rules by categories, points payment limit, expiration period — all in personal account. VIP levels (bronze, silver, gold, platinum) with increased cashback and free shipping. Recommendations 'You may also like', 'Complete your purchase' — built-in Bitrix tools + RetailRocket or Mindbox. Triggers: birthday discount, promo code for return, interest chain. Personalization via catalog.recommended.products and catalog.viewed.products. A/B testing of two card variants on real traffic. Enhanced E-commerce in GA4 and Yandex.Metrica — full path from click to return visit.
Request a free technical audit of your current store. Our engineers will identify performance bottlenecks and migration risks. Order turnkey online store development — get a ready solution with warranty and support.