Changelog
1.4.1 (2026-10-09)
Fixed
- Fixed the
?debug=banneroverlay not escaping the Content Security Policy nonce it prints, and the placeholder loader not encoding special characters in the settings it writes into the page. Neither gap was exploitable; banners render and are tracked exactly as before.
1.4.0 (2026-10-05)
Features
- Hyvä theme support and the GraphQl API are now built in — the separate
mirasvit/module-banner-hyvaandmirasvit/module-banner-graph-qlextensions are no longer needed. Everything they provided ships in this extension: banner placeholders, the rotator, slider, pop-up and lightbox renderers and the?debug=banneroverlay all render on Hyvä as they do on Luma, and themstBannerPlaceholdersquery with themstBannerTrackImpressionandmstBannerTrackClickmutations are available on every store. Each renderer is now a single template serving every theme, so a Hyvä storefront and a Luma one get the same features and the same fixes at the same time, and there is no longer a second package to find out about, install and keep at a matching version.- Composer removes both companion packages by itself when you upgrade — there is no
composer removestep. If your own theme or custom code references the companion's module or classes (Hyva_MirasvitBanner,Hyva\MirasvitBanner\Block\Debug,Hyva\MirasvitBanner\ViewModel\Csp) or its templates, repoint them atMirasvit_Banner. - ⚠️ GraphQl is now active on every store, not only on stores that installed the separate package. If you query
/graphql, the banner schema is now part of your store's schema. Stores that removed Magento's core GraphQl packages are not affected:setup:di:compilestill passes. - ⚠️ Theme overrides and custom code: each renderer serves both themes from one file, so the companion's copies under
Hyva_MirasvitBanner::are gone — re-apply any override to the matchingMirasvit_Banner::template. These JavaScript files were removed as well, because the behaviour they carried is now inline and framework-free:web/js/loader.js,web/js/analytics.js,web/js/debug.jsandweb/js/placeholder/popup-renderer.js. The?debug=banneroverlay no longer needs jQuery, so it works on every theme, and its styling moved out ofweb/css/source/module/_debug.lessinto the overlay itself.Mirasvit\Banner\Block\Loader::getJsConfig()is deprecated in favour ofgetLoaderConfig()andgetAnalyticsConfig(); it still returns what it always did.
- Composer removes both companion packages by itself when you upgrade — there is no
Improvements
- The pop-up and lightbox can be dismissed with the Escape key on every theme, and the lightbox keeps keyboard focus inside itself while open — previously only Hyvä storefronts had this. The corner pop-up never takes focus, so a shopper typing elsewhere is not interrupted when it appears. A shopper who dismissed a pop-up before the upgrade is not shown it again: both the value the old Luma script stored and the one the old Hyvä script stored are recognised.
- Impression tracking sends one request per second for all newly visible banners instead of one request per banner, and counts a banner as seen as soon as any part of it is in view. On Hyvä storefronts that previously meant a banner taller than the browser window was never counted at all.
- The slider's previous/next controls are real buttons and the slider is announced as a region rather than as a slider control, which is what screen readers expect; the pop-up is announced as a dialog. The pop-up close button also takes its colour from the theme palette again on Hyvä, where it had been asking for a colour name that no longer exists.
- Banner placeholders that could not be rendered with the page are re-fetched when the cart changes on every theme that provides Magento's customer data, and the extension no longer loads any JavaScript library of its own to do it.
- After upgrading a Hyvä store, run
bin/magento hyva:config:generateand rebuild your theme's Tailwind CSS, so the classes the banner templates use stay in your compiled stylesheet.
Fixed
- Fixed the pop-up and lightbox showing behind sticky headers, cookie bars, chat widgets and other fixed page elements on Hyvä, where the lightbox's dimmed background also left those elements uncovered. Both now show above the rest of the page on every theme, and an open lightbox always shows above a corner pop-up. On Luma the pop-up used to cover an open lightbox.
- Fixed margins set in a placeholder's CSS field being ignored on Hyvä storefronts, even with
!important. The placeholder wrapper no longer forces its margins to zero, so your own CSS applies as it does on Luma. Placeholders without custom margins look the same as before. - Fixed banners loaded after the page (date-scheduled banners or banners with cart conditions) running only the first script in their HTML on Hyvä. All scripts now run in order, as on Luma.
- Fixed the public banner tracking mutations (
mstBannerTrackImpression,mstBannerTrackClick) recording impressions and clicks for banner IDs that don't exist. Requests for unknown banners are ignored, so anonymous requests can't fill your banner analytics with junk rows. This fix first shipped inmirasvit/module-banner-graph-ql1.0.5; stores on older versions of that package get it now. - Fixed banners showing in a random order in the banner analytics report when it is filtered by date, which could put a banner on two pages of the report or on none. Banners are now listed by ID.
1.3.9 (2026-09-28)
Improvements
- Internal code improvements and maintenance.
1.3.8 (2026-09-24)
Improvements
- Faster banner loading: the placeholder loader that runs on every page view now fetches all placeholders on the page in a single database query instead of one query per placeholder. Placeholders still render in the same order.
- ⚠️ Removed unused classes
Mirasvit\Banner\Model\Config\Source\Position,Mirasvit\Banner\Repository\AnalyticsAggregatedRepositoryandMirasvit\Banner\Model\ResourceModel\AnalyticsAggregated\Collection. If your own customizations reference them, switch toModel\Config\Source\PopupPositionandRepository\BannerAnalyticsRepository/Service\AnalyticsService.
Fixed
- Fixed the
?debug=bannerURL parameter being available to any storefront visitor. It could reveal inactive placeholders and banners you had deliberately switched off, plus layout debug markup. Debug mode now works only when the new Stores Configuration Mirasvit Extensions Promo Banner General Developer Mode setting is enabled (config pathmst_banner/general/dev_mode). It is off by default, including after upgrade (pm1198). - Fixed the storefront crashing with a generic "call to a member function on null" error when a placeholder uses a renderer that no longer exists (for example after a theme switch or a deleted template). The error now names the placeholder and the missing renderer, so you know what to fix (pm1329).
- Fixed placeholders with an incomplete saved layout position producing broken layout XML and PHP warnings on the storefront. Also fixed PHP warnings when a slider placeholder has no "loop" option saved and when saving a placeholder without a predefined position.
- Fixed a placeholder with ID
0being skipped by the placeholder loader.
1.3.7 (2026-07-20)
Fixed
- Fixed the placeholder loader still flooding the cache and CDN on Hyvä and Mage-OS stores. The 1.3.6 fix told caches not to store loader responses, but on Hyvä/Mage-OS setups (with bfcache enabled) that instruction was being removed before it reached the browser, so single-use loader responses kept piling up. The "do not store" instruction is now applied in a way those stores can't strip, so your cache and CDN stay clean.
1.3.6 (2026-07-16)
Fixed
- Fixed the placeholder loader from flooding the Full Page Cache and CDN with single-use entries. Because each loader request uses a unique URL and returns rotated, rule-targeted content, every response was being stored as a cache entry that could never be reused (tens of thousands per day on busy stores). The loader now tells caches not to store its responses, keeping your cache clean without changing what visitors see.
1.3.5 (2026-07-08)
Features
- Mixpanel banner tracking — banners now report
banner_impression(when a banner becomes visible) andbanner_clickevents to Mixpanel through the Mirasvit interaction tracker, with the banner ID and name attached. This works alongside the module's built-in impression stats and lets you analyze banner performance in Mixpanel.
Improvements
- Added storefront and admin translations for 15 additional languages (Arabic, Czech, German, Spanish, French, Italian, Japanese, Dutch, Polish, Brazilian and European Portuguese, Swedish, Turkish, Ukrainian, and Simplified Chinese).
Fixed
- Fixed missing and incorrect translations for interface strings.
- Fixed banners with a schedule or cart price rule conditions staying empty on Hyvä storefronts — the required
mirasvit/module-banner-hyvapackage is now declared as a suggested dependency so it can be installed.
1.3.4 (2026-05-27)
Fixed
- Removed legacy PHP-serialize branches in the Banner and Placeholder save controllers — rule conditions now always go through Magento's
Jsonserializer. - Added a one-time data patch that converts any legacy PHP-serialized rule conditions and placeholder display data in
mst_banner_bannerandmst_banner_placeholderto JSON onsetup:upgrade. Stores already on JSON are unaffected.
1.3.3 (2026-05-04)
Fixed
- Fixed the REST API for banners and placeholders failing with
LogicException: The BannerSearchResultsInterface class doesn't existdue to incompatible type declarations in repository interfaces
1.3.2 (2026-04-13)
Fixed
- Fixed banner edit form not displaying saved values for Placeholders, Customer Groups, and Store Views fields after the 1.3.0 REST API update
- Fixed clearing a field value in the banner form not being saved (e.g., removing all customer groups or store views had no effect)
- Fixed placeholder edit form not displaying position settings correctly
1.3.1 (2026-03-19)
Fixed
- Fixed the issue with analytics tracking
1.3.0 (2026-03-18)
Improvements
- Added REST API support
- Granted Magento 2.4.9 compatibility
- Hyvä compatibility moved to a dedicated package: install
mirasvit/module-banner-hyvaon Hyvä storefronts. It replaces the RequireJS/jQuery placeholder loader with afetch()-based one so AJAX-required banners (date-scheduled or with SalesRule conditions) render on Hyvä. Without it those placeholders stay empty on Hyvä. - Dropped support for the community
hyva-themes/magento2-mirasvit-bannerpackage (superseded bymirasvit/module-banner-hyva)
Fixed
- Avoided unnecessary load of the cart when cart variables are not used in the banner's content
1.2.5 (2026-01-28)
Fixed
- Fixed the issue with banners not displayed if banners have cart-related conditions
1.2.4 (2025-12-12)
Fixed
- Fixed the issue with historical stats db table size by reducing the analytics storage lifetime
1.2.3 (2025-11-05)
Improvements
- Banners listing page performance improved
1.2.2 (2025-10-16)
Fixed
- CSP compatibility
1.2.1 (2025-06-27)
Fixed
- Prevent reload customer data after banners' analytics ajax call
1.2.0 (2025-06-10)
Improvements
- WCAG 2.2 AA complience
1.1.30 (2025-04-10)
Fixed
- Compatibility with Magento 2.4.8
1.1.29 (2025-04-08)
Fixed
- Fixed the issue with banner not displayed when it have Active From-To dates and category condition
1.1.28 (2025-01-29)
Fixed
- Custom discount is rewritten in quote
1.1.27 (2025-01-29)
Fixed
- Custom discount is rewritten in quote
1.1.26 (2024-12-09)
Improvements
- Do not load stats data in the Banners grid if collecting banner stats is disabled
- Banners priority clarification
1.1.25 (2024-11-29)
Improvements
- The number of banners' analytics requests reduced
1.1.24 (2024-11-25)
Improvements
- Loading time of the Banners grid improved
1.1.23 (2024-10-02)
Improvements
- Ability to set time for banners' Active From and Active To fields
1.1.22 (2024-10-01)
Improvements
- Store View column in Banners grid
- Relative banner URL's behavior improved
1.1.21 (2024-07-31)
Improvements
- Status and Display Mode columns added to the placeholders grid
1.1.20 (2024-07-22)
Fixed
- Fixed the issue with custom placeholder's CSS (CSP)
1.1.19 (2024-07-11)
Fixed
- Fixed the issue with the debug mode
1.1.18 (2024-06-25)
Fixed
- Fixed the issue with the error on the Placeholder edit page (Call to a member function getArea() on null)
1.1.17 (2024-06-05)
Fixed
- Fixed the issue with empty Containers list in the Placeholder form (in some stores theme with ID 1 is the admin area theme)
1.1.16 (2024-05-15)
Fixed
- Fixed the issue with category chooser (product's attribute) in banner rules
1.1.15 (2024-05-10)
Improvements
- Compatibility with Mirasvit_Gdpr 1.4.*
1.1.14 (2024-04-19)
Fixed
- Fixed the compatibility issue with PHP7 (since 1.1.13)
1.1.13 (2024-04-15)
Improvements
- Ability to disable collecting banners' impressions and clicks
1.1.12 (2024-03-07)
Improvements
- Console command to cleanup/restore layout updates for banners' placeholders
Fixed
- Fixed the issue with category rule in banner conditions
1.1.11 (2023-12-05)
Improvements
- Active From and Active To columns in Banners grid
1.1.10 (2023-10-12)
Fixed
- Fixed the issue with Re-appear in (hours) = 0
1.1.9 (2023-09-12)
Fixed
- Magento EE compatibility
1.1.8 (2023-05-11)
Fixed
- TypeError: Unsupported operand types: string * int (PHP8.*)
- Issue with unexpected banners behavior when banners have their own display conditions
1.1.7 (2023-05-05)
Features
- Lightbox Popup banner
- Slider banner
Improvements
- Additional settings for banners
1.1.6 (2023-02-17)
- Issue with FilterInput for Magento 2.4.5
1.1.5 (2023-02-09)
Improvements
- Added support of Magento 2.4.6
Fixed
- Fixed the issue with loader request (Hyva)
1.1.4 (2022-09-07)
Fixed
- Fixed the issue with jquery/jquery.cookie (Magento 2.4.5)
- PHP8.1 compatibility
1.1.3 (2022-08-09)
Fixed
- PHP8.1 compatibility
1.1.2 (2022-08-09)
Fixed
- fixed an issue with saving banners
1.1.1 (2022-06-20)
Improvements
- remove db_schema_whitelist.json
1.1.0 (2022-05-23)
Improvements
- migrate to declarative schema
1.0.11 (2021-04-19)
Fixed
- Fix delete message for m2.4
1.0.10 (2021-02-04)
Improvements
- Custom placeholders
Fixed
- fixed an issue with incorrect display of the 'freeShippingLeft' attribute value on sites with multiple stores
1.0.9 (2020-11-27)
Improvements
- Custom placeholders
1.0.8 (2020-11-23)
Fixed
- Fixed issue with the page builder in Magento Enterprise Edition
1.0.7 (2020-10-29)
Improvements
- added compatibility with the php 7.4
1.0.6 (2020-09-11)
Improvements
- Small spelling fixes
1.0.5 (2020-07-29)
Improvements
- Support of Magento 2.4
1.0.4 (2020-07-14)
Improvements
- Support of GraphQL API
Fixed
- Issue with placeholder rules validation
1.0.3 (2020-05-12)
Improvements
- Backend Interface
Fixed
- Issue with layouts
1.0.2 (2020-04-21)
Improvements
- Extended display rules: Product Rules and Category Rules
1.0.1 (2020-04-15)
Features
- Free shipping variables for banners
1.0.0 (2020-03-25)
Features
- Initial release