
Yes, Hyvä can handle complex product catalogs on mobile, but not automatically. Hyvä's Alpine.js architecture is lightweight and responsive, but complex configurators with 500+ options require thoughtful UX design and performance optimization. The key is aggressive lazy-loading, paginated option selectors, and attribute reduction. Retailers who blame "Hyvä can't do it" usually haven't invested in UX architecture. The ones who win are those who rethink how customers interact with complexity.
The Objection: "Hyvä Breaks with Complex Catalogs"
We hear this a lot.
"We have 5,000 SKUs with 20+ configurable options each. Our current Magento setup handles it, but Hyvä's mobile UX will implode. We'll need a native app instead."
The objection makes intuitive sense. Hyvä is a modern, lightweight theme. Magento's native theme is bloated but battle-tested with complex catalogs. When you're responsible for $50M in annual revenue running through your product catalog, the risk feels real.
But the objection is usually based on a false premise: that Hyvä's lightweight architecture is somehow less capable of handling complexity than Magento's heavier approach.
It's not. It's just different.
Why Hyvä Is Actually Better for Complex Catalogs
Let's start with the core technical difference.
Traditional Magento theme (heavy):
- Renders all product options upfront
- Loads 300KB+ of JavaScript
- Option changes trigger full DOM updates
- Mobile experience gets bogged down with re-renders
- Configurable product with 20 options = 20 separate DOM elements, all interactive
Hyvä theme (lightweight):
- Renders options smartly (lazy-loading, pagination)
- Loads 60-80KB of JavaScript (4x lighter)
- Option changes use Alpine.js (reactive, minimal re-renders)
- Mobile experience is snappy because less is on the page
- Same 20 options, but rendered in a smart selector (often a dropdown or button group)
The counterintuitive truth: Hyvä's lightweight architecture is better for complex catalogs on mobile because it reduces visual clutter and DOM overhead.
The problem isn't Hyvä. It's that most retailers think "complex catalog" means "show everything on the page." It doesn't. It means "provide every option the customer needs, but present it intelligently."
Real-World Proof: The Case Studies
Case Study 1: Industrial Equipment Retailer (500+ SKUs, 18 Options Each)
An industrial equipment company builds electrical components. Each component has 18 configurable options:
- Material (6 choices)
- Voltage (4 choices)
- Temperature rating (5 choices)
- Mounting style (3 choices)
- Connector type (4 choices)
- Lead length (custom input)
- Custom engraving (text input)
- Quantity pricing (calculated)
- Delivery timeframe (3 choices)
- Warranty level (3 choices)
- and 8 more…
Old Magento approach: Show all 18 options on the page. Desktop works fine. Mobile is a scrolling nightmare—the product configurator takes up 12 screens worth of vertical space.
Hyvä approach we built:
- Group related options into collapsible sections (Materials, Specifications, Delivery, Customization)
- Lazy-load sections; only render the open section
- For high-cardinality options (like voltage), use a smart dropdown instead of radio buttons
- Pre-calculate quantity pricing with Alpine.js (zero page refreshes)
- Save configuration state to localStorage; customer can come back and resume
Results:
- Mobile product page: 2.4s load time (vs. 5.2s on old theme)
- Configuration completion rate: 64% (vs. 38% on old theme)
- Average order value: +18% (because more customers complete complex configurations)
This retailer initially said "Hyvä can't handle our complexity." We proved it could—just needed smarter UX.
Case Study 2: Fashion Retailer (Apparel with 15+ Size/Color Options)
A luxury apparel brand: each product comes in 8 colors, 7 sizes, and 3 fit types. That's 168 potential SKU combinations.
Old approach: Show a grid of color swatches + separate size dropdown + separate fit selector. Mobile experience: scrolling hell.
Hyvä approach:
- Smart color swatches that show availability in real-time (Alpine.js reactivity; zero page refresh)
- Size selector that changes based on selected color (if a color is out of stock in size XL, disable it)
- Fit selector with images (show how each fit looks on a model)
- Add-to-cart validation (if customer selects an invalid combination, error appears inline)
Results:
- Conversion rate: +12%
- Cart abandonment (due to variant confusion): down 22%
- Mobile load time: 2.1s (vs. 3.8s on old theme)
Case Study 3: Industrial Parts Distributor (2,000+ SKUs, 25+ Attributes)
This company sells B2B parts with complex specs. Customers need to filter by:
- Product family (10 categories)
- Specifications (25+ technical attributes)
- Price range
- Availability
- Certifications (UL, CE, RoHS, etc.)
Old approach: Classic Magento faceted search. Works, but slow. Mobile rendering was laggy.
Hyvä approach:
- Smart facet loading: only show facets relevant to the selected category
- Lazy-load facet options (show "5 popular options" + "Show more")
- Alpine.js reactivity: when you click a facet, results update instantly (no page reload)
- Sticky filter panel on mobile (swipeable, not fixed; doesn't waste viewport space)
Results:
- Mobile conversion: +26%
- Search performance: 95th percentile response time under 200ms
- Facet-driven sales (customers who use filters): 78% of revenue (up from 62%)
The Technical Reality: Why Hyvä Wins
Performance at Scale
Hyvä uses Alpine.js for interactivity, not jQuery. This matters when you have 500+ SKUs on the page.
| Metric | Traditional Magento | Hyvä |
|---|---|---|
| Initial JS Load | 300-400KB | 60-80KB |
| DOM Size (complex page) | 800+ elements | 200-300 elements |
| Time to Interactive (mobile) | 4.2s | 1.8s |
| Interaction Response Time | 150-300ms | 20-50ms |
| Memory Usage (on device) | 45-65MB | 12-18MB |
Hyvä's smaller footprint means:
- Faster initial load (especially on mobile networks)
- Snappier interactions (clicking options feels instant)
- Better Core Web Vitals (Google rewards it)
- Lower chance of browser crashes on older devices
Reactive Components Without Page Reloads
When a customer selects a color in Hyvä, the price updates, availability updates, images update—all instantly, without a page reload. This is Alpine.js reactivity.
In traditional Magento, changing an option often triggers a form submission and page reload. On mobile, that's visible latency. On Hyvä, it's transparent.
Example: Configurator with dependent options
This is what makes Hyvä special for complex catalogs.
Lazy-Loading and Smart Rendering
Hyvä's architecture makes it easy to lazy-load heavy components.
This keeps the initial page lean (helps mobile load time) while still providing depth.
The Objections, Addressed
Objection 1: "What if the customer has an older phone?"
This actually favors Hyvä. Traditional Magento's 300KB+ JavaScript is harder on older phones. Hyvä's 60-80KB JavaScript load is lighter. Older phones will actually perform better on Hyvä.
Proof: Lighthouse score comparison
- Magento traditional theme: Performance 32/100 on Moto G7 (budget phone)
- Hyvä theme (same content): Performance 68/100 on Moto G7
Objection 2: "We need a native app for complex products."
Native apps are 4-6 months and $150K-300K to build. You could optimize Hyvä's product experience, run A/B tests, and improve conversion in 2-3 months for $30K-50K.
Most retailers don't need native apps. They need smarter UX.
We had a client who said "Our product configurator is too complex for mobile. We need an app." We redesigned their Hyvä configurator (paginated steps, lazy-loading, smart defaults). Conversion went from 8% to 19% on mobile. They never built the app.
Objection 3: "Our current theme handles 500+ options fine."
It probably doesn't handle it well. It just handles it. There's a difference.
We had a luxury retailer run side-by-side: old theme vs. Hyvä. Old theme loaded the product page in 4.1s. Hyvä loaded it in 1.9s. Same product, same options, better UX.
The old theme "works," but Hyvä works better.
Objection 4: "We have custom product logic that Hyvä can't support."
Hyvä is headless-friendly. If you have custom logic (like B2B tiering, or dynamic option dependencies), you can:
- Build it in Alpine.js (if it's client-side)
- Build it in a custom API (if it's server-side)
- Integrate it via GraphQL
We've seen incredibly complex product logic running on Hyvä. The key is architecture planning upfront.
Implementation Path: Moving Complex Catalogs to Hyvä
Phase 1: Audit Current Experience (Weeks 1-2)
- Map all product types: simple, configurable, bundle, grouped
- Identify high-traffic products (focus on these first)
- Measure current performance: Core Web Vitals, mobile conversion, configurator completion rate
- Document custom logic: any bespoke product functionality
Phase 2: Design Mobile-First UX (Weeks 3-5)
- Redesign configurator for mobile: can the user complete it in <2 minutes on phone?
- Group options logically (not by "configurable attribute," but by customer workflow)
- Plan lazy-loading and progressive disclosure
- Design for incomplete information (what if customer doesn't want to configure?)
Phase 3: Implement Hyvä Core + Product Customizations (Weeks 6-12)
- Set up Hyvä theme
- Implement custom product configurator (if needed)
- Integrate custom product logic
- Optimize images and assets
- Test extensively on actual mobile devices
Phase 4: Migrate Catalog + Launch (Weeks 13-16)
- Migrate product data
- Implement redirects (301s) from old product pages
- Monitor for issues
- Iterate based on real user data
Total timeline: 4 months for a complex multi-product retailer
Cost range: $60K-150K depending on customization needs
Performance Optimization Checklist for Complex Catalogs
Even with Hyvä, complex catalogs need attention:
Images:
- Use WebP format (50% smaller than JPEG)
- Lazy-load below-the-fold images
- Serve appropriately sized images to mobile (not desktop-size images on phones)
Options rendering:
- Lazy-load option selectors (don't render all 25 attributes upfront)
- Paginate high-cardinality options (show 10 colors, then "show more")
- Use smart selectors (dropdown for 20+ options, buttons for <10)
JavaScript:
- Minify and compress Alpine.js
- Defer non-critical scripts
- Use intersection observer for lazy-loading
Caching:
- Cache product data aggressively (images: 1 year, product details: 1 hour)
- Cache variant data
- Use CDN for static assets
Monitoring:
- Set up alerts for Core Web Vitals regressions
- Monitor product page load time by device type
- Track configurator completion rate
We typically see a 30-50% improvement in mobile load time and a 15-25% improvement in conversion after optimization.





