Een Luma-shop laadt traag. Punt. De Knockout/RequireJS-stack van Magento sleept honderden kilobytes JavaScript mee voordat er iets klikbaar is.
Van Luma naar Hyvä: het complete migratie-stappenplan
Een Luma-shop laadt traag. Punt. De Knockout/RequireJS-stack van Magento sleept honderden kilobytes JavaScript mee voordat er iets klikbaar is. Hyvä gooit die laag eruit en haalt je Lighthouse-score van 30 naar 90+.
Maar een migratie is geen knop. Het is een frontend-rebuild. Wij begeleiden deze trajecten al sinds de eerste Hyvä-releases en zien dezelfde valkuilen telkens terugkomen. Dit is het stappenplan zoals wij het in echte projecten uitvoeren, met realistische doorlooptijden en de plekken waar het misgaat.
Wat je wel en niet migreert
Hyvä vervangt alleen je frontend theme. Je backend blijft Magento 2. Catalogus, orders, klanten, pricing-regels, indexers, cron: alles blijft staan. Dat is goed nieuws, want je data verhuist niet.
Wat je wél opnieuw bouwt:
- Alle
.phtml-templates van je theme - Alle CSS (van LESS naar TailwindCSS)
- Alle frontend JavaScript (van Knockout/jQuery naar Alpine.js)
- De frontend-integratie van elke third-party extensie
Dat laatste punt is de grootste kostenpost. Een extensie werkt op de backend prima door, maar de frontend-output moet je voor Hyvä opnieuw maken. Lees ook onze vergelijking van Hyvä en Luma performance als je nog twijfelt of de overstap loont.
Fase 1: Audit (3-5 dagen)
Begin nooit zonder inventarisatie. Wij brengen drie dingen in kaart.
1. Extensie-inventaris. Lijst elke installed module. Splits in: heeft frontend-output, alleen backend, of niet meer nodig. Check per extensie of er een Hyvä-compatibele versie of community-port bestaat. De Hyvä compatibility tracker is je startpunt. 2. Template-inventaris. Tel je custom.phtml-overrides en layout-XML. Een standaard Luma-shop heeft er tientallen. Een zwaar verbouwde shop honderden. Dit getal bepaalt je doorlooptijd meer dan wat ook.
3. Custom JavaScript. Elke Knockout-component, elke jQuery-widget, elke custom UI-component. Dit moet allemaal naar Alpine.js.
Het resultaat is een scope-document met een eerlijke urenschatting. Wij benoemen hier ook expliciet wat je kúnt schrappen. Vaak draaien er extensies mee die niemand meer gebruikt. Niet migreren is altijd goedkoper dan wel migreren.
| Shop-complexiteit | Custom templates | Extensies met frontend | Indicatie doorlooptijd |
|---|---|---|---|
| Licht | < 30 | < 5 | 3-5 weken |
| Gemiddeld | 30-100 | 5-15 | 6-10 weken |
| Zwaar | > 100 | > 15 | 12-20 weken |
Fase 2: Theme opzetten (2-3 dagen)
Nu de basis. Je installeert Hyvä via Composer en genereert een child theme.
composer require hyva-themes/magento2-default-theme
bin/magento hyva:theme:create
bin/magento setup:upgrade
Daarna richt je de TailwindCSS-pipeline in. Hyvä draait Tailwind via PostCSS, niet via Magento's LESS-compiler. Je tailwind.config.js is vanaf nu je single source of truth voor kleuren, spacing en breakpoints.
Vul direct je design tokens in: brand-kleuren, fonts, container-breedtes. Doe je dit goed aan het begin, dan erven alle templates het automatisch. Doe je het slordig, dan zit je later overal hardcoded hex-waardes te corrigeren.
Valkuil: teams kopiëren hun oude LESS één-op-één naar custom CSS. Dat is verspilling. Tailwind utility-classes vervangen 80% van je oude CSS. Schrijf alleen custom CSS waar Tailwind echt tekortschiet.Fase 3: Templates overzetten (grootste fase)
Hier gaat 50-60% van het budget heen. Je bouwt elke pagina opnieuw met Hyvä's blocks en Alpine.js.
Onze volgorde, op basis van impact:
- Header, footer, navigatie — overal zichtbaar, dus eerst
- Productlijst (PLP) — category pages, filters, sorting
- Productdetailpagina (PDP) — gallery, add-to-cart, tabs
- Cart en mini-cart
- CMS-pagina's en blocks
- Account-secties
Voor elke template geldt: Knockout data-bind wordt Alpine x-data/x-bind. jQuery event-handlers worden @click. AJAX-calls naar Magento blijven hetzelfde endpoint, alleen de DOM-update verloopt via Alpine.
Een tweede valkuil: layout-XML klakkeloos overnemen. In Luma stop je veel logica in default.xml en talloze handle-bestanden. Hyvä verschuift veel daarvan naar de .phtml-templates zelf. Wie de oude XML-structuur kopieert, bouwt complexiteit in die er niet meer hoeft te zijn. Begin bij elk blok met een schone lei en voeg alleen toe wat de pagina echt nodig heeft.
Werk daarnaast met Hyvä's view-models in plaats van zware blocks met businesslogica. Dat houdt je templates leesbaar en testbaar. Het scheelt de volgende developer uren zoekwerk.
Twijfel je over de aanpak van een bestaande shop? Lees Hyvä installeren op een bestaande Magento-shop voor de praktische kant.
Fase 4: Extensie-compatibiliteit (parallel)
Dit loopt naast Fase 3. Per extensie zijn er vier scenario's.
- Officiële Hyvä-versie bestaat — installeren, configureren, klaar. Beste geval.
- Hyvä-compat module van de leverancier — een bridge-package dat de frontend levert. Werkt meestal, test grondig.
- Community-port bestaat — kwaliteit wisselt, valideer de code.
- Niets beschikbaar — je bouwt de frontend zelf, of je vervangt de extensie.
Dat laatste scenario is waar projecten uitlopen. Een review-tool, een product-configurator of een page-builder zonder Hyvä-support kan weken kosten. Wij adviseren dan vaak: vervang door een tool die wél Hyvä-native is. Goedkoper en toekomstvaster.
Valkuil: Magento page-builders (zoals zware third-party builders) en Hyvä botsen vaak. Check dit in Fase 1, niet in Fase 4. Te laat ontdekken betekent budgetoverschrijding.Een tweede aandachtspunt: GTM, tracking-pixels en cookie-consent. Die haakten in Luma vaak in op RequireJS-events die in Hyvä niet meer bestaan. Marketing-tags die "altijd werkten" vallen stil zonder dat iemand het merkt. Wij testen tracking daarom expliciet als onderdeel van deze fase, niet pas na go-live. Een conversie-pixel die een week niet vuurt, kost meer dan de hele migratie.
Maak per extensie een korte beslissing vast: porten, vervangen, of schrappen. Leg dat schriftelijk vast met de geschatte uren. Zo voorkom je dat een vergeten module halverwege het project alsnog opduikt en de planning omgooit.
Fase 5: Checkout (apart traject)
De checkout is in Luma een eigen Knockout-applicatie. Die migreert niet mee. Je hebt twee routes.
Hyvä Checkout. De officiële, Tailwind/Alpine-native checkout van het Hyvä-team. Snel, schoon, los gelicenseerd van het base theme. Onze standaardkeuze voor nieuwe migraties. Compat met je bestaande checkout-extensie. Als je een third-party checkout draait (bijvoorbeeld voor specifieke payment-flows), check of die een Hyvä-bridge heeft.De checkout bepaalt je conversie. Onderschat dit niet. In onze vergelijking van Hyvä Checkout en Luma zie je waarom de snellere checkout direct conversie oplevert. Reken voor de checkout-implementatie zelf 1-2 weken, inclusief alle payment- en shipping-methodes opnieuw testen.
Valkuil: payment- en shipping-methodes lijken te werken in test, maar falen op edge-cases. iDEAL met issuer-selectie, klarna-flows, gratis-verzending-drempels: test elke combinatie met een echte order.Fase 6: QA (1-2 weken)
Pas wanneer alles staat, ga je systematisch testen. Niet ad-hoc.
Onze QA-checklist dekt minimaal:
- Cross-browser: Chrome, Safari, Firefox, mobiel Safari, Samsung Internet
- Volledige order-flow: vanaf homepage tot en met order-confirmation, per payment-methode
- Alle producttypes: simple, configurable, bundle, virtual, downloadable
- Filters en search: elk attribuut, elke sortering
- Account-flows: registratie, login, wachtwoord-reset, order-historie
- Edge-cases: lege cart, voorraad nul, kortingscodes, gast-checkout
Draai ook een Lighthouse- en Core Web Vitals-test op de belangrijkste templates. Een goede Hyvä-migratie haalt LCP onder 2,5 seconde en een mobiele performance-score van 90+. Haal je dat niet, dan zit er ergens nog een zware extensie of een verkeerd ingeladen script.
Fase 7: Go-live (1 dag + nazorg)
De overstap zelf is technisch klein. Je zet het Hyvä-theme actief op de productie-store-view en cleart de caches.
Onze go-live-volgorde:
- Deploy code naar productie (theme nog niet actief)
setup:upgradeensetup:static-content:deploy- Theme activeren op de store-view
- Caches flushen, full-page-cache warmen
- Smoke-test de order-flow live
- Monitoring aan: error-logs, conversie, server-load
Plan go-live nooit op vrijdagmiddag. En houd je oude theme een paar dagen als rollback achter de hand. Verwijder pas wanneer een week productie-data bewijst dat alles draait.
Nazorg. De eerste week na go-live komen de echte edge-cases boven. Een specifieke browser, een zeldzame payment-flow, een vergeten CMS-block. Reken op een paar dagen finetuning. Dat is normaal, geen falen.Realistische doorlooptijd en kosten
Even eerlijk over verwachtingen. Een marketeer hoort "alleen de frontend" en denkt aan twee weken. De realiteit voor een gemiddelde shop is 6 tot 10 weken.
De kostendrijvers, op volgorde:
- Aantal custom templates — lineair met de uren
- Extensies zonder Hyvä-support — de grote onbekende
- Checkout-complexiteit — payment- en shipping-variëteit
- Custom JavaScript — Knockout naar Alpine herschrijven
Wat het oplevert: een frontend die twee tot drie keer sneller laadt, betere Core Web Vitals, en developers die weer met plezier aan je theme werken. Geen RequireJS-debugging meer. Lees meer over de techniek op onze Hyvä-pagina of bekijk wat een Magento-traject bij ons inhoudt.
Wil je een eerlijke scope en urenschatting voor jóuw shop? Neem contact op en we doen de audit. Geen sales, gewoon een senior developer die je codebase doorloopt.
Veelgestelde vragen
Hoe lang duurt een migratie van Luma naar Hyvä?
Voor een gemiddelde shop met 30-100 custom templates reken je op 6 tot 10 weken. Lichte shops kunnen in 3-5 weken klaar zijn. Zwaar verbouwde shops met veel niet-ondersteunde extensies lopen op tot 12-20 weken. De audit in week één geeft de zekerste schatting.
Raak ik mijn data of SEO kwijt bij de overstap?
Nee. Hyvä vervangt alleen de frontend; je Magento-backend, catalogus, orders en klanten blijven onaangetast. URL-structuur en metadata blijven hetzelfde. Mits je de templates correct opbouwt, verbetert je SEO juist door de snellere laadtijden en betere Core Web Vitals.
Werken mijn bestaande Magento-extensies met Hyvä?
De backend-logica van extensies werkt door. De frontend-output niet: die moet Hyvä-compatibel zijn. Veel populaire extensies hebben een officiële Hyvä-versie of een community-port. Extensies zonder support bouw je zelf om of vervang je. Dit inventariseer je in de auditfase.
Moet ik de checkout apart migreren?
Ja. De Luma-checkout is een aparte Knockout-applicatie die niet meemigreert. Je kiest meestal voor Hyvä Checkout, de Alpine-native variant. Reken hiervoor 1-2 weken extra, inclusief het hertesten van alle payment- en shipping-methodes.
Kan ik gefaseerd migreren of moet alles in één keer live?
De frontend-rebuild gebeurt in een aparte branch en gaat in één keer live per store-view. Je kunt wel per store-view of per land gefaseerd uitrollen als je meerdere websites draait. Eén pagina half-Hyvä en half-Luma laten draaien werkt niet; de JavaScript-stacks botsen.

Geschreven door Ruthger Idema
15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.
Meer over ons team →