Venta Theme - the first premium Hyvä-based theme for Adobe Commerce (Magento 2)
Venta Theme builds on Hyvä’s performance foundation and turns it into a complete premium storefront solution. It includes 200+ Figma views, SEO and GDPR compliance extensions, Out-of-Stock notifications, and ElasticSuite search out of the box. With conversion-focused UX patterns, production-ready layouts, and every core Magento page styled, Venta saves months of custom work and helps your store launch faster while scaling with your business.
ADA-compliant and accessible storefront patterns
Core Web Vitals passing by default
GDPR & privacy compliance for Magento Open Source, Adobe Commerce, and Adobe Commerce Cloud
Works with Hyvä Theme, Hyvä Checkout, Hyvä Commerce, and Hyvä Enterprise
Compatible with all Hyvä-ready extensions by default
Multi-store and multi-language support
Versioned releases with active updates and maintenance
Design Kit
200+ Figma files with desktop & mobile views for every storefront page
Hyvä Ready
Fully compatible with the latest Hyvä Theme, Hyvä Checkout (One Step & Two Step), and Hyvä Commerce
Code Access
100% open source — no encryption, full developer access
Extensions
Venta SEO, Venta GDPR, Venta Tracking, and Venta Out-of-Stock Notifications
Scalability
Multi-store and multi-language support across Magento Open Source, Adobe Commerce, and Adobe Commerce Cloud
The Fastest Magento Theme We’ve Ever Used
Venta Theme completely changed our store experience. The speed improvement was immediate, and our Core Web Vitals jumped into the green for the first time. Highly recommended!
Julien Anquetil
Software Development Manager
Time Spent on Website
+80%
Returning Visitors
+30%
Click Through Rate
+36%
A fast, reliable solution we can count on
We truly enjoy working with Magebit and trust their expertise and guidance!
John Brazaitis
General Manager
Order Growth
+30%
Engagement Rate
+25%
Conversion Rate
+11%
Our long-term partner, always delivering
Magebit has been our partner for years. This project was another piece of cake for them — smooth and successful.
Sam Slater
Ecom Development & Web Operations Manager
Orders
+14.2%
Revenue
+14.32%
Traffic
+23%
The speed and experience we needed
Magebit’s Hyvä solution gave us the speed, design, and user experience we needed. They turned our concerns into confidence.
Manish Keshwani
Head of Sales & Business Development
B2B conversion rate (above industry average)
+2.1%
Longer session duration
422%
Pages per user
8.28
Discover What Makes Venta Shine
Design & Assets
Venta Theme ships with a complete design system, not just code. You get a Figma kit with 200+ views, covering every core storefront page and edge case in both desktop and mobile. This gives your team a ready-to-use visual foundation, ensuring faster approvals, smoother development, and a consistent customer experience.
The assets are production-ready and can be customized to your brand with ease — colors, typography, imagery, and spacing are all defined through a scalable design system
Key configurations
Full design coverage
From homepage to checkout, account, and system pages
Desktop + mobile
Variations included
Organized design tokens
For easy brand customization
Dev-Ready Handoff
Developer-friendly specs and redlines in Figma
Saves months
Of design and front-end planning
Theme Structure & Core Extensions
Venta Theme is delivered as more than just a frontend skin — it's a complete package consisting of:
Theme layer — the storefront styling foundation.
Theme modules — functional modules that extend Magento the Hyvä way.
Core extensions — essential features bundled by default.
Bundled extensions:
Venta SEO Extension — advanced metadata and crawl management.
Venta GDPR Extension — privacy compliance with built-in consent handling.
Venta Out-of-Stock Notifications — capture intent and notify customers when products return.
Tailwind-Powered Customization
Venta leverages Tailwind configs to minimize unnecessary overrides and reduce code bloat. Instead of duplicating CSS, you can configure design tokens in one place and apply them across the theme. This makes it easy to change:
Base colors
Border radius
Fonts and font sizes
Input fields and form elements
Global spacing and typography scales
Result
A theme that is lighter, faster, and easier to adapt to your brand’s style guide
Global elements
Header
Venta’s header extends Magento defaults with more flexibility for merchants. It keeps the structure clean while adding configurability for navigation and promotions.
Configurable Features
Top text
Magento’s default welcome message (editable from admin)
Top links
Managed under Venta settings (no code needed)
Menu
Uses Magento’s default structure with added attributes for banners and extra links
Footer
Venta’s footer is designed for flexibility, combining admin settings with CMS blocks for quick updates.
Configurable Features
Logo
Configured once in the admin panel and applied globally
Categories
Added via widgets inside the footer CMS block
Links
Managed with the dedicated footer links widget
Mini-Cart
The mini-cart is AJAX-powered and optimized to drive conversions. It updates instantly, keeping the shopping flow smooth.
Configurable Features
Cross-sells
Configurable in Magento admin
Recently viewed fallback
Shown when the cart is empty
Quantity and removal controls
fully editable in the mini-cart
Compare
Venta improves Magento’s compare feature with a cleaner layout and instant interactions.
Configurable Features
Add-to-compare
AJAX-powered from category and PDP
Compare page layout
Redesigned for clarity and attribute scanning
Attributes displayed
Configurable in Magento admin
Mobile Navigation
Mobile navigation is built as a slide-in drawer optimized for smaller screens, balancing usability with merchandising.
Configurable Features
Category structure
Inherits Magento’s native menu
Promo banners
Can be added into mobile dropdowns
Expandable sections
For promotions or content blocks
Localization
Venta simplifies switching between languages and currencies with a lightweight dropdown that avoids clutter.
Configurable Features
Languages & currencies
Configured via Magento admin
Store-view rules
Support for region-specific setups
Dropdown styling
Handled by Venta for clarity and ease of use
Pre-search
Venta introduces a curated pre-search panel that opens instantly when the customer clicks into the search bar. It helps merchants guide discovery before typing even begins.
Configurable Features
Popular search terms
Define directly in the admin panel
Campaigns and promotions
Highlight seasonal campaigns or promotions
Recently viewed products
Show recently viewed products inside the pre-search panel
Search Autocomplete
Once a customer starts typing, ElasticSuite-powered autocomplete delivers fast and relevant suggestions. It ensures search becomes a conversion tool instead of a frustration point.
Configurable Features
Dynamic suggestions
For products, categories, and content
Smarter matching
Typo-tolerance and smarter matching (via ElasticSuite)
Configurable result presentation
For clarity and engagement
My Account Menu
A focused account dropdown tied to the header icon. Logged-out users see exactly two links: “Login” and “Register.” Logged-in users see the full My Account menu (Orders, Addresses, Wishlist, Newsletters, etc.) for quick access — lightweight and consistent with Hyvä.
AJAX Enhancements
Venta Theme uses AJAX across core shopping flows to create a faster, smoother experience. With fewer page reloads, shoppers stay engaged and move through the journey with less friction — which supports higher conversions and average order value.
Included AJAX Enhancements
Add to Cart
Instantly adds products without page reloads
Mini-Cart
Updates in real time, shows cross-sells, and displays recently viewed products if empty
Add to Wishlist
Saves items instantly from PDP or category page
Add to Compare
Quick product comparison setup without reload
Filters
Layered navigation updates products instantly
Pagination
Switch pages without reload, or use infinite scroll for continuous browsing
Implementation
Built with Hyvä best practices for minimal JS
Fully compatible with Hyvä-compatible extensions
Tailwind tokens ensure styling consistency across all AJAX components
Key Benefits
Seamless Shopping
Keeps the shopping flow uninterrupted
Faster Browsing
Speeds up catalog exploration and cart building
Modern Experience
Feels modern and app-like for customers
Optimized Performance
Improves perceived site speed even on large catalogs
Homepage
Venta’s homepage is designed to be campaign-driven and conversion-focused. It ships with ready-to-use widgets so merchants can quickly build a dynamic storefront without heavy custom work.
Carousel or grid of logos for brand trust & navigation.
Implementation notes
Widgets configurable in Magento admin (no custom dev needed).
Lightweight markup, optimized for Hyvä performance.
Multi-store compatible — tailor homepage by region or brand.
Notable UX details
Responsive Widgets
All widgets are responsive and styled for desktop & mobile.
Tailwind-based styling
Colors, spacing, and typography adapt easily
Reusable Components
Widgets can be reordered and reused across campaigns.
Category & Search
Venta makes category browsing clearer and faster, with flexible layouts, a smarter sidebar, CRO-optimized layered navigation, rich product-card interactions, and an improved search results page that never dead-ends.
Layout & Merchandising
Venta supports both Grid and List views. Choose what the page shows by default — Products only, Sub-categories only, or Sub-categories + Products (not available in default Magento). Optional bottom SEO content helps rank without clutter.
A redesigned sidebar category tree improves readability and depth handling versus Magento default. Works smoothly with layered navigation.
Key configurations
Improved category tree (sidebar)
Enable/Disable
Levels default
Expanded/Collapsed
Category thumbnails
Show/Hide
Layered Navigation (CRO-Optimized)
Instant AJAX updates, clear selected-filter chips, tidy collapsible groups, plus optional attribute descriptions to reduce confusion and increase applies-per-session.
Key configurations
AJAX filters
Enable/Disable
Multi-select per attribute
Enable & manage per attribute
Attribute descriptions
Enable & manage per attribute
Groups default
Collapsed/Expanded
Remove controls
Clear-all / per-filter
Product Card Interactions
Snappy, informative cards: Hover image change, Configurable options on hover (show one or multiple attributes like color/size), Tier pricing visualization, plus quick actions.
Key configurations
Hover image swap
On/Off
Configurable options on hover
On/Off; choose one or multiple attributes (via attribute settings)
Tier pricing on card
Show/Hide
Quick actions (Wishlist/Compare)
Show/Hide
Pagination
Keep shoppers in flow with AJAX pagination or Infinite scroll where it fits.
Key configurations
Mode
AJAX numbered or Infinite scroll
Products per page
Values & defaults
Media & Banners
Guide discovery and run campaigns with category thumbnails and promo banner slots above or within the grid.
Key configurations
Category thumbnails
Show/Hide
Promo banners
Placement & visibility per category
Search Results Page (Improved)
The search results template mirrors category clarity: clean product grid/list, visible sort & filter controls, and selected-filter chips. Empty searches never dead-end — if a user submits with no query (or clears it), the page still returns results like trending products, popular categories, or bestsellers.
Venta’s Product Detail Page is built to reduce friction, keep the primary CTA visible, and help shoppers decide faster, especially on mobile. Key conversion features, like Sticky Add to Cart and image zoom, are configurable from the admin.
Sticky Add to Cart Bar
A persistent bottom bar appears once the main Add to Cart button is out of view, so shoppers can add to cart without scrolling back up. Works for Simple and Configurable products, syncs with the main form, includes product name, selected options, price, and CTA.
Product Image Zoom
Zoom is built-in and configurable, including maximum zoom level. This is especially useful for detail-heavy products where visuals drive confidence.
“Top” attributes under the product title
You can pin selected attributes directly under the product title, so customers instantly see the specs that matter most, like size, material, compatibility, warranty, shipping class.
Attribute tooltips, short descriptions for clarity
Venta lets you add short descriptions for attributes, shown as tooltips in multiple locations. This helps explain what an attribute means, not just its label. Where to manage it: Manage Short Description in Product Attribute Configuration.
Product-level accordions and tabs
Attributes can be shown as tabs on the PDP alongside Description and Additional Info, great for “Specs”, “Materials”, “Care”, “Warranty”, “Shipping”. For richer content, Venta also adds a CMS Block attribute type, you can assign CMS blocks to products (even via mass action) and display them on the frontend, perfect for standardized content across many SKUs.
Upsells and cross-sells that stay clean
Venta supports cross-sells in the mini-cart, and includes an option to hide out-of-stock products in cross-sells, upsells, and related products, so recommendations do not look broken.
Tier pricing
Venta supports Magento tier pricing on the PDP, so volume discounts are clear for B2B and high-quantity purchasing flows.
Cart
Venta’s cart keeps the default Hyvä “all items visible” layout, but makes it feel more polished and easier to scan, so customers can review the order fast and move to checkout with less friction.
AJAX cart updates (no page reloads)
Cart interactions stay smooth with AJAX enabled, including remove item and quantity updates, so totals refresh without full reloads.
Enable AJAX Cart Actions
Cross-sells (increase AOV)
Add relevant products directly in the cart flow. Venta includes a configurable cross-sell slider in the mini-cart, so you can push extras at the right moment.
Minicart → Show Cross-sells Slider
Tier pricing visibility
If you use tier pricing, the cart reflects volume pricing clearly, so customers understand why the price changes when they increase quantity.
Discount codes, fast apply experience
Customers can apply coupon codes directly in the cart, and with AJAX cart actions enabled the cart experience stays lightweight (quick feedback, updated totals, no “heavy” reload feeling).
Clear Cart (one click reset)
A simple “Clear cart” option lets customers empty the cart in one action, useful for B2B buyers, quote-driven orders, or shoppers who want to restart.
Checkout
Venta keeps checkout clean and familiar, matching what shoppers are used to today, so they don’t have to “learn” your store at the most sensitive step. Under the hood it preserves Hyvä Checkout functionality, but adds Venta styling and layout options.
Checkout Page Included
Choose your checkout flow, one-step or two-step
You can switch between Venta One Page (single-page layout) and Venta Default (more traditional flow), plus keep default Hyvä layouts as fallback options.
Stores → Configuration → Hyva Themes → Checkout
Guest checkout, or force login
Run Guest Checkout or require login, depending on your business model. If you want a cleaner flow (no login step at all), you can remove the login step via checkout config.
Clear shipping and payment choices
Reduces hesitation and support tickets, especially for new customers.
Delivery method descriptions — Customers understand speed, cut-offs, and conditions
Built-in popups for Terms and Conditions, so customers never leave checkout, and can review policies without breaking flow.
Enhanced form validation
Better validation and feedback during checkout, fewer “silent errors”, smoother completion rates.
Mobile-first UX
Checkout is designed to feel great on mobile, clean spacing, readable inputs, and friction-free taps.
Enhanced success page
After purchase, customers get:
Order recap — Customers can instantly confirm what they bought
Create account prompt — Guests can save details and track orders
Post-purchase upsells — To increase AOV without disrupting checkout
My Account
Venta reworks the entire My Account area to feel modern, consistent, and easy to use, not just “styled enough”. It’s part of Venta’s core UI/UX improvements across the store.
Fully redesigned account experience
Every major account screen is visually improved
Including login, registration, and the My Account area, so customers get a clean, consistent UI across the full journey.
Orders become easier to scan
You can assign a custom “Status Color” per order status in admin, perfect for “Processing”, “Shipped”, “Delivered”, “Cancelled”, etc.
Result
A theme that is lighter, faster, and easier to adapt to your brand’s style guide
Reworked order details pages
Order detail views are laid out for faster reading and simpler actions, especially on mobile, so customers can quickly find the items, totals, shipping, and status.
Better dashboard UX
The dashboard is reworked to feel more helpful and less “default Magento”, clearer layout, better hierarchy, easier navigation.
Styled empty states
Even when a customer has no orders, no addresses, or no saved items, the empty states are designed to look intentional, so nothing feels unfinished or broken.
Admin Features
Everything you can manage without dev work
Below is the full list of Venta Theme admin-level controls (including the ones we mentioned under PDP, Cart, Checkout, My Account, etc.), grouped by area, with the config paths where they live.
Theme UI and Global Layout
Stores → Configuration → Magebit → Theme
Header Links (labels, URLs) — Shown in desktop header and mobile side menu
Footer Logo — Upload, alt text, width, height
Store Switcher — Enable, labels for website/store view/currency, website flags via ISO country codes
Category SEO Block — Page Builder content area for category SEO content
Hide Category Tree — Reduce nav clutter
Menu Banner Desktop/Mobile + Banner Path — Promo banners inside menu, with click destination
Checkout Styling Selector
Stores → Configuration → Hyva Themes → Checkout
Switch between one-step or two-step flow
CMS Page Navigation (Side Menu)
Content → Pages → Select any page
Show in CMS Page Navigation toggle — for Venta "CMS Page with Side Navigation" layout
My Account Order Status Labels (Color Coding)
Managed on order status level in admin
Status Color field for order statuses — Visual differentiation in UI
Transactional Emails, Branded Templates
Marketing → Communications → Email Templates
Venta header/footer templates available — Header (magebit/venta), Footer (magebit/venta)
Edit templates in Admin for typical changes — No code needed
System & Informational Pages
Venta does not stop at “core shopping pages”, it also ships with the pages customers hit every day around the buying journey, all styled consistently, with clean UX and no unfinished-looking states.
Contact Us page, ready out of the box
Venta includes a pre-built Contact Us page template with a clean form and space for the things customers actually need.
Includes:
Contact form with a modern layout
FAQ section, to reduce repetitive support questions
Address and contact info area (phone, email, business details)
About Us page template
A ready-to-use About Us template that fits the Venta design system, so you can launch faster and refine content over time without redesigning the page structure.
Modern 404 page
A styled 404 page that feels like part of the storefront, with clear navigation back to shopping instead of a dead-end experience.
Fully styled empty states
Every “non-happy-path” page is designed and intentional, so customers never see default Magento-looking screens.
Examples:
Empty cart
Logged-out / account-required screens
Empty lists and sections (no orders, no addresses, no wishlist items)
Other system states across storefront
Technical and Compatibility
Venta is built on top of Hyvä, not beside it. Hyvä is the parent theme, and Venta extends it, keeping the architecture clean and aligned with Hyvä best practices.
Built as a Hyvä child theme
Venta uses Hyvä as the foundation and adds its own layout, components, and features by extending Hyvä, not rewriting it. This keeps upgrades and long-term maintenance simpler.
Tailwind-driven customization
Most styling changes are handled through Tailwind configuration, so you can make major visual changes, colors, typography, spacing, border radius, without rewriting templates or changing PHTML classes everywhere. The result is cleaner code and fewer fragile overrides.
Compatibility with Hyvä ecosystem
If an extension is compatible with Hyvä, it is compatible with Venta, because Venta follows the same Hyvä theme approach and standards.
Venta SEO Extension
Venta ships with the Magebit SEO Extension, a practical SEO toolkit that covers the stuff teams typically patch together with multiple plugins, structured data, richer snippets, clean indexation signals, and better social sharing previews. It’s designed to improve discoverability without turning SEO into a dev-only task.
Breadcrumbs Snippet (always on, almost everywhere)
The extension automatically shows breadcrumbs on all pages except the main landing page, which helps users navigate and also provides structured breadcrumb data to search engines.
Why it matters
Clearer internal linking
Better crawl context
Potential breadcrumb-rich results
FAQ Snippet (visual FAQ + Google snippet)
Venta includes an FAQ block you can add with Page Builder, and it also outputs the structured FAQ schema so those questions can appear directly in Google results when relevant.
Add FAQ content via a widget in Page Builder, no custom templates needed
Validate it using Google’s Rich Result Tester
Why it matters
Richer SERP footprint
Better CTR
Fewer pre-purchase questions
Local Business Schema (for stores with physical presence)
Adds LocalBusiness structured data, so search engines can better understand and display your business details in local search contexts.
Hreflang support (multi-language / multi-region)
Adds hreflang tags to help search engines serve the correct language or regional version of a page.
Why it matters
Fewer wrong-country rankings
Better international SEO clarity
Clean indexation signals, less duplicate content
Canonical Tags (preferred page version)
Canonical tags reduce duplicate content issues and consolidate ranking signals to the “main” version of a page. The docs include quick verification steps (view source, find canonical).
Why it matters
Avoids wasted crawl budget and diluted rankings
Social sharing that actually looks good
OG Tags + Twitter Cards (social media previews)
Adds and supports configuration of Open Graph and Twitter card metadata, so your pages look consistent when shared across Facebook, LinkedIn, X, etc. It also includes guidance for testing via OG validators and browser extensions.
Why it matters
Higher click-through from social, better brand consistency
Fewer “wrong image/title” shares
UX and polish that still impacts SEO indirectly
Apple Touch Icons (iOS bookmarks and home screen)
Defines Apple touch icons for a more “app-like” experience when users save the site on iPhone/iPad.
Why it matters
Brand polish
Trust
Better returning-user experience
HTML Sitemap (human-friendly sitemap page)
Generates a clickable HTML sitemap at /sitemap when enabled, useful for users and internal linking structure. Docs also explain how to verify if it’s enabled.
Why it matters
Improves content discovery and internal linking especially on large catalogs
Venta GDPR Extension
Venta includes the Magebit GDPR Extension, a practical compliance toolkit built for real stores, not just a basic cookie banner. It helps you manage cookie consent properly, keep an audit trail, and give customers clear privacy controls, while staying consistent with the Venta, Hyvä storefront UX.
Cookie consent banner with real preference controls
The extension provides a configurable cookie bar with Accept, Decline, and Custom settings, so customers can manage consent by cookie group, instead of a single yes/no click. Preferences can be updated later using a storefront button, so shoppers stay in control without hunting for a hidden settings page.
What you can customize
Labels
Positioning
Styling to match your brand
Cookie groups, clear structure and transparency
Cookies can be organized into groups (like Analytics, Marketing, Functional, Preference), each with its own description and cookie list. This makes consent easier to understand for customers and easier to manage internally.
Admin control
Manage cookies and cookie groups in dedicated admin grids.
Consent Mode support, better privacy defaults
The extension includes Consent Mode V2 configuration, designed to control the default state for Google services and adjust tracking behavior based on the user’s consent choices. This is important for stores that rely on analytics and marketing tools but still want to keep privacy handling clean.
Consent logging, audit trail, and retention controls
Every consent decision can be stored in a Cookie Consents Log, including consent status, date, and technical data required for compliance auditing. You can also configure retention and auto-cleaning intervals to avoid keeping consent logs longer than needed.
Admin access
Magebit GDPR → Cookie Consents Log
Account deletion requests
Customers can request account deletion directly from their account area, with clear messaging about timeline, confirmation, and cancellation options. This supports common GDPR expectations around user data control.
Terms and Conditions checkbox on account creation
If needed, you can add a required checkbox during account creation, ensuring users explicitly agree to your terms as part of the signup flow.
Where it’s managed
Main configuration
Stores → Settings → Configuration → Magebit
Cookies
Magebit GDPR → Cookies
Cookie groups
Magebit GDPR → Cookie Groups
Consent audit log
Magebit GDPR → Cookie Consents Log
Venta Tracking
Venta includes the Magebit Tracking Extension, built to make analytics more accurate, faster, and more resilient than classic “just drop a bunch of pixels in the browser” setups. The core idea is server-side tagging, so you collect first-party data, reduce script load in the browser, and keep tracking working even when ad blockers or browser privacy rules get in the way.
Why it matters for merchants
If your tracking is off, you end up making decisions based on incomplete data, campaigns mis-attribute conversions, and you waste budget. The Tracking Extension is designed to solve the common problems: data loss from blockers, buggy events, broken Google Ads attribution, and performance hit from too many client-side scripts.
Key capabilities
Server-side tagging for better accuracy and performance
Storefront performance benefits — Fewer browser scripts, tracking handled on the server
Higher tracking reliability — First-party collection is harder to block, and typical server-side accuracy is noted as ~70–90%, with projects reaching 90%+ depending on setup
Two implementation routes, pick what matches the client needs
Measurement Protocol (GA4 direct)
Best when the client only needs GA4 event tracking.
Fastest setup, sends data directly to GA4 without loading gtm.js.
Limitations
You can’t reuse the same events for other platforms (Meta, Twitter), and Enhanced Conversions, Google Ads improvements do not apply in this mode.
Server-side GTM
Recommended for serious marketing stacks
Events are sent to a server-side GTM endpoint, then distributed to GA4 and other measurement protocols, including Google Ads use cases.
Core Web Vitals tracking, plus user engagement signals
You can enable tracking for Core Web Vitals metrics, including CLS, LCP, INP, and optionally user engagement events, so you see performance and behavior together.
Enhanced Conversions support
When using the server-side GTM route, you can enable Enhanced Conversions and send them through the dataLayer for improved ads tracking accuracy.
Including an extended testing guide, plus GTM preview workflow.
Setup notes
Hosting option for server-side GTM
Docs describe using Stape as a practical way to host server-side GTM, including plan considerations for production traffic.
What you actually configure
In Magento you select the tracking method, enter GTM key, choose events, optionally enable CWV and engagement events, enable first-party loading for gtag.js, set the server-side GTM endpoint, configure conversion events in DataLayer, then flush cache.
CSP considerations
If the tagging server is not under the same domain, you may need to allow it via CSP rules, the docs reference using a CSP approach or a dedicated helper extension.
Venta Out-of-Stock Notifications
Out-of-stock products are usually dead ends. Venta turns them into future revenue by letting shoppers subscribe to back-in-stock alerts right from the PDP and PLP, then automatically emailing them when the product is available again. It supports both guests and logged-in customers, and it is built on Magento’s native Product Alerts, but with a Venta, Hyvä-optimised UX using Tailwind CSS and AlpineJS.
What customers see on the storefront
Product Detail Page, fast subscribe flow
Guests get a simple email field with validation and a Subscribe button
Logged-in customers get one-click Subscribe and Unsubscribe
Simple + configurable products supported, including variant-level subscription when a specific configurable option is selected.
Works with Venta’s sticky bar, so mobile users can hit “Notify me” even after scrolling, then it guides them back to the subscription form.
Product Listing Pages, capture demand earlier
Out-of-stock products get a visual overlay plus a Notify Me button, instead of a passive “Out of stock” label.
Logged-in users can subscribe and unsubscribe via AJAX, without page refresh.
Guests are directed to PDP to subscribe, where they submit their email.
My Account, manage subscriptions
Customers get a dedicated My Stock Alerts section where they see all active subscriptions, including variant details, and can unsubscribe per product.
Email notifications that do not annoy customers
Emails are triggered automatically when subscribed products come back in stock.
Multiple products can be grouped into a single email, reducing spam and keeping the message clean.
Emails include product info, images, and links back to the product page.
Unsubscribe links are included for guests and logged-in customers, including an option to unsubscribe from all alerts.
You can set reminder frequency options, like send only once, daily, weekly, biweekly, monthly.
Merchant and admin controls
Configuration
Stores → Configuration → Magebit → Out Of Stock Notifications
Notifications
Enable Back in Stock Notifications
Set Email Notification Frequency, Never, Daily, Weekly, Biweekly, Monthly
Admin dashboards for visibility and cleanup
Marketing → Venta Stock Alerts
You get two grids
Products Stock Alerts
Shows which products have demand and how many active subscriptions, plus actions like send notifications manually or delete subscriptions
Out of Stock Subscriptions
A detailed list of individual subscriptions with mass delete actions
Business benefits
Recover lost sales
Turn stockouts into queued demand
Better customer experience
Shoppers do not need to keep checking the site
Lightweight and scalable
Built with Tailwind and AlpineJS, emails use asynchronous processing so it handles high volume.
Demand insight for buying and replenishment
Subscription counts highlight high-demand products and variants
Lower support load
Fewer “when is it back” questions
Join the Businesses Already Using Venta Theme
Faster site, stronger conversions
+14%Conversion rate (week-over-week)
+3.8%More total orders
+42%SEO-driven orders
From phone orders to online growth
+12%MoM conversion rate & order value
+18%Traffic growth
+300New online leads for custom services
Record-breaking sales powered by Hyvä
+14%Revenue
+46%Returning customers
+23%Traffic
From slow UX to competitive advantage
+42%SEO-driven orders
+14%Revenue
17.41%Conversion rate (previously 15%)
Faster performance for a premium shopping experience
No. Venta is built on top of Hyvä. You still use Hyvä as the frontend foundation, and Venta adds premium UX, design assets, and bundled extensions.
Other themes are usually Luma-based, slow, or not Hyvä-compatible. Venta is the first premium Hyvä-based theme, optimized for Core Web Vitals, and comes with 200+ Figma files, SEO, GDPR, and Out-of-Stock extensions.
Over 200 desktop and mobile views covering every core storefront page and state — giving your designers and developers a complete reference for build and customization.
Yes. A license includes versioned releases and active updates. Extended support options are available depending on your package.
Absolutely. Venta is designed as a flexible starting point. You can adjust colors, fonts, layouts, and components to fit your brand.
No. Venta is built on Hyvä’s lightweight frontend and optimized for performance. In fact, most merchants see speed and UX improvements compared to default Magento themes.
Yes. Hyvä Theme and Hyvä Checkout licenses are separate purchases. Venta is a premium add-on layer that enhances them.
No. Venta is 100% open source. Your developers have full access to all code.
Yes. Venta is fully compatible with the Hyvä ecosystem, including Hyvä Theme, Hyvä Checkout, Hyvä Commerce, and Hyvä Enterprise.
Yes. Venta works with Magento Open Source, Adobe Commerce (on-premise), and Adobe Commerce Cloud.
Swatch thumbnails in product cards are now lazy-loaded, so related, upsell, category, search and wishlist cards no longer request them before the card is near the viewport (Magento_Swatches/templates/product/swatch-item.phtml)
Changed the sticky header scroll store and header height stores to be seeded in a frame after Alpine initialises instead of during Alpine startup
Changed the gallery Playwright specs to expect the sticky bar content only after the bar has shown
Changed the configurable options component to expose its setup without the default-value and URL preselect as setup()
Exported the header and menu Alpine factories on window so child themes can compose on top of them instead of forking the components (web/tailwind/js/bundle/header.js, web/tailwind/js/bundle/menu.js)
Changed the dashboard sidebar to render customer_menu_links directly through a customer.account.navigation container instead of a second Magento\Customer\Block\Account\Navigation block (Magento_Customer/layout/customer_account.xml)
Updated hyva-themes/magento2-hyva-checkout from 1.3.13 to 1.3.14 in root and theme composer.json
Changed the list view product card to hide the Color: and Size: swatch legends between 768px and 1280px, matching the tablet design
Changed the list view product card to keep a 12px gap below the title row between 1280px and 1536px, so the columns start where the design places them
Changed the list view product card swatches to stay 44px with an 8px gap up to 1280px, growing to 48px with a 12px gap above it
Changed the list view product card attribute list to two columns between 768px and 1280px
Changed the list view tier price table to stay full width below the description up to 1280px, instead of moving into the price column at 1024px
Changed the list view product card title to sit beside the image between 768px and 1280px, and full width above the columns between 1280px and 1536px
Changed the list view wishlist and compare buttons to stay square icon buttons from 768px, instead of widening onto their own row for tier price and stock alert products
Removed
Removed the empty initShowSwatchesIntersect() stub from the swatch options component
Removed the customer_menu_links.phtml wrapper template that only rendered the customer_menu_links block (Magento_Customer/templates/html/customer_menu_links.phtml)
Removed the unused header.customer.logged.in.links link list, bypassed by header/customer-menu.phtml (Magento_Customer/layout/default.xml)
Removed the unused customer.header.wishlist.link re-declaration and the template it pointed at (Magento_Wishlist/layout/default.xml, Magento_Wishlist/templates/sortable-item/link.phtml)
Fixed
Fixed CMS navigation column links rendering as relative URL keys, which resolved against the current document URL and 404’d on trailing-slash and store-code-in-path URLs (Magento_Cms/templates/navigation-column.phtml)
Custom option values now allow the same span and a tags on cart, order success and order view: added span to the order success and order view item renderers, and the allow-list to the cart’s full_view branch (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)
Fixed account-stored-payments-link being declared twice, leaving the single sortOrder 30 entry that the layout merge already applied (Magento_Customer/layout/default.xml)
Fixed the header account menu fataling when customer_menu_links is absent, by guarding the block lookup (Magento_Customer/templates/header/customer-menu.phtml)
Fixed the list view product card wrapping its price and swatch column below the image between 1024px and 1535px, by moving the card’s structural breakpoint from lg to xl and sizing the 1280px columns to the design
Fixed the PLP sort toolbar’s invisible tap-target select extending past its wrapper and outside the viewport at narrow widths on WebKit (Magento_Catalog/templates/product/list/toolbar/sorter.phtml)
Fixed Terms & Conditions agreement content rendering outside the CMS typography scope, which left headings, lists, tables and links unstyled in the registration form modal (Magento_Customer/templates/form/register/agreements.phtml), the Hyvä Checkout terms step (Hyva_Checkout/templates/default/checkout/terms-conditions/list.phtml) and the checkout footer agreement links (Hyva_Checkout/templates/default/page/footer/agreement-links.phtml)
Fixed the PDP gallery collapsing to a near-zero-width column between md and lg on products with no related products (Magento_Catalog/templates/product/product-detail-page.phtml)
Fixed the related-products wrapper rendering as an empty grid item when the related block has no products (Magento_Catalog/templates/product/product-detail-page.phtml)
Security
Escaped the agreement checkbox text unless the agreement is flagged as HTML (Hyva_Checkout/templates/default/checkout/terms-conditions/list.phtml)
Overrode csv-parse to 7.0.2 in the Playwright lockfile to close the prototype-replacement advisory (GHSA-8cw4-87c7-c6xx)
Overrode immutable to 3.8.4 in the Tailwind lockfile to close the hash-collision DoS advisory (GHSA-xvcm-6775-5m9r)
Bumped fast-uri to 3.1.7 and postcss-selector-parser to 7.1.6 in the Tailwind lockfile
Bumped @faker-js/faker to 10.6.0 in the Playwright lockfile
Bumped js-yaml to 4.3.2 and colord to 2.10.0 in the Tailwind lockfile
Added
.cms-rich-text shares the [data-content-type='html'] text, list and table styling for CMS content that is not a Page Builder content type (web/tailwind/components/content.css)
hyva-themes/commerce composer suggest entry in the theme composer.json
Added boxtwentytwo/module-cloudflare-turnstile as a suggested package
Added an override of the Turnstile script loader that gates on the configured type rather than the saved site key (BoxTwentyTwo_CloudflareTurnstile::hyva/js/script_loader.phtml)
Changed
The header no longer loads the quote — the unused Cart\Items view model is gone from Magento_Theme/templates/html/header.phtml
Changed the Google reCAPTCHA script loader to load only when a form uses a Google captcha type (Magento_ReCaptchaFrontendUi::js/script_loader.phtml)
Changed both captcha script loaders to track their own load state instead of window.grecaptcha, which Turnstile’s compat mode also defines
Moved the captcha field out of the newsletter input row so an invisible widget no longer adds a gap (Magento_Newsletter/templates/subscribe.phtml)
Product tab e2e test titles updated to the demo store set (Returns, Warranty, Delivery, Payment Methods) in element-identifiers.json
Updated hyva-themes/magento2-hyva-checkout from 1.3.12 to 1.3.13 in root and theme composer.json
Removed
Removed unused .shimmer-shine-sm styles from shimmer.css
Fixed
Fixed PDP gallery video cover to fill the gallery container, cropped to the image slides’ aspect ratio
Fixed the footer copyright bar drifting left when no captcha disclosure is rendered (Magento_Theme/templates/html/footer.phtml)
Removed the horizontal padding PageBuilder row appearances add inside CMS page content under the standard page main container
Fixed the cart drawer bfcache handler binding, replacing the Alpine 2 x-spread with x-bind in cart-drawer.phtml
Added pageshow state resets to the customer menu, authentication popup, and messages components so pages restored from bfcache do not show stale state
Added a pageshow reset for the mobile menu stores in menu.js so a page restored from bfcache does not keep the menu open with body scroll locked
Added a global bfcache guard in bfcache.js that re-syncs customer section data on every restore and reloads restored private pages (Safari keeps them in bfcache despite no-store)
Fixed PLP list mode swatch rows ignoring the attribute swatch limits, so list mode now shows the configured number of swatches with the “+N” overflow link in Magento_Swatches/templates/product/listing/renderer.phtml
Fixed PLP list mode swatch sizing and spacing to match the design: 44px swatches with 8px gaps on mobile, 20px between swatch attributes, no top margin on the swatch column, and the swatch border now sits inside the design’s inset so five swatches fit one row on desktop
Fixed shimmer loading placeholders disappearing when prefers-reduced-motion is enabled
Fixed the product review form reading back its reCAPTCHA token under the account creation form id, which showed a false “token element is missing” error when reCAPTCHA was disabled for reviews (Magento_Review/templates/form.phtml)
Fixed
Fixed overlays not blocking background scrolling on touch devices, where the overflow: hidden body lock is ignored, by freezing the body at its scroll offset while locked (Magento_Theme/templates/page/js/body-locker-init.phtml, web/tailwind/theme/layout.css)
Fixed the page jumping back to the top when the mobile menu was closed, caused by returning focus to the menu toggle without preventScroll (web/tailwind/js/bundle/menu.js)
Fixed mobile menu subcategory panels cutting off items with no way to scroll when a category has more children than the drawer fits (Magento_Theme/templates/html/header/topmenu.phtml)
The selected sort order, direction and items-per-page are saved in the product_list_toolbar_preferences localStorage entry on toolbar change in Magento_Catalog/templates/product/list/js/init-toolbar-js.phtml
Stored sort/limit preferences are applied to category page URLs before first paint by Magento_Catalog/templates/product/list/js/toolbar-preferences-js.phtml in <head>; explicit product_list_order/product_list_limit URL parameters take precedence, and categories with the “Static block only” display mode are skipped
Preferences are written directly to window.localStorage, matching the storage the pre-paint restore scripts read
Added Playwright coverage for gallery image loading, the fullscreen dialog, the hero reveal and the sticky bar fallback (web/playwright/tests/gallery-*.spec.ts)
cms_image_hero, cms_image_banner, cms_image_tile and cms_image_inline image roles (with _mobile variants) for the CMS responsive image feature (etc/view.xml)
Added a placeholder image on the order success page and order view for items whose product no longer exists
Added the reCAPTCHA legal notice above the copyright bar in the footer (Magento_Theme/templates/html/footer.phtml)
Added cartHeartIconClass and cartHeartFilledClass getters for the cart button’s scoped hover group (Magento_Catalog/templates/product/list/js/wishlist.phtml)
Changed
Grid/list view switching on the product list is now a client-side CSS class toggle with no page reload, AJAX request or URL change, in Magento_Catalog/templates/product/list/toolbar/viewmode.phtml and Magento_Catalog/templates/product/list/js/init-toolbar-js.phtml
The selected view mode is saved in the product_list_toolbar_preferences localStorage entry and restored before first paint by Magento_Catalog::product/list/js/view-mode-restore.phtml, rendered inside the products wrapper on the category and search product lists
List view is styled by the new mode-list Tailwind variant in web/tailwind/base/custom-variants.css, active under the wrapper’s products-list class, with the overrides inline as mode-list: utilities in the card templates; web/tailwind/components/product.css keeps only the list price styling, scoped by products-grid-card, and matches the legacy list card layout
The grid card renders the list-only regions (mobile name header, short description, attribute list, compare checkbox, list add-to-cart/wishlist rows) inside wrappers hidden in grid mode and shown via mode-list:contents, in Magento_Catalog/templates/product/list/item-grid.phtml; the regions render only when the product list passes the show_description flag (mode switchable or list default), so widgets, carousels and grid-only stores keep the lean grid card
The list quantity input and the card compare checkbox ids carry a render salt so a product rendered more than once per page keeps unique DOM ids, in Magento_Catalog/templates/product/list/quantity.phtml, item-grid.phtml and the wishlist qty lookup in js/wishlist.phtml
The tier-price visibility and mobile action rows use CSP-safe Alpine components from the new Magento_Catalog/templates/product/list/js/product-card-actions.phtml; js/compare.phtml gains an onPrivateContentLoaded handler
The listing swatch renderer drops the is_list_mode flag, always renders all options (kept in the DOM under the grid visibility classes) and one legend, revealed in list mode via mode-list: utilities, in Magento_Swatches/templates/product/listing/renderer.phtml and Magento_Swatches/templates/product/swatch-item.phtml
Magento_Catalog/templates/product/list.phtml always renders the grid card, so every List Mode configuration gets the list layout and the legacy Magento_Catalog::product/list/item-list.phtml card is retained but no longer rendered
The view switcher and the client-side toggle are gated on the new products-mode-switchable wrapper class, so stores configured with a single view mode keep their configured layout, in Magento_Catalog/templates/product/list/toolbar/viewmode.phtml, .../js/init-toolbar-js.phtml and .../js/view-mode-restore.phtml
The Switch_from_grid_to_list_view Playwright test now asserts the wrapper class toggle and unchanged URL instead of the product_list_mode URL parameter, in web/playwright/tests/poms/frontend/category.page.ts
Changed the PDP gallery to render slides, thumbs and the fullscreen dialog through the image resizer with width descriptors and sizes (Magento_Catalog/templates/product/view/gallery.phtml)
Split the gallery template into <picture>, thumb-rail and fullscreen-dialog partials (Magento_Catalog/templates/product/view/gallery/)
Resized the gallery image roles for the measured slots and added a tablet band to the fullscreen role (etc/view.xml)
Moved the selected address to the first slot of the Checkout address list so exactly two addresses stay visible after selection (Hyva_Checkout/templates/default/checkout/address-view/address-list/grid.phtml)
Changed the wishlist heart class bindings on the cart Move to Wish List and shared wishlist buttons to CSP-safe component getters (Magento_Wishlist/templates/php-cart/item/renderer/actions/move_to_wishlist.phtml, Magento_Wishlist/templates/shared-add-to-button.phtml)
Removed
Removed the per-form reCAPTCHA legal notice from the login, login popup, registration, forgot password, account edit, newsletter, contact, coupon and product review forms
Removed the shared recaptcha_legal_notice block (Magento_ReCaptchaFrontendUi/layout/default.xml)
Fixed
The compare checkbox label spacing on product cards without a form root (out of stock, grouped, bundle) matches the saleable cards, in web/tailwind/theme/checkbox.css
Simple tier prices broke on products loaded by infinite scroll: the per-product inline component script never executes in appended markup, so initTierPricesInCatalog is now a page-wide component taking the product config as argument, in Magento_Catalog/templates/product/list/price/tier_prices.phtml and js/product-card-actions.phtml
Fixed the hero image waiting for the JavaScript reveal before painting (Magento_Catalog/templates/product/view/gallery.phtml)
Fixed single-image galleries not reserving their height and shifting the page on load (Magento_Catalog/templates/product/view/gallery/picture.phtml)
Fixed the lightbox serving the tablet rendition on desktop and sizing itself by viewport height (Magento_Catalog/templates/product/view/gallery/fullscreen-dialog.phtml)
Fixed WebKit preloading the hidden thumbnail strip below the lg breakpoint (Magento_Catalog/templates/product/view/gallery/thumbs.phtml)
Fixed the placeholder image showing instead of the product image for configurable items on the order success page and order view
Fixed the parent product image showing instead of the selected variant image for configurable items on the wishlist and shared wishlist pages
Fixed the wish list button treating every variant of a configurable as one item, which showed it as saved for variants that were not and removed the wrong item on click
Fixed the wish list button on the product page saving the configurable instead of the selected variant when the button sits outside the add to cart form
Fixed checkout form field tooltips overflowing the New Address modal — bubbles wrap and anchor to their icon per field type and viewport (Hyva_Checkout/templates/default/form/field/html/tooltip.phtml)
Fixed missing spacing above the Out of Stock button on the mobile wishlist item in Magento_Wishlist/templates/item/column/cart.phtml
Fixed the sticky bar backdrop not blocking background touch scrolling on iOS Safari, which ignores the overflow: hidden body lock (web/tailwind/components/ui.css)
Fixed subcategory tile images on category pages rendering at their full source size on desktop, by restoring the category_logo image entry to the Magebit_VentaTheme block in venta/etc/view.xml that was dropped in MHP-922
Fixed the header My Account divider not spanning the full row height below lg — the button’s top-0.5 left-0.5 offsets are now desktop-only (Magento_Customer/templates/header/customer-menu.phtml)
Fixed non-.btn buttons showing the default cursor instead of a pointer on hover site-wide (web/tailwind/base/fallback.css)
Fixed the Print Order button wrapping to two lines on mobile on the Order View page (Magento_Sales/templates/order/info/buttons.phtml)
Fixed the Reorder button wrapping onto a row of its own at tablet widths on the Order View page (Magento_Sales/templates/order/info/buttons.phtml)
Fixed the gap above the terms checkbox on Checkout, now 32px below lg and 48px from lg (Hyva_Checkout/templates/default/section/terms/terms-wrapper.phtml)
Fixed the gap between the terms checkbox and the Place Order button on Checkout, now 16px below lg and 24px from lg (web/tailwind/theme/checkout.css)
Fixed the gap between the Place Order button and the Back to Shipping link on Checkout, now 16px below lg and 24px from lg (Hyva_Checkout/templates/default/navigation.phtml)
Added generate-browser-jit npm script in web/tailwind producing tailwind.browser-jit.css for the in-browser Tailwind v4 CMS compiler
Changed
Updated hyva-themes/magento2-cms-tailwind-jit requirement to ^2.0 in composer.json, with suggest entries for the server-side bridge and recompile packages
Removed
Removed dead etc/cms-tailwind-jit-theme-config.json pointing to a non-existent browser JIT config
Fixed
Fixed the header cart items-count badge top-right corner radius to match the design — 2px via the new --radius-badge token (Magento_Theme/templates/html/header.phtml, web/tailwind/theme.css)
Fixed the Contact Us form subtitle duplicating the page header copy — it now reads “We typically reply to your inquiries in the first 24 hours.” (Magento_Contact/templates/form.phtml, i18n/en_US.csv, i18n/lv_LV.csv)
Added global CMS block tabs on the Product page after the attribute tabs
Added Playwright coverage for Product page tabs (web/playwright/tests/product.spec.ts)
Added “Before Customer Ratings” and “After Customer Ratings” widget containers around the reviews section on the Product page
Added the “Product Additional Info” widget container label to product.info.additional on the Product page
view.xml image definitions for the image grid, image/text, team member and quote widgets (etc/view.xml)
Added client-side product-page breadcrumb rendering with HTML entity decoding of labels in Magento_Catalog/templates/product/view/breadcrumbs.phtml
initConfigurableSwatchOptions PLP listing component in the bundle - responsive-media image swap, attribute limits with a +N overflow chip, and the listing-configurable-selection-changed event that drives back-in-stock (web/tailwind/js/bundle/swatch-options.js)
Image-type swatch options use the image-reveal shimmer placeholder so they no longer show blank/broken frames while loading (Magento_Swatches/templates/product/swatch-item.phtml)
Server-rendered out-of-stock swatch state: all-combination OOS options carry data-oos (and disabled without back-in-stock) in the initial HTML; client bindings update it per selection (Magento_Swatches/templates/product/swatch-item.phtml, web/tailwind/js/bundle/configurable-options.js)
reflectOption, optionIsDisabled, getOptionLabel, selectedOptions and applyCheckedState members for the PHP-rendered configurable options (web/tailwind/js/bundle/configurable-options.js)
Cross-form sync now also updates select[name^=super_attribute] elements (web/tailwind/js/bundle/configurable-options.js)
swatch_thumb image size 90×90 (etc/view.xml)
Swatch hover tooltip present but disabled by default (suppressed on touch devices); enable with Magento_Swatches view.xml tooltip_enabled = 1 (Magento_Swatches/templates/product/tooltip.phtml, product.swatch.tooltip blocks in the two swatch layouts, gated hooks in swatch-item.phtml / view/renderer.phtml / listing/renderer.phtml, tooltip members in web/tailwind/js/bundle/swatch-options.js)
Gallery prev/next arrows present but disabled by default; enable with Magento_Catalog view.xml gallery/nav = end, start or center (Magento_Catalog/templates/product/view/gallery.phtml)
product_swatch_image_large/_medium/_small image roles and the base Magento media image roles trimmed from the theme (etc/view.xml)
gallery/loop, gallery/caption and gallery/nav view.xml toggles; all off by default, including when a child theme’s view.xml omits them (etc/view.xml, Magento_Catalog/templates/product/view/gallery.phtml)
Changed
Moved the attribute tab loop from product-info.phtml into product/view/tabs/attribute-tabs.phtml
Converted the Product page tab accordion to a CSP-safe initProductTab Alpine component
Moved the product.info.extrahint container to directly below the price on the Product page
Updated image_widget_mobile resize dimensions to 310x162 in view.xml
Upgraded hyva-themes/magento2-default-theme from 1.4.6 to 1.5.2 and pinned hyva-themes/magento2-theme-module to 1.5.2 in the monorepo and in the theme package requirements (composer.json, app/design/frontend/Magebit/venta/composer.json)
All overlays and dialog ::backdrops use the new --color-backdrop token via bg-backdrop/backdrop:bg-backdrop (web/tailwind/theme.css, web/tailwind/components/ui.css, Hyva_Theme/templates/modal/modal-container.phtml, Hyva_Checkout dialog templates, Magento_Theme/templates/page/js/plugins/ajax-cart.phtml)
.backdrop uses min-h-svh instead of h-svh so inset-0 stretches fixed overlays to the full dynamic viewport (web/tailwind/components/ui.css)
PDP configurable swatches are PHP-rendered (Magento_Swatches/templates/product/swatch-item.phtml, view/renderer.phtml, web/tailwind/components/swatches.css)
PLP card swatches are PHP-rendered from the shared .swatch-option radio model, present in the initial HTML; grid cards keep the compact card styling while list rows render PDP-style swatches (48px, 44px on mobile) with attribute labels and the full option set, keyed into the block cache per display mode (Magento_Swatches/templates/product/listing/renderer.phtml, Magento_Swatches/templates/product/swatch-item.phtml, Magento_Catalog/templates/product/list/item-list.phtml, Magento_Swatches/layout/catalog_list_item.xml)
Swatch styling is utility-first in the templates; card text swatches and the +N overflow indicator render as plain text, image tiles are filled edge-to-edge, PDP text options are 48px (Magento_Swatches/templates/product/swatch-item.phtml, web/tailwind/components/swatches.css)
Swatch and configurable JS moved to the bundle (web/tailwind/js/bundle/swatch-options.js); phtml JS templates emit config only
Product gallery is PHP-rendered with a native dialog lightbox (no backdrop) navigable by keyboard, touch swipe and tap zones; variant image changes show a blurred low-quality preview from the cached swatch thumb, the thumbnail rail persists on single-image products via data-force-pager, the track scrollbar is hidden on always-visible-scrollbar platforms, and fullscreen thumbnails are 106x122 on desktop / 60x70 on mobile (Magento_Catalog/templates/product/view/gallery.phtml, web/tailwind/js/bundle/snap-slider.js, web/tailwind/components/ui.css, web/tailwind/theme.css)
Updated snap-slider plugin to the Hyva 1.5.2 version (v2.2.3) with loop and force-pager modifiers and index-based navigation; the bundle exposes window.SnapSlider for the vendor PageBuilder DOM widgets (web/tailwind/js/bundle/snap-slider.js, web/tailwind/components/content.css)
Set gallery_switch_strategy to append and gallery loop/caption to 0 (etc/view.xml)
Updated Tailwind CSS from v4.1 to v4.3 and @hyva-themes/hyva-modules to 1.4 (web/tailwind/package.json)
Replaced the contact form heading wrapper with a <legend>, added autocomplete on telephone and comment fields, and the telephone input uses type="tel" (Magento_Contact/templates/form.phtml)
Product form renders enctype="multipart/form-data" only when a file-type custom option exists (Magento_Catalog/templates/product/view/product-form.phtml)
PLP add-to-wishlist collects selected options from the product’s own form instead of document-wide (Magento_Catalog/templates/product/list/js/wishlist.phtml)
Playwright e2e page objects adapted to Venta markup and currency-agnostic price parsing; an idempotent @setup data spec repairs coupon rules and restores salable stock (web/playwright)
Deprecated
Legacy modal container markup (x-bind="overlay" / x-bind="popupContainer"); it keeps working through a compatibility layer that will be removed once all Venta extensions migrate to the native dialog markup (web/tailwind/js/bundle/modal-legacy-compat.js)
Removed
Removed unused variables from Magento_Catalog/templates/product/view/product-info.phtml
Legacy hyva.modal overlay implementation (web/tailwind/js/bundle/modal.js); all modals use the theme-module 1.5.1 native dialog system (Hyva_Theme/templates/modal/*, page/js/modal.phtml, Hyva_Checkout magewire/evaluation dialogs)
Magento_Catalog/templates/product/view/gallery-slider-image.phtml and its layout block (thumbnails render inline in the gallery pager)
Magento_Swatches/templates/product/js/swatch-options.phtml (logic moved to the bundle)
Fixed out-of-stock products appearing with an active Add button in the mini-cart Recently Viewed slider
Fixed extra whitespace above columns.top widget content on Category pages
Fixed the Product page buy-button row overflowing on mobile when widgets are added to product.info.additional.actions
Fixed duplicate BreadcrumbList structured data by skipping theme JSON-LD when the Magebit SEO schema is active in Magento_Theme/templates/html/breadcrumbs.phtml and Magento_Catalog/templates/product/view/breadcrumbs.phtml
Fixed product-page BreadcrumbList JSON-LD to use the product canonical category in Magento_Catalog/templates/product/view/breadcrumbs.phtml
Fixed product-page layout shift by reserving breadcrumb bar height before client-side rendering in Magento_Catalog/templates/product/view/breadcrumbs.phtml
Kept the selected shipping address visible when the checkout address list collapses; previously selecting an address revealed by “Show All” (the 3rd or later) re-hid it, in Hyva_Checkout/templates/default/checkout/address-view/address-list/grid.phtml and Hyva_Checkout/templates/default/page/js/api/v1/alpinejs/address-view/address-list.phtml
Fixed the checkout “Show All” address toggle requiring two clicks by deriving its expanded state and label from the grid instead of a stored flag that a Livewire re-render could desync, in Hyva_Checkout/templates/default/page/js/api/v1/alpinejs/shipping/method-activate.phtml
Preselect URLs (?color=&size=) render the checked swatches, selected labels and out-of-stock notify state server-side, removing the hydration layout shift (Magento_Swatches/templates/product/view/renderer.phtml, Magento_Swatches/templates/product/swatch-item.phtml, Magento_Catalog/templates/product/view/addtocart.phtml, product-info.phtml, addtocompare.phtml, addtowishlist.phtml)
Login, register, forgot-password and account-edit forms no longer submit twice on rapid double-click (Magento_Customer/templates/form/login.phtml, register.phtml, forgotpassword.phtml, edit.phtml)
Popular search term links on the search results page were dead due to an unregistered Alpine component (Magento_AdvancedSearch/templates/search_data.phtml)
Product attribute accordion on the PDP did not toggle under the CSP Alpine build; inline x-data/@click/:class expressions replaced with the registered attributeAccordion component (Magento_Catalog/templates/product/view/product-info.phtml)
Header account menu could stay in guest state when the deferred component missed the initial private-content-loaded dispatch; it now seeds from the persisted section data with the dispatcher’s version and expiry validation (Magento_Customer/templates/header/customer-menu.phtml)
Fixed the compare page wishlist heart never rendering the filled state (a static hidden class that the CSP-safe string class binding cannot remove)
Fixed the compare page stock alert toast replaying on the next page load by reloading customer sections after the compare list DOM swap, which keeps the rebuilt notify links on the AJAX path
Fixed discount percent wrapping onto a new line in the order success page items table by widening the price column
Increased subtotal column left padding in the order success page items table to align with the order totals below
Fixed
Fixed misplaced UTF-8 argument on mb_strtolower in the checkout order comment template
Fixed blank main image in desktop fullscreen product gallery
Security
Updated hyva-themes/magento2-hyva-checkout from 1.3.10 to 1.3.12 in root and theme composer.json
Added rendering bundle product options in wishlist
Added additional order info container for further extensions of template for order view in customer dashboard
Sized (view.xml) thumbnails on the cart, order view, checkout success, shared wishlist and My Reviews product images instead of the full-size original (Magento_Checkout/templates/php-cart/item/default.phtml, Magento_Sales/templates/order/items/renderer/default.phtml, Magento_Checkout/templates/success/order/items/renderer/default.phtml, Magento_Wishlist/templates/shared.phtml, Magento_Review/templates/customer/list.phtml)
customer_review_list_thumbnail_mobile image role (80×80) for the My Reviews list (etc/view.xml)
Added agreement popup links to the checkout footer in Hyva_Checkout/templates/default/page/footer/agreement-links.phtml
Added ventaCheckoutFooterAgreements Alpine component in Hyva_Checkout/templates/default/page/js/api/v1/alpinejs/footer-agreements.phtml
Added a Private Person / Legal Person user type switcher and conditional company, VAT, company registration number and personal ID fields to the My Account address form (Magento_Customer/templates/address/edit.phtml)
Added tablet/mobile banner image sizes (banner_widget_big_tablet/_mobile, banner_widget_small_top_tablet/_mobile, banner_widget_small_bottom_tablet/_mobile) under a Magebit_VentaTheme module block in etc/view.xml
Added a category_logo_mobile 52x52 image size in etc/view.xml
Added mobile drill-down for menu levels 4+, fetched per branch from magebit/menu/slice as memoized depth-two slices (Magento_Theme/templates/html/header/topmenu.phtml)
Added three admin widget containers (header.menu.desktop.widgets, header.menu.dropdown.widgets, header.menu.mobile.widgets) in Magento_Theme/layout/default.xml
Added translations for the PayPal Express redirect notice (i18n/en_US.csv, i18n/lv_LV.csv, i18n/nl_NL.csv)
Preload hint for the category top banner image via <link rel="preload" as="image" imagesrcset> in <head>
Changed
Product card main image now renders a responsive <picture> (WebP/retina) in grid, list, wishlist and compare (Magento_Catalog/templates/product/list/image.phtml)
Product card images serve per-breakpoint sizes — grid 169×169 on 360–390px / 288×288 elsewhere, list 136×136 below 768px / 304×304 above with fluid max-width:100%;height:auto (Magento_Catalog/templates/product/list/image.phtml, etc/view.xml)
PDP “You may also like” (related), “People Also Buy” (upsell) and compare images serve per-breakpoint sizes — related 164/288/108, upsell 164/288, compare 164/195/307 by viewport (Magento_Catalog/templates/product/slider/product-slider.phtml, linked/vertical/container.phtml, etc/view.xml)
Product-card image breakpoints and sizes are defined in etc/view.xml (<vars> breakpoints + image roles) and read via the Breakpoint view model, so a child theme overrides them from its own view.xml (ViewModel/Breakpoint.php, ViewModel/Product/CardImageBreakpoints.php)
Product card lifestyle/hover image renders a responsive <picture> matching the main image’s sources (Magento_Catalog/templates/product/list/image.phtml)
Selecting a swatch swaps the card image to the variation’s responsive sources, fetched and cached per card (Magento_Swatches/templates/product/js/init-configurable-swatch-options.phtml)
Product-list widget cards pinned to a fixed width in the mobile horizontal slider (view/frontend/templates/widget/product_list_widget.phtml)
Replaced inline <script> blocks with registerInlineScript() nonce calls across the cart page templates in Magento_Checkout/templates/php-cart/ (coupon.phtml, shipping.phtml, totals.phtml, form.phtml)
Rewrote inline Alpine.js expressions (function-call x-data, object-literal/ternary/logical bindings, method-call x-for, literal-argument event handlers, :selected comparisons, x-model) as registered Alpine.data components on the cart page, using getter properties (incl. precomputed x-for arrays) and no-paren method references (required by the Alpine CSP build)
Replaced inline <script> blocks with registerInlineScript() nonce calls across the Customer & Account templates in Magento_Customer/templates/ (incl. account/authentication-popup.phtml, form/register/agreements.phtml, account/link/authorization.phtml)
Rewrote inline Alpine.js expressions (object-literal x-data, ternaries, event-handler mutations, literal-argument handlers, x-model) as registered Alpine.data components across the same Customer & Account templates, using getter properties for bindings and no-paren method references for event handlers (required by the Alpine CSP build)
Registered inline scripts on Catalog and Product templates (product listing and product view) for CSP restrict-mode compatibility
Migrated Catalog and Product inline Alpine.js components to the CSP-safe Alpine build: registered Alpine.data components, getter-based bindings, no-paren event handlers, and data attributes for per-product values
Made the mini-cart recently-viewed slider scripts CSP compliant (Magento_Theme/templates/mini-cart/slider/js/slider-init.phtml, mini-cart/slider/recently-viewed/recently-renderer.phtml)
Made the AJAX add-to-cart and toolbar pager scripts CSP compliant (Magento_Theme/templates/page/js/plugins/ajax-cart.phtml, js/toolbar/init-pager-js.phtml)
Made the wishlist page, sharing form and wishlist link scripts CSP compliant (Magento_Wishlist/templates/view.phtml, sharing.phtml, sortable-item/link.phtml)
Made the advanced-search data template CSP compliant (Magento_AdvancedSearch/templates/search_data.phtml)
Made the header, top header and mega menu navigation CSP compliant (Magento_Theme/templates/html/header.phtml, header/top-header.phtml, header/menu/hamburger.phtml, header/topmenu.phtml)
Made the store switcher CSP compliant (html/switcher/form.phtml, page/js/store-switcher-init.phtml)
Made the contact form CSP compliant (Magento_Contact/templates/form.phtml)
Made the review form and rating summary CSP compliant (Magento_Review/templates/form.phtml, helper/summary.phtml)
Made the login-as-customer shopping assistance CSP compliant (Magento_LoginAsCustomerAssistance/templates/shopping-assistance.phtml)
Made the negotiable quote cart link CSP compliant (Magento_NegotiableQuote/templates/checkout/cart/link.phtml)
Changed checkout footer custom links CMS block to be toggleable via the Enable Custom Footer Links setting in Hyva_Checkout/layout/hyva_checkout_venta.xml
Changed Hyva_Checkout/templates/default/page/footer.phtml to render custom links and agreement popup links in a single row
Changed the banner_widget_big/banner_widget_small_top/banner_widget_small_bottom image sizes in etc/view.xml into the Magebit_VentaTheme module block
Changed category tiles (Magento_Catalog/templates/category/subcategory-tile.phtml) to render a mobile-specific image up to 1023px via getResponsivePicturemobileMaxWidth
Moved the remaining Magebit_ImageResizer image sizes (category_logo/_mobile, image_widget/_mobile, banner_menu/_mobile, category_block_list_widget/_mobile, brands_widget, block_widget_logo) into the Magebit_VentaTheme block in etc/view.xml and removed the now-empty Magebit_ImageResizer block (dropping the duplicate order_view_thumbnail_image already defined under Magento_Catalog)
Passed the Magebit_VentaTheme module to the category_logo resizer calls in Magento_Catalog/templates/category/subcategory-tile.phtml and the banner_menu/banner_menu_mobile calls in Magento_Theme/templates/html/header/topmenu.phtml
Load only three server-rendered menu levels (chevrons from children_count); magebit_theme/header/menu_depth (default 7) caps drill depth
Prune mounted deep drawer panels to the active navigation trail after each step
Moved the header and menu Alpine components into the Venta bundle (js/bundle/header.js, js/bundle/menu.js) as CSP-safe Alpine.data, with ventaBundleConfig bridges for translated strings
Consolidated the duplicated 600ms dropdown auto-close into a shared initPanelAutoClose in topmenu.phtml
Consolidated four scroll listeners into one scrollTop store and the product-compare count into a compareCount store
Moved menu active/selected state to CSS (aria-* variants + nav-current) and removed all !important from the menu
Adopted semantic text-link colour tokens and replaced per-item border-* with divide-y/divide-x on parents
Modernized header/wrapper.phtml and switcher.phtml to registered CSP-safe Alpine.data
Scoped the header.phtml sticky-header scroll engine inside an IIFE
Render menu icons via SvgIcons::renderHtml instead of the magic methods
Replaced .table-orders tables with CSS grid lists on Dashboard Recent Orders, My Orders, and Address Book
Replaced the cart page table with a CSS grid list in Magento_Checkout/templates/php-cart
Added fixed design-derived grid track tokens in web/tailwind/theme.css for orders, address, stock alerts, cart lists, and mobile card labels
Added shared order list partials Magento_Sales/templates/order/list/items.phtml and row.phtml
Changed Magento_Theme/templates/html/pager.phtml to always show the “Items %1-%2 of %3” count format
Hide the checkout express-payments section and its “Or” divider when Venta PayPal Express is disabled (Hyva_Checkout/templates/default/express-payments.phtml)
Made the shared confirmation dialog CSP compliant (Hyva_Theme/templates/page/js/confirm-js.phtml)
Removed x-defer="intersect" from header/menu/hamburger.phtml
Removed the dead header-backdrop render and unused isLoading state from header.phtml
Removed .table-orders, #my-address-table, and #my-orders-table styles from web/tailwind/components/content.css
Fixed
Fixed native select chevron jumping on touch and responsive viewports by replacing the form-select active chevron flip with the CSS :open pseudo-class across all form-select elements
Stabilized the mobile PLP Sort By button active state and rotated its chevron icon while the select picker is open
Fixed the empty category toolbar (missing sort and grid/list controls) caused by an undefined icon view model in the PLP sorter template; render the Sort By chevron via the SvgIcons view model
Fixed the PayPal Express payment area not rendering on the single-step checkout by gating Hyva_Checkout/templates/default/express-payments.phtml on the entry step instead of a hard-coded step position
Fixed compare page showing an active Add to Cart button for out-of-stock configurable and other non-saleable products by centralising compare action rendering in action.phtml using isSaleable()
Fixed a horizontal scrollbar on the mobile menu drawer (overflow-x-hidden on the list)
Fixed mobile category drill buttons to a consistent 56px that fills the row height
Fixed a TypeError in openPreviousCategory on empty panel history (topmenu.phtml)
Fixed address book Name column rendering a comma between first and last name
Fixed cart Price column position at 2xl breakpoint to match the Figma column width
Fixed unbroken long values overflowing fixed columns in order and address lists with wrap-break-word
Fixed footer logo sizing by setting a fixed h-9/lg:h-10 height instead of max-h-9/max-h-max
Fixed PLP color/size swatches not rendering (and the related console errors) after an AJAX product-list swap (grid/list switch, filtering, pagination): the DOM-swap script handling in hyva.replaceDomElement (Hyva_Theme/templates/page/js/hyva.phtml, both activateScripts and removeScripts) now preserves inert <script type="application/json"> config islands instead of relocating/stripping them
Fixed a redundant <link rel="preload"> for css/styles.css in default_head_blocks.xml merging with Hyvä’s <css src="css/styles.css"/> into a single malformed tag with duplicate rel/type attributes
Changed
Upgraded magebitcom/magento2-venta-theme-module to 1.6.3.1
Venta isn’t just a service; it’s a solution to the problems our clients trust us to resolve. We understand that every business is unique, so we're flexible in our approach. Tell us your dreams, and we'll make them a reality.
Kristaps RjabovsCo-founder of Magebit & Venta Theme
Some help us see how the site is used and measure our ads. You choose — until you do, no cookies are set and Google receives only cookieless signals that don't identify you.