Bitrix monolithic architecture with PHP templates covers 80% of tasks. The remaining 20%—high-load pages, SEO for dynamic content, PWA, personalization with edge computing—require a different approach. We offer a headless solution: Next.js as the frontend on top of a Bitrix backend. Bitrix manages content and business logic, Next.js handles rendering. This is not a replacement for Bitrix but a separation of responsibilities: Bitrix is the reliable e-commerce backend (orders, catalog, CRM, payments), Next.js is the modern frontend with SSR, SSG, ISR, and excellent Core Web Vitals. Our team has 10+ years of Bitrix development experience and 50+ successful projects. We'll evaluate your project in 1 day.
Headless Architecture: Bitrix + Next.js
Bitrix acts as an API server. On its side, we develop REST controllers via \Bitrix\Main\Engine\Controller or custom endpoints in /local/ajax/. Next.js runs on a separate server (Node.js), consumes the Bitrix API, and renders pages. The API layer sits between them.
Browser → Next.js (SSR/SSG) → Bitrix REST API → DB
↓
Redis Cache
Typical request flow:
// next.js: getStaticProps for a category page
export async function getStaticProps({ params }) {
const [category, products] = await Promise.all([
fetchBitrix(`/api/catalog/category/${params.slug}`),
fetchBitrix(`/api/catalog/products?section=${params.slug}&limit=24`),
]);
return {
props: { category, products },
revalidate: 300, // ISR: regenerate every 5 minutes
};
}
Incremental Static Regeneration (ISR) is a key Next.js feature for e-commerce: pages are statically generated on first request and regenerated in the background on a schedule. This gives static speed with dynamic content freshness.
Why Next.js Outperforms Traditional Bitrix PHP Templates
Let's compare metrics: Next.js achieves LCP up to 1.4 seconds versus 4.8 seconds with a standard template, and PageSpeed Mobile climbs from 34 to 82. Traditional templates load slower due to monolithic architecture, while Next.js with ISR serves pages from cache in milliseconds. ISR is the difference between a lost customer and a conversion.
API Development on the Bitrix Side
Creating a clean REST API on top of Bitrix without unnecessary dependencies:
// /local/php_interface/include/api/catalog/ProductsController.php
class ProductsController extends \Bitrix\Main\Engine\Controller
{
public function getListAction(
string $section = '',
int $page = 1,
int $limit = 24,
string $sort = 'NAME',
string $order = 'ASC'
): array {
$filter = ['ACTIVE' => 'Y', 'IBLOCK_ID' => CATALOG_IBLOCK_ID];
if ($section) {
$sectionId = $this->getSectionIdBySlug($section);
$filter['SECTION_ID'] = $sectionId;
$filter['INCLUDE_SUBSECTIONS'] = 'Y';
}
$result = \CIBlockElement::GetList(
[$sort => $order],
$filter,
false,
['nPageSize' => $limit, 'iNumPage' => $page],
['ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_PICTURE',
'PROPERTY_BRAND', 'CATALOG_PRICE_1']
);
$products = [];
while ($el = $result->GetNextElement()) {
$products[] = $this->formatProduct($el);
}
return [
'items' => $products,
'total' => (int)$result->SelectedRowsCount(),
'pages' => ceil($result->SelectedRowsCount() / $limit),
];
}
}
The API must return normalized data, not raw Bitrix structures with junk fields like ~PREVIEW_TEXT and IBLOCK_ELEMENT_ID. For more on Bitrix REST API, see the official documentation.
SSR for SEO-Critical Pages
Product cards, category pages, blog articles are candidates for SSG/ISR. Cart, checkout, personal account are CSR (client-side rendering) – SEO is not needed.
// Dynamic path generation for products
export async function getStaticPaths() {
const products = await fetchBitrix('/api/catalog/products/slugs');
return {
paths: products.map(p => ({ params: { slug: p.slug } })),
fallback: 'blocking', // new products render on first request
};
}
fallback: 'blocking' allows handling new products without full site regeneration.
Case Study: Next.js Frontend for a Fashion Retailer
A clothing retail chain with an online catalog of ~35,000 SKUs and seasonal restocking. Problem: Core Web Vitals LCP = 4.8 sec (target < 2.5 sec), the Bitrix template was heavy and slow on mobile.
We kept Bitrix as the backend: product management, orders, CRM, 1C integration. We developed a Next.js frontend.
Implementation:
-
Bitrix API: controllers for products, categories, brands, search, cart (SSR-compatible via cookie session).
-
Next.js App Router (Next.js 14): Server Components for SEO pages, Client Components for interactive elements (filters, cart, authentication).
-
Images:
next/imagewith automatic optimization, WebP, responsive srcset. Images hosted on CDN (separate from Bitrix). -
Search: Meilisearch with index from Bitrix, React component for instant search.
-
Cart: state managed by Zustand + synchronization with Bitrix cart via REST API on every change.
| Metric | Bitrix Template | Next.js |
|---|---|---|
| LCP | 4.8 sec | 1.4 sec |
| CLS | 0.18 | 0.02 |
| FID / INP | 280 ms | 45 ms |
| PageSpeed Mobile | 34 | 82 |
| TTFB (category) | 820 ms | 180 ms (ISR cache) |
The migration took 4 months: 1 month for Bitrix API, 3 months for Next.js frontend. The old template ran in parallel; switchover was done via DNS in minutes.
How to Integrate Cart Between Next.js and Bitrix?
The cart is challenging in headless: it must work before authentication, sync with Bitrix upon login, and not get lost when navigating between pages. Solution: guest_token in a cookie, cart stored in Bitrix by this token. On login – merge guest cart with user cart. React state is only a UI mirror of the server cart.
Our engineers guarantee no cart loss: decades of project experience confirm this scheme's reliability.
Deployment and Infrastructure
Next.js is a Node.js application requiring a separate process. Options: Vercel (simplest but data goes abroad), VPS/dedicated with PM2 + nginx, Docker container.
Nginx as a reverse proxy in front of Next.js and Bitrix:
# Static and SEO pages → Next.js
location / {
proxy_pass http://nextjs:3000;
}
# REST API → Bitrix
location /api/bitrix/ {
proxy_pass http://bitrix/local/ajax/;
}
# Admin section → Bitrix
location /bitrix/ {
proxy_pass http://bitrix;
}
What's Included in the Work
- Audit of your current Bitrix frontend and headless architecture planning
- REST API design: endpoints, data schema, caching
- Development of clean REST controllers in Bitrix
- Next.js application development: routing, SSG/ISR/SSR, components
- Integration of cart, authentication, checkout with Bitrix
- CDN setup for images, nginx-level caching
- Deployment, monitoring, CI/CD
- Documentation and team training
Estimated Timelines
MVP (catalog + product page + search) – 2–3 months. Full frontend with cart, checkout, personal account – 4–6 months. Pricing is individual – contact us for a project estimate.
Want to improve Core Web Vitals and SEO? Get a free consultation. Order an audit – we'll prepare a turnkey proposal.







