Chat on WhatsApp
The Hyvä migration · 2026 playbook

From Luma to Hyvä
line by line.

A focused walkthrough of how a single Magento developer rebuilds a Luma storefront into a Hyvä theme — what changes, what survives, and how the numbers actually move. No agency overhead, no boilerplate.

42 → 97Lighthouse mobile
−68%JS bundle weight
6 wksAvg. timeline
1Developer
Live before / after

The same storefront, twice.

Drag the handle. Left is a stock Luma theme on Magento 2.4.7. Right is the same store after the Hyvä rebuild — same products, same content, same backend.

Before · Luma
store.example.com — Luma · 2.4.7
LCP4.2s
JS1.8 MB
Lighthouse42
After · Hyvä
store.example.com — Hyvä · 1.3
LCP1.1s
JS580 KB
Lighthouse97
The process

Six weeks, five phases.

Same pattern on every migration — a known sequence that keeps risk low and the launch boring. Scroll through to watch the rebuild evolve.

PHASE 01 · AUDIT

compatibility-report.txt

Every third-party module is inventoried and tested. Hyvä-compatible? Patchable? Or replace.

📄 modules.txt
# 47 modules scanned
+ Mageplaza_Smtp ✓ native
+ Amasty_Shopby ✓ patch
- Olegnax_Ajaxcart ✗ replace
+ Klarna_Kp ✓ native
- WeltPixel_OwlSlider ✗ replace
+ Yotpo_Reviews ✓ native
PHASE 02 · THEME

theme-setup.sh

Hyvä parent theme installed, child theme scaffolded. Tailwind config and design tokens wired up.

⚡ tailwind.config.js
// design tokens
colors: {
brand: '#ff8c2e',
ink: '#0a0d12',
},
fontFamily: {
sans: ['Inter', ...]
}
PHASE 03 · REBUILD

templates/product/view.phtml

Page by page port — homepage, PLP, PDP, cart, checkout. Each rebuilt against the Hyvä template system.

📦 view.phtml
<!-- Hyvä product page -->
<div x-data="productView()">
<x-magento-gallery />
<x-product-info />
<x-add-to-cart />
</div>
PHASE 04 · QA

visual-regression.spec.ts

Pixel-diff every page against the old build. Cart flows tested. 200+ products spot-checked.

🧪 playwright run
✓ homepage [1.1s]
✓ category page [0.9s]
✓ product page [1.0s]
✓ cart [0.8s]
✓ checkout step 1 [1.2s]
✓ checkout step 2 [1.1s]
74 / 74 passed
PHASE 05 · LAUNCH

cutover.md

DNS swap on a Sunday morning. Live monitoring for 72h. Lighthouse re-runs every 6h for two weeks.

🚀 deploy.log
Sun 04:00 · cutover begin
✓ DNS propagated
✓ Cache warmed (12k pages)
✓ Sentry healthy
✓ Lighthouse · 97 mobile
✓ Conversion rate · stable
Sun 04:42 · live ↑
01

Audit & module triage

Every extension on the store is inventoried, tested against Hyvä, and categorised: native, patchable, or replace. You ship the migration with a clean dependency tree — no surprise breaks on day two.

Week 1Output: compatibility-report.pdf
02

Theme setup & design tokens

Hyvä parent + child theme installed on a staging clone. Design tokens — colors, typography, spacing — mapped from the live brand into Tailwind config so the visual language survives intact.

Week 1–2Output: staging.brand.com
03

Page-by-page rebuild

Templates are ported in this exact order: homepage → PLP → PDP → cart → checkout. Each page is implemented, reviewed and signed off before the next one starts. No big-bang reveals.

Week 2–5Output: 14 Hyvä templates
04

QA & visual regression

Playwright runs pixel-diffs against the old build. Cart and checkout flows are exercised by automated tests across browsers. Performance budgets enforced in CI — no regression makes it to main.

Week 5Output: 74 passing specs
05

Cutover & aftercare

Launch on a Sunday at 04:00 with full rollback ready. Sentry, Lighthouse and conversion-rate monitors run for 72 hours. Two weeks of bundled aftercare — you ship, you sleep.

Week 6 + 14dOutput: live + monitored
What actually changes

Six things get smaller. Everything else stays.

Hyvä is a frontend rewrite — your products, orders, customers, integrations and admin all keep working as-is.

JavaScript shipped

Luma~1.8 MB · jQuery + Knockout + RequireJS
Hyvä~580 KB · AlpineJS only

CSS shipped

Luma~280 KB · LESS, unused selectors
Hyvä~38 KB · Tailwind, purged

HTTP requests

Luma~140 / page
Hyvä~25 / page

Time to Interactive

Luma5.4 s · mobile mid-range
Hyvä1.3 s · mobile mid-range

Frontend dev velocity

LumaXML layouts + UI components
Hyvä.phtml + Tailwind classes

What stays

Backend100% untouched · admin · catalog · orders
Data100% untouched · zero migration risk
Revenue estimate

What does the migration buy you?

A back-of-envelope estimate of the extra gross revenue a conversion-rate lift could add. The default uses an illustrative 10% lift — a guide, not a guarantee. Drag the inputs and the projection updates live.

80,000
1.4%
€ 64
+10%

Projected extra revenue

0/ year

If Hyvä lifts your conversion rate by the selected amount, this is the additional gross revenue it could generate each year — before costs and margin, so it isn’t profit. A figure to size the opportunity, not a guarantee.

Current monthly orders0
Additional orders / month0
Additional revenue / month€ 0
Additional revenue / year€ 0
The receipts

Numbers from past migrations.

Averages across the last 12 Luma → Hyvä rebuilds. Per-store results vary — these are the means, not the marketing.

0
Lighthouse mobile
avg across 12 stores
0%
JS bundle weight
vs the same Luma build
0%
Conversion lift
median, 90 days post-launch
0 wks
Time to launch
audit through cutover