Ready-made themes from the OpenCart marketplace are often overloaded with unused code: dozens of options, sliders, and fonts that a particular store doesn't need. This leads to slow loading and poor Core Web Vitals scores — LCP > 3 s, TTFB > 500 ms. A custom theme solves the problem radically: we write only the code your store actually needs. Over several years, we've developed more than 30 unique themes for OpenCart 3.x and 4.x, and each undergoes a performance audit before deployment.
Our approach is engineering-driven, without marketing promises. We use a modern stack: Twig (OpenCart 4 templating engine), CSS preprocessors, and Vite-based build for production optimization. The result is a theme that perfectly matches the design, loads fast, and is easy to maintain. Get a consultation for your project.
Why is a custom OpenCart theme faster than a ready-made one?
Ready-made themes contain many options (color schemes, layout switchers, sliders) that are often unused but still loaded into memory. This increases CSS/JS size and the number of requests.
A custom theme includes only the necessary styles and scripts. We control every byte: minify, bundle files, add caching. Result: LCP < 1.5 s and TTFB < 300 ms on typical hosting.
Additionally, we implement proper semantics and microdata (schema.org, JSON-LD), which positively impacts SEO.
What is included in custom theme development?
| Stage | Result | Time |
|---|---|---|
| Analysis of requirements and design mockups | Page structure prototype | 1-2 days |
| Basic template markup (header, footer, navigation) | Responsive Twig templates | 2-3 days |
| Catalog and product page integration | Templates with options, gallery, filters | 2-3 days |
| Cart and checkout | User flow without errors | 2-3 days |
| Mobile and tablet adaptation | Mobile-first layout with srcset |
1-2 days |
| Testing and fixes | Cross-browser compatibility | 2-3 days |
| Documentation and handover | Installation and setup instructions | 0.5 day |
After each stage, we demonstrate intermediate results on a staging server.
How do we build the theme architecture?
OpenCart 4 uses Twig — a flexible templating engine with block inheritance. We create an independent theme that overrides only the necessary files; the rest is taken from the default theme.
catalog/view/theme/{theme_name}/ ├── template/ │ ├── common/ │ │ ├── header.twig │ │ ├── footer.twig │ ├── product/ │ │ ├── category.twig │ │ ├── product.twig │ ├── checkout/ │ │ ├── cart.twig │ │ ├── checkout.twig └── stylesheet/ Assets are included via the theme controller using $this->document->addStyle() and addScript(). For production, we run npm run build, which generates hashed files for cache-busting.
How do we ensure high performance?
We apply several techniques: tree-shaking for CSS/JS, bundle splitting for catalog and checkout pages, and Edge Functions for dynamic caching. The result is minimal bundle size and instant response.
Comparison of custom vs. ready-made theme
| Parameter | Custom theme | Ready-made theme |
|---|---|---|
| CSS/JS size | ~50 Kb | ~200-500 Kb |
| Number of requests | 10-15 | 30-50 |
| LCP (typical) | < 1.5 s | > 3 s |
| Responsiveness | Mobile-first | Often poor |
| Microdata | Yes | Not always |
| Support | 30 days | No |
Typical mistakes in OpenCart theme development (and how to avoid them)
- Ignoring Twig caching. Without caching, each request compiles templates — CPU load increases. We enable caching in production.
-
Incorrect handling of product options. We use
selectandradiotypes with price updates via JavaScript without page reload. -
Missing lazy loading for images. Gallery is built with
srcsetandloading="lazy", the first image usesfetchpriority="high".
Warranty and support
We provide a 30-day warranty for hidden layout and integration defects. If you find a display error on any device after launch, we fix it free of charge. Post-release maintenance is also available on request.
Our experience: many years working with OpenCart, participation in high-load commercial projects, knowledge of all platform versions. We use best practices — from Repository pattern for database work to Suspense for complex interfaces.
If you need a similar theme, order development — contact us. We will evaluate the project and offer the optimal solution.
Example product card template
Key variables in product.twig:
{{ product_id }}, {{ name }}, {{ description }}, {{ model }} {{ price }}, {{ special }}, {{ tax }} {{ rating }}, {{ reviews }} {{ manufacturer }}, {{ manufacturer_href }} {{ thumb }}, {{ images }} {{ options }} {{ meta_title }}, {{ meta_description }} {{ canonical }} For product variants, we use select and radio types with price updates via JavaScript. The image gallery is built with srcset and loading="lazy", and the first image uses fetchpriority="high".
The full template code and JavaScript for adding to cart are available upon ordering the service.







