Luma customization debt is both a speed and an upgrade problem
A Luma theme that has been customized for years carries two visible costs. The browser has more work to do on every visit, and a Magento core upgrade takes longer to test and repair.
Both costs come from the same place: frontend changes added over time, often by several teams, with old layers left in place after the original feature changed or disappeared.
Frontend customization debt is the work required to understand, test, update, or remove those old layers. Count the debt before choosing a cleanup plan or a new frontend.

Where frontend debt hides in a Luma theme
Luma is a large frontend stack, so a small visual change can touch templates, layout XML, JavaScript, and styles. The debt usually appears in these forms:
- Template
.phtmlfiles copied from core and edited, now frozen at an old version. - Custom RequireJS modules, Knockout components, and jQuery widgets layered on over time.
- LESS overrides and deep
_extend.lesschains that are hard to reason about. - Layout XML overrides and template copies that duplicate core structure.
A .phtml file renders HTML on the server. RequireJS loads JavaScript modules, Knockout connects data to page elements, jQuery widgets add browser behavior, LESS generates CSS, and layout XML decides which blocks and templates appear.
Each change can be reasonable by itself. After years, the theme can contain several ways to change the same page, with no clear owner for the final result.
Stale template overrides break upgrades
The hardest debt to review is often a copied core template. When a developer copies a core .phtml into the theme and edits it, Magento uses the theme copy instead of the current core file. Future changes to the core template do not flow into that copy.
.phtml copied from core and edited three years ago may miss bug fixes, markup changes, accessibility fixes, or security changes made since then. The copy can look normal until a core upgrade exposes the difference.During an upgrade, compare every overridden template with the matching file from the new Magento version. Create a DIFF that shows the custom lines and the current core changes. Then decide whether to keep the override, replace it with a smaller change, or delete it.
Do this for dozens of templates and the upgrade becomes a review of old decisions. The time comes from the number of overrides and the uncertainty around each one.
How the debt accumulates
Customization debt usually grows through small decisions made under a deadline. One team copies a template to change one line. A later team adds a jQuery widget because the existing JavaScript pattern is hard to find. Another extension adds its own RequireJS and Knockout code.
The changes may solve the immediate request, but each one adds another place to check when the same page changes. Documentation gets old, team members move on, and the theme loses a clear map of which layer owns each behavior.
That history does not require blame. It requires an inventory. The team needs to know what is still used, what duplicates Magento or an extension, and what can be removed without changing the customer experience.
The JavaScript weight problem
Luma's performance cost often appears in JavaScript. RequireJS, Knockout, and jQuery load framework code, page components, and event handlers. Custom widgets add more code and more dependencies to the same page.
The browser pays for that work through downloaded bytes, network requests, parsing, and JavaScript execution. A slower phone may spend several seconds executing code before a customer can use the page. Many requests and large files can delay first render and hurt user-facing performance metrics.
Production settings can reduce some of the cost. Merging, minification, and bundling change how assets are delivered, but they do not remove unused code. Unused components still increase the payload when they are included in the bundle.
How to measure the debt
Start with counts. Count copied core .phtml files, layout XML overrides, custom RequireJS modules, Knockout components, jQuery widgets, and LESS override files in the theme Directory.
For each copied template, record the matching Magento core file and its current version. Keep the inventory and each comparison DIFF in version control so another engineer can repeat the review. Make the audit Reproducible by recording the Magento version, theme, store view, and asset deployment settings.
Then use browser developer tools on representative pages such as the home page, category page, product page, cart, and checkout. Record total JavaScript bytes, request count, long tasks, and the time until the page responds to input. Test on a desktop profile and a slower mobile profile.
A large payload with many separate files can point to delivery configuration problems. A large payload after bundling points to code volume. Those are different fixes, so measure both before proposing a rebuild.
Two ways out: reduce, or rebuild on Hyva
One path is an in-place reduction. Remove unused overrides, compare the remaining templates with current core, delete dead JavaScript, simplify LESS chains, and correct production asset delivery. This works when the current theme still has a clear structure and the debt is concentrated in a manageable set of files.
The other path is a rebuild on Hyva. Hyva replaces the Luma frontend stack, so the team must reimplement templates, customer interactions, checkout changes, analytics, search behavior, and extension integrations. A rebuild can reduce long-term maintenance when the Luma layers have become harder to test than a new implementation.
Choose from evidence. Compare the cleanup inventory, browser measurements, upgrade effort, extension compatibility, rebuild estimate, and rollback plan. A new frontend is a project with migration risk, not a shortcut around understanding the existing one.
Debt you can see is debt you can plan for
Frontend debt can hide behind a storefront that still works. Its cost appears in browser work, upgrade review, regression testing, and the time needed to explain a page to the next engineer.
Start with an inventory of copied templates, layout XML, JavaScript, and LESS. Attach an owner to each cleanup item, record the current behavior, and test the page after every removal. Keep the DIFF, Directory, Magento version, and asset settings with the work so the result stays Reproducible.
Once the team can see the files, payload, request count, and upgrade effort, it can choose a smaller cleanup or a Hyva rebuild on evidence. That is a platform decision the team can plan, test, and review.