Updating to Venta Theme 1.7.3 (account layout cleanup and retina ratios)
1.7.3 is a regular release. Magento and the Hyvä theme are unchanged, and there is no build-stack migration, schema change or data patch, so most projects need a Composer bump, a rebuild and a template rebase. Hyvä Checkout moves 1.3.13 to 1.3.14.
Beyond that, two things need attention. Two dependency pins move, and either blocks the update if your root composer.json carries a pin of its own. The customer account layout drops a template and three block declarations, which breaks a child theme that overrides the layout files holding them.
The rest of the release is storefront fixes and startup-cost work on the Alpine components. See what changed for the full list and Features for the feature-level view.
Recommended reading:
- Updating to 1.7.2, if you are not on it yet
- File Review, for the override reconciliation routine
Breaking change: the customer account layout drops a template
Fatals on the dashboard if your child theme keeps the old declaration
Magento_Customer/templates/html/customer_menu_links.phtml is deleted from the theme. Nothing in Magento core or the Hyvä default theme carries a file at that path, so a layout declaration still pointing at Magento_Customer::html/customer_menu_links.phtml has nothing left to resolve to. The declaration to look for is the block named customer_account_navigation, in whichever customer_account.xml your project merges into the layout.
The dashboard sidebar used to render a second Magento\Customer\Block\Account\Navigation block through that wrapper template. It now renders the existing customer_menu_links block directly, moved into a customer.account.navigation container:
<container name="customer.account.navigation" htmlTag="div" htmlClass="nav items md:bg-container rounded"/>
<move element="customer_menu_links" destination="customer.account.navigation"/>Three declarations go with it, all of them unused before the change:
header.customer.logged.in.links(Magento_Customer/layout/default.xml) - the whole link list and its child blocks.header/customer-menu.phtmlrenderscustomer_menu_linksand never reads this one.customer.header.wishlist.link(Magento_Wishlist/layout/default.xml) - a re-declaration of a link the core layout already provides, plusMagento_Wishlist/templates/sortable-item/link.phtml, the template it pointed at.account-stored-payments-link(Magento_Customer/layout/default.xml) - declared twice with different sort orders. ThesortOrder30 entry is the one the layout merge was already applying; thesortOrder40 duplicate is gone.
Pre-flight check 1 finds the overrides this affects.
Because customer_menu_links now moves on account pages, header/customer-menu.phtml guards the block lookup instead of calling toHtml() on the result unconditionally. A child theme override of that template needs the same guard, or the header menu fatals wherever the block is absent. The exact change is in §2.
Prerequisites
- Venta Theme 1.7.2 or 1.7.2.1. 1.7.2.1 added one CSS class and had no upgrade steps of its own, so you can come from either. If you are further back, work through Updating to 1.7.2 first.
hyva-themes/magento2-hyva-checkout1.3.14 reachable in your Hyvä Packagist tenant. The theme package pins the exact version, so the update does not resolve without it.magebitcom/magento2-image-resizer0.2.0 reachable. The theme requirement moves from^0.1.19to^0.2.0, and Composer treats those as incompatible ranges.- Node 20 or newer for the theme build, unchanged since 1.7.0.
- Nothing else on the server side. Hyvä stays at 1.5.2 and Magento stays where it is.
Pre-flight checklist
Run this while the project is still on 1.7.2.x.
1. Find overrides of the files the account cleanup touches
Start with a content search, because the declaration is often not in the child theme at all. A project module carrying its own view/frontend/layout/customer_account.xml under app/code merges into the same layout and fatals the same way:
grep -rn "customer_menu_links.phtml\|customer_account_navigation" \
app/design/frontend app/codeThen check the known child-theme paths:
git -C app/design/frontend/<Vendor>/<ProjectTheme> ls-files \
'Magento_Customer/layout/customer_account.xml' \
'Magento_Customer/layout/default.xml' \
'Magento_Wishlist/layout/default.xml' \
'Magento_Customer/templates/html/customer_menu_links.phtml' \
'Magento_Customer/templates/header/customer-menu.phtml' \
'Magento_Wishlist/templates/sortable-item/link.phtml'Anything either command prints goes on the §2 list. A child theme layout file is merged on top of the vendor one rather than replacing it, so a stale customer_account_navigation block declaration survives the update and is what produces the missing template.
2. Check for calls to the removed swatch stub
grep -rn "initShowSwatchesIntersect" \
app/design/frontend/<Vendor>/<ProjectTheme> app/codeinitShowSwatchesIntersect() was an empty method on the swatch options component and is removed. A template still calling it throws at runtime, and on a CSP-restricted page that takes the whole component down. Delete the call from the x-init binding it sits in and keep the rest of that binding. In the vendor sticky bar the whole binding went from x-init="initShowSwatchesIntersect(); showSwatches = ..." to x-init="showSwatches = ...".
3. Check your root Composer pins
grep -n "image-resizer\|hyva-checkout" composer.jsonBoth packages arrive through the theme. A root pin at ^0.1.x or 1.3.13 conflicts with what the theme now requires and Composer refuses to resolve. §1 has what to change.
4. Inventory the rest of your template overrides
git -C app/design/frontend/<Vendor>/<ProjectTheme> ls-files \
'Magento_Catalog/templates/product/list/item-grid.phtml' \
'Magento_Catalog/templates/product/list/js/product-card-actions.phtml' \
'Magento_Catalog/templates/product/list/price/tier_prices.phtml' \
'Magento_ConfigurableProduct/templates/product/list/price/tier_price.phtml' \
'Magento_Catalog/templates/product/list/toolbar/sorter.phtml' \
'Magento_Catalog/templates/product/product-detail-page.phtml' \
'Magento_Cms/templates/navigation-column.phtml' \
'Magento_Checkout/templates/php-cart/item/default.phtml' \
'Magento_Checkout/templates/success/order/items/renderer/default.phtml' \
'Magento_Sales/templates/order/items/renderer/default.phtml' \
'Magento_Swatches/templates/product/swatch-item.phtml' \
'Magento_Swatches/templates/product/listing/renderer.phtml' \
'Magento_Customer/templates/form/register/agreements.phtml' \
'Hyva_Checkout/templates/default/checkout/terms-conditions/list.phtml' \
'Hyva_Checkout/templates/default/page/footer/agreement-links.phtml' \
'Magebit_VentaTheme/templates/sticky-bar/**' \
'Magebit_VentaTheme/templates/product/view/primary-actions.phtml' \
'Magebit_VentaSmileElasticSuite/templates/product/shimmer/grid.phtml'§2 lists what each one needs.
5. Check that Magento_ProductVideo is enabled
bin/magento module:status Magento_ProductVideoThe theme module now requires magento/module-product-video and sequences after it. The module ships with Magento, but a project that disabled it blocks setup:upgrade. Enable it with bin/magento module:enable Magento_ProductVideo before starting.
What changed
| Package | Change |
|---|---|
magento2-venta-theme (1.7.3) | Customer account layout cleanup, covered above. Product card swatch thumbnails are lazy-loaded on listings. List view product cards move their structural breakpoint from lg to xl and pick up the tablet spacing from the design. CMS navigation column links run through getUrl() instead of emitting the raw identifier. Custom option values allow span and a on cart, order success and order view. PLP sort toolbar tap target no longer overflows the viewport on WebKit. PDP gallery keeps its width on products with no related products. Header and menu Alpine factories are exported on window. Scroll and header-height stores are seeded after Alpine initialises. Hyvä Checkout 1.3.13 to 1.3.14, Image Resizer ^0.1.19 to ^0.2.0. |
magento2-venta-theme-module (1.7.3) | PDP sticky add-to-cart bar mounts its content on first show and reads its option config, selection and price state from the main add-to-cart form. withCmsTypography() on the modal builder renders modal content inside the CMS typography scope. Admin product video "Get Video Information" stores the 1280px Vimeo cover or YouTube maxresdefault.jpg as the preview image. |
magento2-venta-theme-smile-elasticsuite-module (1.7.3) | Mini search measures its input for the dropdown height after init rather than during Alpine startup, and exports its factory on window. Infinite-scroll loading skeleton matches the product card's new breakpoint bands in list view. |
Back In Stock 1.1.2, PayPal 1.0.3, User Type Switcher 1.0.1 and Style Guide 1.0.3 have no changes in 1.7.3.
The release also escapes the checkout agreement checkbox text unless the agreement is flagged as HTML.
Terms and Conditions content is now styled everywhere it renders
Agreement content used to render outside the CMS typography scope, so headings, lists, tables and links came out unstyled in the registration form modal, the Hyvä Checkout terms step and the checkout footer agreement links. All three now render inside the scope. If your project styled around the missing typography with its own CSS, that CSS now stacks on the theme's.
1. Update Composer dependencies
Put the store into maintenance mode first and leave it there until §3 takes it out:
bin/magento maintenance:enableSwapping the theme package removes customer_menu_links.phtml from vendor/ while the old layout XML is still deployed, so every account page fatals from the Composer run until the layout reconciliation in §2 lands.
Pin the versions in your root composer.json:
{
"require": {
"magebitcom/magento2-venta-theme": "1.7.3",
"magebitcom/magento2-venta-theme-module": "1.7.3",
"magebitcom/magento2-venta-theme-smile-elasticsuite-module": "1.7.3"
}
}If your root composer.json also pins magebitcom/magento2-image-resizer or hyva-themes/magento2-hyva-checkout, raise those lines to ^0.2.0 and 1.3.14 before running the update, or drop them and let the theme's requirement carry the packages. Leaving them at the 1.7.2 values makes the update unresolvable.
composer update \
magebitcom/magento2-venta-theme \
magebitcom/magento2-venta-theme-module \
magebitcom/magento2-venta-theme-smile-elasticsuite-module \
--with-all-dependencies
composer show hyva-themes/magento2-hyva-checkout # must report 1.3.14
composer show magebitcom/magento2-image-resizer # must report 0.2.x--with-all-dependencies is what lets both pinned packages move to satisfy the theme.
The theme module now requires magento/module-product-video and sequences after it, for the admin video preview change. Pre-flight check 5 is where to confirm it is enabled.
2. Reconcile your template overrides
Work through the list the pre-flight inventory produced, following the File Review routine. What each file needs:
Magento_Customer/layout/customer_account.xml- drop thecustomer_account_navigationblock if your override redeclares it, and take the container and<move>from the vendor file.Magento_Customer/layout/default.xmlandMagento_Wishlist/layout/default.xml- drop anyheader.customer.logged.in.links,customer.header.wishlist.linkor duplicateaccount-stored-payments-linkdeclarations your override repeats.Magento_Customer/templates/html/customer_menu_links.phtmlandMagento_Wishlist/templates/sortable-item/link.phtml- delete your copies once nothing references them.Magento_Customer/templates/header/customer-menu.phtml- guard the block lookup:php<?php $menuLinks = $block->getLayout()->getBlock('customer_menu_links'); ?> <?php if ($menuLinks): ?> <?= /** @noEscape */ $menuLinks->toHtml() ?> <?php endif; ?>Magento_Swatches/templates/product/swatch-item.phtml- listing swatches switch fromloading="eager"toloading="lazy", and themode-list:lg:size and padding classes becomemode-list:xl:. An unreconciled override keeps requesting every card's swatch thumbnails up front and keeps the old list view sizing.Magento_Swatches/templates/product/listing/renderer.phtml- the swatch legend gainsmode-list:md:max-xl:sr-only, so theColor:andSize:labels are screen-reader-only between 768px and 1280px, and the swatch row gap moves frommode-list:lg:gap-3tomode-list:xl:gap-3.Magento_Catalog/templates/product/list/item-grid.phtml,product/list/price/tier_prices.phtml, the ConfigurableProductproduct/list/price/tier_price.phtmland the ElasticSuite module'sproduct/shimmer/grid.phtml- the list view breakpoint bands move fromlgtoxl. Reconcile them together; a partial rebase leaves the skeleton and the loaded card disagreeing at 1024px and 1280px.Magento_Catalog/templates/product/list/js/product-card-actions.phtml- the button row gainsmd:counterparts (md:flex-row,md:flex-nowrap,md:order-none,md:btn-sq), so wishlist and compare stay square icon buttons from 768px instead of widening onto their own row on tier price and stock alert products.Magento_Cms/templates/navigation-column.phtml- the linkhrefbecomes$block->getUrl($page->getIdentifier()). An override keeping the raw identifier keeps 404ing on stores with a trailing slash or a store code in the path.Magento_Checkout/templates/php-cart/item/default.phtml,Magento_Checkout/templates/success/order/items/renderer/default.phtmlandMagento_Sales/templates/order/items/renderer/default.phtml- the allowed tag list for custom option values gainsspanso cart, order success and order view agree.Magento_Catalog/templates/product/list/toolbar/sorter.phtml- the invisible select that carries the tap target is constrained to its wrapper. Without it, narrow WebKit viewports scroll sideways.Magento_Catalog/templates/product/product-detail-page.phtml- the gallery column and the related-products wrapper are now conditional on the related block having products.Magento_Customer/templates/form/register/agreements.phtml,Hyva_Checkout/templates/default/checkout/terms-conditions/list.phtmlandHyva_Checkout/templates/default/page/footer/agreement-links.phtml- agreement content is wrapped in the CMS typography scope, and the checkout list template escapes the checkbox text unless the agreement is flagged as HTML. The escaping change is a security fix; take it even if you skip the typography one.Magebit_VentaTheme::sticky-bar/sticky-bar.phtml,sticky-bar/price.phtmlandproduct/view/primary-actions.phtml- the sticky bar mounts on first show rather than at Alpine startup, and takes its swatch config, selection and price state from the main add-to-cart form instead of a second inline copy. An unreconciled override keeps the duplicate state and the startup cost.
Child themes can now compose on the header, menu and search factories
initHeader, initHeaderWrapper, initCompareHeader, initStoreSwitcher, initMobileMenuButton, initMenu, initPanelAutoClose and initMiniSearchComponent are exported on window. A child theme that forked one of these components only to change a few methods can wrap the vendor factory instead and drop the fork.
The configurable options component gained setup(), which does everything init() does except the default-value and URL preselect. Use it for a component that follows another form's selection rather than owning one.
3. Upgrade and deploy
bin/magento setup:upgrade
bin/magento setup:di:compileThen rebuild theme assets in your child theme. The list view card spacing lives in the template classes and the startup changes live in the JS bundle, so a stale build keeps both at the old behaviour. The Tailwind classes you rebased in §2 reach the storefront through this build as well, which is why it runs after the reconciliation:
cd app/design/frontend/<Vendor>/<ProjectTheme>/web/tailwind
npm ci
npm run build-prodDeploy the rebuilt assets, then take the store out of maintenance mode:
bin/magento setup:static-content:deploy -f
bin/magento cache:flush
bin/magento maintenance:disableMagento 2.4.8+ and SRI
The deploy after build-prod is what refreshes pub/static/frontend/sri-hashes.json. On Magento 2.4.8+ the CSP subresource-integrity hashes must match the deployed assets, and a build-prod run that is not followed by static-content:deploy leaves the old hashes in place, which blocks venta-bundle.min.js from loading. The checkout success page is typically the first place it shows.
4. Optional: configure the retina ratios
Image Resizer 0.2.0 makes the device pixel ratios admin-configurable. The default is a single ratio of 2, so a store that changes nothing writes and serves exactly what it did on 0.1.x.
Two related changes come with it:
Generate Retina AVIFwasGenerate Retina (2x) AVIF. It now covers every configured ratio rather than the one hardcoded scale.- Width descriptors for scaled WebP and AVIF variants reported the requested width instead of the width the rendition was produced at. They now report the produced width, so the browser picks the candidate the markup actually describes.
Adding a ratio leaves its renditions missing from disk, so run bin/magento catalog:images:pregenerate after the change rather than letting live traffic pay the encodes.
The table, its bounds and what a save refuses are on Retina ratios.
Post-upgrade verification
- The account dashboard renders. Log in and open My Account. The sidebar navigation is present and the header account menu opens on the same page. A blank sidebar or a template-not-found error means a child theme layout still declares the removed block, see §2.
- The header account menu works off the dashboard too. Open it from a category page and from checkout. This is where the missing
customer_menu_linksblock used to fatal. - Product card swatches load lazily. Open a category page with the network tab filtered to images and scroll. Swatch thumbnails for cards below the fold request as they approach the viewport, not on load. PDP and sticky bar swatches stay eager.
- List view holds together at 1024px and 1280px. Switch a category to list view and resize across both. The price and swatch column stays beside the image, the loading skeleton matches the loaded card, and the
Color:andSize:legends are hidden between 768px and 1280px. - CMS navigation column links resolve. Open a page using the CMS navigation column on a store with a store code in the URL, or with a trailing slash, and click through. Every link lands on its page instead of 404ing.
- The PDP sticky bar still adds to cart. On a configurable product, scroll past the main add to cart, pick options in the sticky bar and add to cart. The selection and the price match the main form.
- Agreement content is styled. Open the registration form's terms modal and the checkout terms step. Headings, lists, tables and links pick up the theme typography, and agreement text that is not flagged as HTML renders as text rather than markup.
- Images still serve at 2x. Check a product image's
srcseton a listing. A store that did not touch the ratio table has the same1xand2xcandidates it had before. Product cards go throughgetResponsiveSources(), which still describes candidates by density, sowdescriptors are not expected there.