Why is Hyvä faster than Luma?
Hyvä is faster than Luma because it removes the layers of JavaScript and CSS tooling that Luma depends on and replaces them with a much smaller, purpose-built stack. Luma renders pages using RequireJS to load modules, Knockout.js to handle interactive UI components, and a LESS-based stylesheet system that ships one large, shared CSS bundle. Hyvä replaces all three with Alpine.js for interactivity and Tailwind CSS compiled ahead of time, which means far less code has to travel to the browser and get parsed before the page becomes usable.
Quick answer
Hyvä loads faster than Luma because it eliminates RequireJS bundling, drops Knockout.js’s client-side view-model rendering, and swaps Luma’s LESS output for a Tailwind CSS build that only ships the classes a page actually uses. Fewer scripts to fetch, less JavaScript to execute before the page responds to input, and a smaller CSS payload add up to a measurably lighter Magento 2 frontend, particularly on mobile connections where every extra request costs real time.
The architecture difference, layer by layer
| Layer | Luma | Hyvä |
|---|---|---|
| JavaScript loading | RequireJS module loader, often resolving dozens of dependencies per page | Alpine.js, a small runtime with no module resolution step |
| UI interactivity | Knockout.js view-models bound and re-rendered on the client | Server-rendered HTML enhanced in place, no client-side re-render step |
| CSS | LESS compiled into one large shared stylesheet across the whole theme | Tailwind CSS purged at build time to include only the classes actually used |
| Static asset build | setup:static-content:deploy, which grows slower as themes and locales are added | Tailwind’s CLI build, which stays fast regardless of theme count |
RequireJS versus Alpine.js
Luma uses RequireJS to load JavaScript modules on demand, but that resolution process still means the browser has to fetch, parse, and wire up a dependency tree before a page component becomes interactive. Alpine.js works differently. It attaches behavior directly to markup that the server already rendered, so there is no separate module graph to resolve. Less resolution work up front means less delay before a customer can actually click, filter, or add to cart.
Knockout.js versus server-rendered HTML
Knockout.js re-renders parts of the page in the browser using JavaScript view-models. That is useful for highly dynamic UI, but it adds a real cost: the browser has to run JavaScript to produce HTML that Magento could have rendered on the server in the first place. Hyvä renders that HTML server-side with PHP and only reaches for Alpine.js where genuine client-side interactivity is needed, such as toggling a mobile menu or updating a mini cart count. This cuts down on the amount of JavaScript execution blocking the main thread during page load.
LESS versus Tailwind
Luma’s LESS setup compiles into a single shared CSS file used across the whole storefront, which grows heavier as more modules and customizations are added over time. Tailwind is a utility-first framework, and Hyvä’s build process purges unused classes, so the shipped CSS reflects only what a given page actually needs. Smaller CSS means the browser spends less time parsing style rules before it can paint the page, which directly affects Largest Contentful Paint.
Fewer moving parts to deploy
This difference also shows up outside the browser. Luma’s static content deployment step slows down as more themes, locales, and customizations pile up, which becomes a real drag on release cycles for teams shipping frequent updates. Hyvä’s Tailwind build stays fast regardless of store complexity, which is a maintenance benefit as much as a performance one.
Why this matters beyond a Lighthouse score
Core Web Vitals are now a ranking factor, and Largest Contentful Paint and Interaction to Next Paint are both directly affected by how much JavaScript a page has to execute before it responds to input. A lighter frontend does not just look better on a performance report. It changes how quickly a real visitor on a mobile connection can actually browse and check out, which is where the SEO and conversion benefits of a faster theme actually come from, not from the score itself. Stores comparing Magento performance work across real projects tend to see this most clearly on mobile traffic, where every additional blocking script has an outsized effect.
If you’re evaluating whether a Hyvä migration is worth the effort for your specific store, the honest answer depends on how JavaScript-heavy your current Luma build already is and how much custom Knockout.js logic you have layered on top of it. A store running mostly default Luma components will see a smaller gain than one running years of accumulated third-party widgets, since there is simply more overhead to remove.
Related Answers
Still need help?
Talk to our Hyvä experts
We build Hyvä storefronts for Magento and Adobe Commerce brands that want Alpine.js speed without losing the flexibility of a full Magento backend.