A performance-focused e-commerce rebuild for one of Croatia’s largest record labels, balancing WooCommerce, a bespoke CRM integration, brand identity, cost, and a large multimedia catalog.
Records, books and comics from the shop. Tap a cover to turn it over.
Menart is one of the largest record labels in Croatia. They also run a multimedia store with both a physical and web presence.
They came to us because their web shop was not delivering in a few important areas:
- performance was poor, especially during large updates
- the design felt dated
- the store did not have a cohesive brand identity
- the platform was relatively costly to run
Challenges and context
From the start, performance was the main priority. We did not just want to make the shop faster; the goal was to reach a high-performance experience with as few compromises as possible.
The biggest constraint was the client's bespoke CRM. It was synchronized with their WooCommerce shop through a custom process, so any solution either had to work with that process or replace it. Replacing it would have meant changing more than just the website, so every technical decision had to be evaluated against that operational reality.
Approach 1: a static site with a headless store
We first explored a static frontend built with Astro and Solid, backed by a headless commerce setup.
This had an obvious upside: excellent frontend performance. For a shop with a large catalog and a performance problem, that was attractive. But the drawbacks were substantial:
- the backend would still need to exist, but would become detached from the frontend
- a catalog of roughly 50,000 products made full static builds difficult to scale cleanly
- product pages would need to be dynamic anyway
- rich filtering and sorting reduced the practical benefit of a fully static catalog
- doing too much client-side work would hurt the mobile experience
- WooCommerce still had to remain close to the system because of the CRM synchronization process
- many static-site benefits could also be achieved through careful caching and optimization
We built a quick Astro/Solid prototype to test the idea. The performance was extremely good with minimal effort, and the WooCommerce API held up well even on the weak shared hosting used at the time.
But the approach introduced too many risky details around carts, checkout, sorting, filtering, and operational transparency. It was promising technically, but not the right foundation for this project.
Approach 2: server-side rendering in a more robust stack
We also considered a more conventional server-rendered rebuild.
Next.js was an option, but our experience with it on both small and very large projects made us cautious. It can work well, but it often introduces enough complexity that the tradeoff stops being attractive.
We also considered several .NET approaches: a middleware service for the CRM sync, a .NET backend with an Astro/Solid frontend, full ASP server-side rendering, and even Blazor.
None of these were a strong fit. A .NET middleware service would have mostly recreated the current WooCommerce API layer with extra moving parts. The .NET e-commerce ecosystem also did not feel as mature or polished as WooCommerce for this use case, and the stronger options tended to come with licensing costs that worked against the goal of reducing recurring expenses.
Approach 3: Shopify and similar platforms
Shopify was the obvious hosted-commerce alternative, but it came with its own problems:
- higher long-term recurring costs
- a more difficult CRM integration, likely requiring custom middleware
- less control over a critical business channel
- performance limits compared with a carefully optimized custom solution
For this client, the convenience of a hosted platform did not outweigh those tradeoffs.
Approach 4: keep the current stack
The existing store was built on WordPress and WooCommerce. These are not our favorite technologies, but in this case there were good reasons to keep them.
WooCommerce was already part of the CRM synchronization flow, it was mature enough for the catalog and checkout requirements, and it avoided the risk of replacing core business infrastructure just to improve the frontend.
The downsides were real:
- weaker modern development tooling
- plugin-heavy development practices
- performance problems without careful implementation
- more discipline required around caching, optimization, and custom code
But it was still the most practical direction. The project became less about choosing the newest stack and more about rebuilding the experience around the stack that best matched the client's operational constraints.

Direction
The final direction focused on preserving the stable parts of the existing commerce workflow while improving the parts users actually felt: performance, design, brand consistency, and the overall shopping experience.
That meant treating WooCommerce as the mature commerce core, reducing avoidable complexity, and applying a much stricter hand to frontend implementation, custom functionality, caching, and optimization.
The important lesson was that performance work is not just a stack decision. In this case, the best technical choice was the one that respected the client's CRM, catalog, checkout flow, cost constraints, and need for a reliable daily operating system.
What shipped
The new shop launched in November 2025. It keeps WooCommerce and the existing CRM sync, on a modern WordPress foundation (Roots Bedrock and Sage) behind Cloudflare, with a new design and brand identity: a bold violet, rounded product cards, and clear paths into books, music, board games, toys, gaming and stationery.

Browsing follows the way people actually shop there. Beyond categories, customers can go straight to an author, a series, a performer, a format like vinyl or Blu-ray, or a language.

On desktop, the shop scores 94 in Lighthouse, with the main content on screen in about 1.6 seconds. Pages come back from the server in around 50 milliseconds.
Search did better too. Before the relaunch, about 5.3% of people who saw the shop in Google clicked through. Since then it has been 8 to 9%, and the average position has moved up from 7.6 to around 7. Daily clicks from search have held steady while the shop shows up for fewer, better-matched searches.
And the shop sells more: orders are up about 10% year on year over the last six months.
We have since built the record label's new website as well.
Around the shop

- Wordpress
- Roots
- WooCommerce
