Skip to main content

Changelog

1.8.1 (2026-09-22)

Improvements

  • The extension now speaks all fifteen of its languages everywhere it writes to the screen — dozens of phrases had never been collected for translation, so they stayed in English on every non-English store no matter how complete the language files looked. That covered the whole photo-upload area of the review form and the messages it shows when a photo is the wrong type or too large, the AI tag-suggestion screen in the admin, the star ratings on a Hyvä storefront, and the settings for structured data and for matching guest reviews to customer accounts. A further nine phrases were listed but still carried their English text as their translation, so they read as done and were not. All of them are translated now — including the four labels 1.8.0 shipped in English as a stopgap: Published, Pending approval, Not approved and the review page's rating label.

Fixed

  • An unrecognised sort order in a review-list address returned a 500 instead of a page of reviews — the sort value was taken from the address and passed straight to the database, so anything the Sort by dropdown does not offer — a hand-edited or mistyped link, an old link from before a sort option was renamed, a crawler guessing at parameters — brought down the review list, the product page it sits on and the crawlable /review/product/list/id/N/ page with it. Only the orders the dropdown actually offers are accepted now; anything else quietly falls back to newest-first and the page renders as usual. A sort order arriving in the address as a list rather than a single value (?sorting=…) took the same three pages down through a different route and now falls back the same way. The same check is applied to the default sort order set in the admin, so a stale value saved there can no longer break the storefront either.
  • The star-rating filter beside it could be broken the same way — a rating parameter that was not a plain number (?rating=zzz, ?ratinga=5) returned a 500 on the review list, the product page and the crawlable review page, and a rating outside the one-to-five scale quietly returned an empty list with no explanation on screen. Whole stars the rating bar actually offers still narrow the list; anything else is ignored and the page renders its reviews as usual.
  • A malformed page-size or page-number in the address returned a 500 — ?limit=1 and ?p=1 reached Magento's own pager, which cannot read a list where it expects a number, on all three review pages. A real page-size choice is honoured as before; a value that is not one is ignored.
  • The Gallery and Masonry Grid widgets returned a 500 when their Sort Order held a value the module does not sort by — a sort order saved before an option was renamed, or written by hand into layout XML, reached the database as an unknown column and brought down every page carrying the widget. Both widgets now fall back to newest-first, using the same list of allowed sort orders as the storefront review list.
  • The Rating column in Marketing Advanced Reviews was empty for every review — the grid listed each review with a blank rating, so the column could not be read at a glance and there was nothing on screen to check a sort or a filter against. Ratings appear in the column again, and the rating is now also selected by the grid's own query, so the column keeps its values if the per-row reload behind it is ever taken out.
  • Deleting a review reminder showed a confirmation message with a raw %1 in it — every language but English kept an older wording that expected the reminder's ID to be dropped into the sentence, and nothing was supplying it, so admins on a non-English locale were told the reminder with ID "%1" had been deleted. The message reads properly in all fifteen languages now.
  • The "This product only" filter could be offered as a control that returns nothing — on a grouped or configurable product whose review list is drawn entirely from reviews written on its child products, the checkbox still appeared but emptied the list every time it was ticked, because the product had no reviews of its own to keep. The checkbox is now shown only when the product has its own reviews to narrow to. It is also greyed out — the way the Verified Buyers checkbox beside it already is — when the product does have its own reviews but none of them are inside the tag, rating or verified-buyer selection currently on screen, and it stays clickable while ticked so it can always be switched back off.
  • Two overlapping runs of the same scheduled job could do the same work twice — Magento starts a scheduled job again on its next tick whether or not the previous run has finished, and on a large catalogue all four of this module's jobs can run long. The review-reminder job was the costly one: two overlapping runs picked up the same pending reminders and sent the same review-request email to the customer twice. Automatic tag classification paid the AI provider twice for the same reviews, and the reindex and rating-aggregation jobs ran over the whole review set concurrently. Each job now skips its run if another one is still going and picks the work up on the next tick. Running a job by hand with bin/magento mirasvit:review:cron reports Skipped — another instance of this job is already running in that case, instead of printing "Done" for work that never happened, and a run without --code now names the job it is executing rather than repeating the option.

1.8.0 (2026-09-17)

Features

  • Hyvä support now ships with the extension — The companion package mirasvit/module-review-hyva is gone: everything it contained is part of Advanced Reviews itself. That is the twelve Alpine templates — the review list, a single review, the summary and its pros/cons, the photo gallery, the review form with its image uploader, the "My Product Reviews" page and the three widgets — plus the star renderer and the review-config view model behind them. The module picks the Hyvä templates on a Hyvä storefront and the Luma ones everywhere else without either theme having to be detected, and on a Luma store the Hyvä half simply stays dormant. If the package is installed on your store, remove it before you upgrade — the first item under Improvements has the command.
  • "My Product Reviews" is one page on both storefronts, rendered by the server — a customer's own reviews are now a card list carrying the product image, the rating, the review and a badge saying where it stands with moderation — Published, Pending approval or Not approved — drawn the same way on Luma and on Hyvä. On Hyvä the page no longer fetches its own reviews back over GraphQL after loading, so the list is there as soon as the page is, with no wait for private content and no failure when a review's product has since gone; on Luma this replaces Magento's five-column table, which is the surface that read worst on a phone. A photo on a review opens the same lightbox the product page uses, rather than dropping the reader on a bare image file with no way back, and a review left on a product that has no page of its own — a configurable variant, a grouped child, a bundle selection — now links to the product page a shopper can actually reach instead of a 404. The products on the page are loaded in one query rather than one per review.

Improvements

  • ⚠️ Remove the companion packages before upgrading — Advanced Reviews, Comments and Vote were each shipped with a separate Hyvä package, and all three retire together. If your store has any of them, run this first:

    composer remove mirasvit/module-review-hyva mirasvit/module-comment-hyva mirasvit/module-vote-hyva
    composer update mirasvit/module-review mirasvit/module-comment mirasvit/module-vote

    Otherwise the same modules would be installed twice, and Composer will not tell you so: it resolves without an error, quietly leaves the old versions in place, and the upgrade simply does not arrive. If composer show mirasvit/module-review still reports the previous version after an update, this is why — run the two commands above. No settings are lost, and setup:upgrade drops the retired module names from app/etc/config.php for you. If you never installed them, there is nothing to do.

  • ⚠️ The Hyva_MirasvitReview module is gone, not renamed — Everything it did now happens inside Mirasvit_Review, with the Hyvä templates living beside their Luma counterparts. setup:upgrade removes the old name from app/etc/config.php for you. You only need to act if you referenced it yourself — in a custom di.xml, a layout ifconfig, or a deployment script that enables modules by name.

  • If you overrode a Hyvä review template in a theme, move the override — every Hyva_MirasvitReview::name.phtml is now Mirasvit_Review::name-hyva.phtml, so for example Hyva_MirasvitReview::review.phtml becomes Mirasvit_Review::review-hyva.phtml. The markup is unchanged; only the module it belongs to is, and the -hyva suffix keeps it beside the Luma file of the same name. Luma overrides are untouched.

  • If you extended the Hyvä star renderer, it takes the view-model registry differently — Hyva\MirasvitReview\ViewModel\StarRating is now Mirasvit\Review\ViewModel\StarRating, and it no longer receives Hyva\Theme\Model\ViewModelRegistry through its constructor; the template hands it over with -withRegistry($viewModels) instead. A Hyvä type in the constructor made setup:di:compile fail outright on stores without the Hyvä theme package, which this module now has to support on its own. The rendered stars are unchanged.

  • One set of templates now serves both storefronts — the review list, a single review, the review form and its photo uploader, the AI summary, the pros-and-cons list, the photo strip and its lightbox, the Masonry Grid, the Overall Rating widget and the review card were each written twice, once per theme, and are written once now. The behaviour behind them is plain JavaScript loaded as a file: no jQuery/RequireJS component on Luma, no Alpine component on Hyvä, no Knockout component on the review form, and no inline script needing a Content Security Policy nonce. Each theme still reads only its own stylesheet, so nothing looks different for that reason alone — but the two storefronts can no longer drift apart, which is what most of the fixes below turned out to be.

  • Reviews read in the same order on both themes — Hyvä put the rating row above the review title and the author line above the review text, where Luma put both below. Both now read title, rating, review, author, which is the order the review card already used on Luma and Hyvä alike. This changes how a review is laid out on a Hyvä storefront.

  • Output escaping tightened in the templates that came from the Hyvä package — eighteen values across five of them reached the page unescaped, review text and reviewer-supplied fields among them, and are escaped now.

  • Smaller storefront polish — on Hyvä, muted text (the review count beside a block title, the reviewer's country, the four labels in the photo uploader) was being drawn in the theme's green accent colour and is grey now, and the Show More control under a long AI summary is styled the same on both themes.

  • The wording this release adds ships in all fifteen locale files — four of the new strings ("Published", "Pending approval", "Not approved" and the review page's rating label) carry their English text for now and are queued for a translation pass; they render today exactly as they always would.

Fixed

  • The Masonry Grid widget stacked every review in one narrow column on Luma — the grid never laid itself out, because the layout library it uses registered itself with RequireJS instead of publishing itself to the page, so positioning threw and the cards were simply revealed where they stood. Hyvä, which has no RequireJS, was never affected. The Testimonials page tiles on both themes now.
  • "Load More" on the Masonry Grid added nothing, on either theme — the grid drew its first page as review cards and then asked for the next page in the review list's format, so nothing in the reply matched what it was appending and the whole response was dropped. It now asks for the shape it draws — 20 cards become 40 — and its spinner is centred in the button instead of sitting half outside it.
  • The star picker on the Luma review form could not be clicked — the control was drawn into a box with no height and then clipped, so a shopper on a Luma theme had a rating to give and not one star on screen. It measures five clickable stars again, filling as they are picked.
  • The crawlable review list page returned a 500 on both themes — /review/product/list/id/N/ failed again, for reasons other than the one fixed in 1.7.3: the page inherits the product page's layout, so Magento's own review form was rendered in place of this module's, a Hyvä theme block was handed to a template that could not run there, and seven places in the list and form templates assumed a child block that this page does not build. The page answers 200 with its reviews on it, on Luma and on Hyvä.
  • Review photos were missing from some review lists, and a customer's own review page failed outright — the three blocks that render a review, its summary and its photo strip were declared once per page that lists reviews, and on a Hyvä storefront the duplicate declarations left the review list with no parent at all, so pages answered 200 with nothing on them. They are declared once now and reached by name, and the photo strip is found on all four routes that list reviews on both themes.
  • A customer's own review page was empty on Hyvä — the Hyvä theme strips the core block this page was attached to, so the page rendered its wrapper and nothing else. The module builds the block itself now. On both themes, photos a shopper attached to a review no longer disappear from that review's own page while it waits for approval, and the page can be opened at all while the review is unapproved — the lightbox used to answer "Reviews with IDs … not found" for the author's own pending review. A review is never shown a helpful/not-helpful vote control on its own author's page; votes under other people's comments are untouched.
  • With "Allow reviews only from buyers" switched on, a Hyvä storefront showed everybody the form and then refused the submission — the notice explaining why, with its sign-in and registration links, existed only on Luma, and the check that reveals the form to a qualifying buyer could not run on Hyvä at all. Both themes now refuse a guest in the page itself and reveal the form only to a customer who bought the product.
  • The Photos field was missing from the review form on a Hyvä product page — the uploader rendered nothing at all, so the form looked complete and simply had no way to attach a photo, while Luma kept its own. The customer's review-edit form had the quieter version of the same fault, rendering the Luma uploader on a Hyvä storefront.
  • The Verified Buyers checkbox now accounts for the whole of the current selection — greying it out only considered "this product only", so with a tag or a rating narrowing the list to reviews from unverified buyers the checkbox stayed enabled and ticking it returned nothing. The tag and rating narrowings are applied to the count behind the control as well as to the list, so the two cannot disagree; the checkbox stays clickable while it is ticked, so it can always be switched back off.
  • The two themes disagreed about the Verified Buyers checkbox — Luma always rendered it and greyed it out when nothing matched; Hyvä rendered it only when something did. Both now hide it when a product has no verified-buyer review at all, where a permanently dead control is only noise, and grey it out when the current selection momentarily holds none. Hyvä gains the greyed state it never had.
  • The tag filter label showed in English on every non-English Hyvä storefront — Luma's "Filter by tags" and Hyvä's "Filter by Tags" were two different phrases for one control, and only the first has translations. Both use it now.
  • The AI review summary vanished on Hyvä whenever a product had no approved reviews — the whole review block sat behind a check for reviews, so a product carrying a summary written from reviews that were since unapproved or deleted showed nothing at all on Hyvä, while Luma showed the summary as it always had. The summary, the photo strip and the block around them render regardless now.
  • A long AI summary could be clamped with nothing to open it — when less than forty pixels were cut off, both themes hid the Show More control and left the text clipped, so up to a line of summary was lost for good. There is now either a control or nothing hidden, never neither, and the fold measures everything inside it — the pros-and-cons list included — rather than two named parts of it. Expanded, it no longer fades out the last line the reader just asked to see, and the gradient stays inside the card instead of running past its edge.
  • The review count beside a block title could not be translated on Hyvä — it was assembled as a new translation key for every possible number, so no locale could ever carry it. It is one key with the count as an argument, like every other counted string in the module.
  • Magento 2.3.7: the tag suggestion screen in the admin was fatal — it escaped its output through a template variable that Magento only added in 2.4.0, fourteen times over, on a screen no test opens, so on 2.3.7 the screen failed on its first line. It uses the escaping available on every supported version again.
  • Paging a review list dropped the sort order and the filters — page two of a five-star, newest-first list was page two of the unsorted, unfiltered list, on both themes. The links carry only the page now and the query is read from the controls still on screen. On Hyvä the pager also pointed at the product page, so turning a page fetched and threw away a whole product render; both themes ask the review endpoint. The filter row is re-rendered with the list it describes, where Hyvä used to swap the reviews out from under a toolbar still describing the previous query.
  • A Hyvä store let a customer past the photo limit when editing a review — the uploader counted only the photos added in that session, not the ones already on the review, so an edit form could take more than the per-review limit allows. Both themes count the same way now, and both read the form key from the cookie, so an upload from a cached page is not refused.
  • A refused review lost everything the shopper had written, on Hyvä — when server-side validation sent a review back, the draft could not be printed into the full-page-cached product page and the mechanism that restored it ran only on Luma. The draft, and a signed-in shopper's first name in the nickname field, come back on both themes. Validation messages for the star rating now appear next to the stars, which on Luma previously refused the submission with no message at all.
  • One review was published with two different ratings in its structured data — the same review was sent to search engines as "80" on a Luma storefront and "4" on a Hyvä one, with no scale declared on the Hyvä side. It is 4 out of 5 on both now, with the scale stated.
  • The photo lightbox on Luma showed a photo with no idea whose review it came from — the review panel beside the photo was fetched, filled and then hidden by a stylesheet rule, on every page the lightbox opens from. It is laid out the same on both themes now, and the author line inside it fits on one line instead of wrapping when a reviewer's location is shown.

1.7.4 (2026-09-15)

Fixed

  • Reviews submitted with a malformed star rating are no longer saved without their stars — when the rating came in as a single value instead of the usual list (a hand-crafted or broken request, rather than the storefront form), the review was accepted and published with no rating recorded at all, leaving only a line in the exception log to explain the missing stars. Such a submission is now handled the same way as one that carries no rating, and reviews sent from the storefront form are unaffected.

1.7.3 (2026-08-31)

Improvements

  • The Verified Buyers filter no longer disappears mid-use — on a product page whose current selection holds no verified-buyer review, the checkbox used to vanish from the review toolbar, so a shopper who ticked another filter watched a control drop out of the row. It now stays in place, greyed out and unclickable, and remains clickable while it is ticked so it can always be switched back off.

Fixed

  • Sorting and filtering reviews on the product page no longer dumps raw text into the page — choosing a sort order, ticking Verified Buyers or picking a tag replaced the review list with a wall of raw JSON instead of the reviews. The product page and the Masonry Grid widget were sharing one endpoint that answers in the widget's data format; the product page now has its own, which returns the rendered review list. Both Luma and Hyvä storefronts are served by it, and the reviews it returns are unchanged.
  • The "Reviews (N)" tab count now matches the list below it — on a grouped product the tab counted only the product's own reviews while the list, the per-rating breakdown and the summary counter all pooled the whole group, so the tab could say 2 on a page showing 8. The tab now shows the same pooled figure, and on Luma it is also refreshed after sorting or filtering, where it previously kept the original total next to an already-narrowed list. Products that are in no review group, or stores with review grouping switched off, keep counting exactly as before.
  • Crawlable review list page returned a 500 error — /review/product/list/id/N/ failed outright for any product that had a stored AI review summary, because the module was replacing Magento's own rating-summary value on the product with an object the core templates on that page then tried to print as text. The page renders again, and the summary is passed straight to the block that needs it.

1.7.2 (2026-08-28)

Improvements

  • Storefront review templates are safer against injected markup — the star bars, the rating percentages, the review counts and the product images shown in the Overall Rating widget, the product-page rating filter and the customer's My Product Reviews area are now escaped before they reach the page. Nothing looks or behaves differently; it simply closes the door on anything unexpected in that data being rendered as markup.

Fixed

  • Installing on an empty database no longer fails — on Magento 2.3.7, setup:install stopped with "The default website isn't defined" because the module's mirasvit:review:generate and mirasvit:review:notify-pending commands were being built too early, before the store tables existed. Their services are now created only when the command is actually run, so a fresh install completes cleanly. Magento 2.4 was unaffected.

1.7.1 (2026-08-28)

Fixed

  • Photos on the customer's own review edit form — with Allow reviews only from buyers switched on, a customer editing a review they had already left could change the rating and all the text but could not add or remove photos: the upload was refused with the buyer-restriction notice. It affected anyone the restriction no longer counts as a buyer of that product — a review left before the restriction was turned on, or an order whose status isn't among the qualifying ones — and it applied to the edit form only. Photo upload on the product page review form still follows the buyer restriction exactly as before.

1.7.0 (2026-08-27)

Features

  • Reviews only from customers who bought the product — switch on Allow reviews only from buyers under Stores → Configuration → MIRASVIT EXTENSIONS → Advanced Reviews and the review form is offered only to a signed-in customer with an order containing that product. Choose which order statuses qualify — set separately from the statuses that earn the "Verified Buyer" badge, so you can badge shipped orders while accepting reviews only on complete ones — and optionally replace the default notice everyone else sees. Guests can never review, but they get sign-in and registration links, so a buyer who is browsing logged out still has a way in. A guest-checkout order placed under the customer's own account email counts too (while Match guest reviews by email is on), and buying a variant of a configurable product or an item of a grouped product counts as buying the parent. The rule is applied on every path a review can arrive through — the storefront form, the photo upload and the GraphQL createProductReview mutation — so it holds against a direct request as well, and it works on full-page-cached product pages. Works on both Luma and Hyvä. Off by default.
  • Customers can edit their own reviews — switch on Let customers edit their own reviews and an Edit Review button appears on each review in the customer's My Product Reviews area. They can change the rating, nickname, summary, review text, pros and cons, and add or remove photos — photos already on the review are shown and count towards the per-review photo limit. A saved edit goes back to Pending, so nothing reaches the storefront again without your approval, and the customer is told this both before and after saving. A customer can only edit a review they posted themselves while signed in: reviews left by guests stay yours alone to edit, and everything the store owns — the store view, the original date, the Verified Buyer verdict, the reviewer's location — is kept as it was. Works on both Luma and Hyvä. Off by default.

Improvements

  • Review lists load faster — the star ratings and public tag chips shown next to each review are now read once for the whole page instead of once per review, so the cost of a review list no longer grows with the number of reviews on it. On a product with 25 approved reviews the review list went from 112 database statements to 40, and now stays flat whether it shows 5 reviews or 25. This covers the product page review list, its paged/AJAX list and the review widgets. Helpful-vote counts are batched the same way, and nothing is queried for them at all when the Mirasvit Vote module is switched off.
  • The Verified Buyer check is cheaper — deciding whether a review earns the badge used to load every matching order just to find out whether one existed; it now reads a single row.
  • ⚠️ Hyvä stores: update the Advanced Reviews Hyvä module as well — 0.3.2 or newer. Both features need the matching companion to appear on a Hyvä storefront, and with the buyer restriction switched on while the older companion is still installed, photo upload on the review form is refused for everybody, buyers included.
  • ⚠️ Run bin/magento setup:upgrade after updating — it adds an index on the customer_email column of Magento's sales_order table, which both the Verified Buyer badge and the new buyer restriction use to match a guest-checkout order to a customer. Nothing is migrated or changed; on a store with a long order history, creating the index itself can take a while.
  • The new storefront and admin wording ships translated in all 15 locales the module supports.

Fixed

  • Magento 2.3.7 compatibility — on 2.3.7 every page that showed a review with star ratings failed with "Undefined variable: secureRenderer", the admin Add Review form broke as soon as it was opened, and setup:di:compile stopped with "Class Magento\Framework\View\Helper\SecureHtmlRenderer does not exist". The module was relying on a Magento helper that only exists in later 2.4 releases. The rating bars, the rating summary, the widget review cards, the admin detailed-rating control and the review-group product grid now all fall back to plain markup where that helper is absent. Magento 2.4 behaviour is unchanged.
  • Overall Rating widget rendered as "Error filtering template" — its per-star breakdown (5 stars, 4 stars, …) hit a "Duplicate column name 'total_rating'" database error as soon as the store had at least one approved review, so the whole block showed an error placeholder instead of the ratings.
  • Verified Buyer badge on grouped products — a customer who bought an item of a grouped product never got the badge on their review of that grouped product. Magento records the child item on the order, and only configurable variants were being matched back to their parent; grouped products are now handled the same way.

1.6.3 (2026-08-12)

Features

  • Review tags — label your reviews ("Fits perfectly", "Great value", "Shipping complaint") and use those labels everywhere reviews appear. Create and manage tags under Marketing → Advanced Reviews → Manage Tags, per store view, then pick them on the review edit form. Each tag is either internal (visible to you only, for sorting and reporting) or public (shown to shoppers) — new tags are internal until you deliberately promote them, and an Active switch takes a tag out of the storefront and out of auto-assignment without losing the reviews already tagged with it, so re-activating brings them all straight back. Access is controlled by a new Manage Tags permission you can grant per admin role.
  • Shoppers can filter reviews by tag on the product page — public tags appear as chips next to each review and as a checkbox filter above the review list, each with a review count. Ticking several tags shows reviews carrying any of them. Internal tags never leak to the storefront, even if someone edits the URL. Works on both Luma and Hyvä (Hyvä needs the matching version of the Advanced Reviews Hyvä module).
  • Filter review widgets by tag — the Masonry Grid, Gallery and Overall Rating widgets gained a Filter by tags option, so you can build blocks like "what customers say about the fit" on a landing page. Existing widgets are untouched — leaving the option empty shows all reviews as before.
  • AI auto-tagging — set a tag's Assignment to Auto and describe in plain words which reviews it should cover ("mentions the product arriving damaged"). New reviews are tagged automatically every 15 minutes, and tags you assigned by hand are never overwritten. A Test Criteria panel on the tag form judges your wording against the 10 latest approved reviews before you save anything — it shows both what the tag matches on its own and what it matches alongside your other auto tags, so disagreements are easy to spot. A Suggest Tags screen reads your existing reviews and proposes tags worth creating. For bulk work there are three commands: bin/magento mirasvit:review:tag:rebuild (re-derive every auto assignment, with --store, --batch-size and --dry-run), mirasvit:review:tag:revalidate tag (re-check one tag) and mirasvit:review:tag:clear tag (drop one tag's assignments). If AI is not configured, an admin notice tells you where to set it up.

Improvements

  • ⚠️ AI settings moved to one place — Advanced Reviews no longer carries its own AI provider, model and API key. Configure AI once under Stores → Configuration → MIRASVIT EXTENSIONS → AI, and every Mirasvit module uses it, including the provider health check and fallback that the module previously missed out on. The config paths mst_review/ai/use_core_ai, mst_review/ai/provider, mst_review/ai/openai,claude,gemini_key and mst_review/ai/openai,claude,gemini_model are gone — if you had a key set here rather than in Core, re-enter it in the Core AI settings after updating, or the AI features will report themselves as disabled.
  • ⚠️ Run bin/magento setup:upgrade after updating — adds the two review-tag tables (mst_review_tag, mst_review_tag_review) and an auto_tagged_at column on the review details table. All new; nothing is migrated or changed.
  • ⚠️ Advanced Reviews permissions now live under Marketing → User Content in role setup, next to Magento's own review permissions and matching where the menu already sits. Permission identifiers are unchanged, so existing admin roles keep working exactly as before.
  • Admin actions can no longer be triggered by a plain link — saving, deleting, reindexing, sending a reminder and generating an AI review now require a real form submission. Previously a bare URL was enough, which meant a browser prefetch or a crawler following an admin link could delete a review, wipe the grouping index or run up a paid AI request.
  • AI features can't hang any more — AI requests now give up after 30 seconds instead of waiting indefinitely, and a tagging pass stops after three failures in a row rather than firing a doomed request for every remaining review. Reviews it didn't reach stay unmarked, so the next pass picks them up once the provider is back.
  • The AI review summary reports the real number of reviews it was built from, instead of always claiming "the 10 latest".
  • Malformed data no longer breaks a save — a corrupted review photo payload or an unexpected AI response used to be able to bring down the review edit page; both are now handled and reported.
  • Clearer admin screens — review grids show the star rating (previously missing), clicking anywhere on a row opens the record on the review, pending, tag and group grids, the Suggest Tags list is a proper sortable grid, and edit-form fieldsets, labels and save/delete messages are consistent with the rest of the admin.
  • Review Overlaps report — renamed from "Review Group Overlaps" and moved off the menu into the Review Groups toolbar, where it belongs, with a clear way back.
  • Clearer review-grouping settings — the three Review Grouping options are described consistently; the configurable-product one used to suggest a one-way roll-up onto the parent, when reviews are in fact pooled in both directions.
  • Interface translations updated across all 15 shipped locales for every new and changed string.

Fixed

  • Advanced Reviews can now be installed on Mage-OS — installation failed outright with a "class not found" error during setup, because the admin review grid detected the platform by looking for files at Magento's own vendor paths, which Mage-OS doesn't use. Magento Open Source and Adobe Commerce behaviour is unchanged.
  • Product-page tag filter now returns the right reviews — picking a tag on the product page hit a non-existent URL and, once reachable, ignored the product and the tag entirely: it could show reviews of other products and reviews that were never approved. The filtered list now respects the product, the chosen public tags and the approved-only rule, sorts by your selected order, and renders exactly like the list you see before filtering (photos, pros/cons and all).
  • Reviews widget on Magento 2.3.7 — the Masonry Grid widget raised a PHP notice and rendered a broken empty state on every page where it had no reviews to show.
  • Bulk tag re-derivation with AI switched off — mirasvit:review:tag:rebuild and mirasvit:review:tag:revalidate reported failure when AI wasn't configured, which made cron wrappers and deploy scripts treat a nothing-to-do pass as a broken step. They now say AI is off and finish successfully.
  • mirasvit:review:tag:revalidate reported nonsense counts for the number of reviews it matched.

1.6.2 (2026-08-11)

Improvements

  • Safe on clustered MySQL — the module's review details table previously had no primary key. MySQL Group Replication refuses to start with such a table, so on a clustered database the whole cluster could come back offline and read-only after a MySQL restart until someone added a key by hand. ⚠️ The table mst_review_details_additional now has a primary key on review_id; run bin/magento setup:upgrade after updating. No data is changed or migrated — the column was already filled with one row per review.
  • Broken review groups no longer fail silently — if a review group's saved product conditions can no longer be read (for example after a corrupted save), the group used to quietly match no products at all, which looked exactly like an empty group and left the pooled rating simply missing. The problem is now reported with the affected store, so it can be found and the group re-saved. The storefront keeps working either way.

Fixed

  • Review grid on Adobe Commerce — the admin review listing failed with a database error ("Unknown column 'cpev.entity_id'") on every Adobe Commerce store, which also broke its filters and both mass actions. The grid now reads the product name correctly on both Adobe Commerce (Content Staging re-keys the catalog tables) and Magento Open Source. Open Source behaviour is unchanged.
  • Installation failure — installing the module could fail because the review reminder cron built its whole email-sending service up front, even during setup. The service is now created only when the reminder cron actually runs.

1.6.1 (2026-07-30)

Fixed

  • Restored the Visible In store selector on the Advanced Reviews review edit form, so you can once again choose which store views a review appears in when editing it. The control had been unavailable because Advanced Reviews replaces the native Magento reviews menu, leaving no way to reach Magento's built-in store selector.

1.6.0 (2026-07-27)

Features

  • Review grouping - a product page can now pool in reviews from related products (configurable / grouped / bundle) and from custom Review Groups (products picked manually or matched by attribute rules), so a new or low-traffic SKU isn't left with an empty review block. Off by default; enable under Stores → Configuration → MIRASVIT EXTENSIONS → Advanced Reviews → Review Grouping and manage groups under Marketing → Advanced Reviews → Review Groups. Includes a storefront "This product only" filter, a *Reviewed:/Bought: \product* origin line on pooled reviews, a Review Group Overlaps report with an oversized-pool warning and hard cap, and JSON-LD / product-summary rating controls.

Improvements

  • Product JSON-LD now reports the aggregate rating and review count over all approved reviews (previously limited to the 20 shown on the page).
  • ⚠️ After updating, run bin/magento setup:upgrade (adds the review-grouping tables and a bought_product_id column - all new, nothing migrated) and bin/magento indexer:reindex mst_review_group.

Fixed

  • Fixed a "Duplicate column name 'total_rating'" error that broke pages rendering the reviews rating widget.

1.5.6 (2026-06-25)

Improvements

  • Code quality improvements - internal hardening to reduce the chance of edge-case errors.

1.5.5 (2026-06-18)

Improvements

  • Faster review listing on product pages - the reviews block on product pages now reads each review's overall star rating from a stored value instead of recalculating it from individual rating votes on every page view. On large catalogs this removes the slow grouped query that ran behind each (uncached) review listing request, so reviews load, filter, and sort noticeably faster. ⚠️ Adds a total_rating column to the mst_review_details_additional table; run bin/magento setup:upgrade after updating. Existing reviews are backfilled automatically, and the value is kept current whenever a review is saved or the review reindex runs (bin/magento mirasvit:review:reindex or the scheduled cron), so it also self-heals after bulk imports or direct database changes.

1.5.4 (2026-06-11)

Improvements

  • Faster product pages on large catalogs - review rating summaries now use a dedicated database index instead of scanning the whole review table for every product. On real data this cut the rating-summary query from ~89 ms to under 2 ms, speeding up product and review gallery pages. ⚠️ Adds a composite index to the rating_option_vote table; run bin/magento setup:upgrade after updating.
  • The product page Reviews By Rating filter is now single-select - clicking a star shows only that rating, and clicking the active star again clears the filter and shows all reviews. Previously several ratings could stay selected at once and you had to deselect each one to view a single rating.

Fixed

  • Fixed a 500 error ("A technical problem with the server") when filtering reviews by star rating on the product page - the review listing and its pager now load correctly.
  • Fixed the Reviews By Rating filter on the product page showing global review counts (totals across all products) instead of the counts for the product being viewed.

1.5.3 (2026-06-04)

Features

  • Turn off review structured data on product pages - new setting Stores → Configuration → Mirasvit → Reviews → General → Enable review JSON-LD (default: Yes). Leave it on to keep emitting schema.org review markup for Google Rich Results, or switch it off if another SEO extension already provides structured data or you want to reduce the database queries those product pages run.

Fixed

  • Fixed the Product link on the admin Pending Reviews grid and review edit form opening a broken admin URL that returned a 404 (most noticeably on multistore setups with per-store domains) - the link now opens the correct storefront product page in a new tab.

1.5.2 (2026-05-29)

Fixed

  • Fixed the review photo gallery on product pages failing to load - slides stayed hidden behind a loading spinner on stores using JS bundling, a strict Content Security Policy, or the Hyvä theme. The gallery library is now bundled with the module instead of being fetched from an external CDN, so it loads reliably in all these setups.
  • Fixed the Product column on the Pending Reviews admin grid showing raw HTML markup instead of a clickable link to the product - moderators can now click straight through to the product, matching the All Reviews grid.

1.5.1 (2026-05-22)

Features

  • JSON-LD structured data on product pages - product pages now emit schema.org/Product JSON-LD with the live aggregate rating and approved reviews, helping Google show star ratings in search results. The block only renders when the product has at least one rated approved review, and caps the inline payload at 20 reviews to keep page weight in check.

Fixed

  • Fixed storefront review listing showing only a single review when multiple reviews had no rating votes (e.g. when ratings are disabled for the store) - each review now keeps its own row in the listing.
  • Fixed "A technical problem with the server" error when filtering the storefront review listing by star rating.
  • Fixed photo upload rejecting every file when Maximum file size (MB) was set to 0 (unlimited) - the storefront uploader now correctly treats 0 as no limit and hides the size hint accordingly.
  • Fixed Page Builder hanging when saving pages containing review widgets.

1.5.0 (2026-05-18)

Features

  • Email address for reviewers - guest review submissions now capture an email address on the storefront form. The email is shown in the admin Reviews grid as a filterable column and on the review edit form. For logged-in customers the email is taken from their account automatically. ⚠️ Adds a new email column to mst_review_details_additional and runs a data patch that backfills the email for existing logged-in customer reviews from customer_entity; guest reviews remain NULL. Run bin/magento setup:upgrade.
  • Verified Buyer badge for guest checkouts - new admin setting Stores → Configuration → Mirasvit → Reviews → General → Match guest reviews by email (default: No). When enabled, the verified-buyer reindex matches guest reviews to orders by the reviewer's email address, so customers who buy as guests and leave a review still receive the Verified Buyer badge. Run bin/magento mirasvit:review:reindex --verify --force after enabling.
  • Spam protection on the review form - automated bot submissions are now silently dropped before reaching the moderation queue.
  • Upload hints on the review photo uploader - the storefront photo uploader now shows accepted file formats, maximum file size, and maximum number of photos based on the admin configuration, so customers see the limits before they try to upload.

Improvements

  • Maximum photos per review and Maximum file size (MB) settings now accept 0 for unlimited (previously had to be at least 1).

1.4.0 (2026-05-04)

Features

  • Configurable photo upload limits - New "Maximum file size" setting (Admin → Stores → Configuration → Mirasvit → Review → Media) caps uploaded review photos by size (1-50 MB, default 5 MB). The upload form validates file size and format in the browser before upload starts.
  • Storefront links in the All Reviews admin grid - The Product column now links directly to the product's storefront page (opens in a new tab).

Improvements

  • Added storefront interface translations for 15 locales: German, Spanish, French, Italian, Dutch, Portuguese (Brazil & Portugal), Swedish, Polish, Czech, Turkish, Ukrainian, Japanese, Simplified Chinese, and Arabic.

Fixed

  • Security improvements.
  • Fixed AI review summary not regenerating when new reviews were approved.
  • Fixed AI review summary showing the same aggregated content on all store views instead of a store-specific summary.
  • Fixed duplicate review section appearing on full-width product pages.
  • Fixed the "Reviews (N)" product tab count not updating after approving, rejecting, or deleting reviews from the admin panel.
  • Fixed the maximum photos per review limit not being enforced on storefront submissions.
  • Fixed admin mass-delete and mass-change-status treating "Select All + exclude one row" incorrectly - only the filtered set is now affected.
  • Fixed SQL error when filtering admin grids by the "Created" date range.
  • Fixed review reminder email failing to load the configured email template on fresh installs.
  • Minor fixes and improvements.

1.3.4 (2026-04-17)

Fixed

  • Review Gallery, Review Grid, and Masonry Grid widgets were showing reviews from all store views on multi-store setups - each widget now filters reviews by the current store.
  • GeoLocation lookup no longer re-processes reviews with non-routable IP addresses (e.g. 127.0.0.1) on every cron run - reviews are now marked as processed after the first lookup attempt.
  • Product page now correctly loads review content and scrolls to the reviews section when the URL contains the s hash anchor.
  • Mass delete and mass change-status actions in the admin reviews grid now work correctly for all selection modes - "Select All", exclusion-based, and individual row; previously "Select All" ignored active grid filters and could affect all records instead of just the filtered subset.
  • Fixed SQL errors ("A technical problem with the server") appearing in the admin reviews grid - caused by ambiguous column references when the grid joins multiple tables with overlapping column names.
  • Fixed reindex_review cron failing with "Item already exists" error.

1.3.3 (2026-04-14)

Fixed

  • Added isApproved() method for compatibility with third-party modules (e.g. Bss_RewardPoint)

1.3.2 (2026-04-06)

Improvements

  • Compatibility with Magento 2.4.9

1.3.1 (2026-01-21)

Fixed

  • Fixed the issue with error on aggregating reviews using AI
  • Fixed the issue with migrating old AI-related settings

1.3.0 (2026-01-21)

Improvements

  • GeoLocation lookup has been moved to the Core module, which also provides automatic weekly updates for the GeoLite2 database (free MaxMind account required for auto-updates).
  • AI-related features now use Core service, which supports multiple AI-providers (OpenAI, Claude, Google Gemini)

1.2.3 (2026-01-05)

Fixed

  • Fixed the issue where reminder emails were not being sent from the store-specific email address

1.2.2 (2025-10-23)

Improvements

  • Ability to configure review reminders per store view

1.2.1 (2025-07-11)

Features

  • Implement captcha for product page review form

1.2.0 (2025-06-20)

Improvements

  • WCAG 2.2 AA Compliance

1.1.13 (2025-05-19)

Improvements

  • Ability to set reviews section identifier for product URLs in review reminder emails

1.1.12 (2025-05-12)

Improvements

  • Configurations structure improved

1.1.11 (2025-05-02)

Fixed

  • Fixed the issue with review summary rating in review title

1.1.10 (2025-04-22)

Improvements

  • Ability to vote whether the review is helpful or not

1.1.9 (2025-04-10)

Fixed

  • Compatibility with Magento 2.4.8

1.1.8 (2025-03-21)

Improvements

  • Display the "Verified Buyer" filter only when the "Verified Buyer" badge is enabled.
  • Ability to display average product rating in the reviews' block title.

Fixed

  • Fixed the issue the number of reviews displayed when the product page is loaded (Hyva)

1.1.7 (2025-03-04)

Improvements

  • Added separate listing for pending reviews
  • Mass actions in reviews grid

1.1.6 (2025-01-14)

Features

  • Ability to send review reminder email copy

1.1.5 (2024-11-11)

Features

  • Review reminder emails

1.1.4 (2024-10-15)

Improvements

  • Changes for Hyva compatibility (Mirasvit_Comment)

1.1.3 (2024-10-14)

Improvements

  • Changes for Hyva compatibility

1.1.2 (2024-07-09)

Improvements

  • Translations
  • Additional data in the reviews listing and form (admin area)

Fixed

  • Fixed the issue with email notifications (multiple emails)

1.1.1 (2024-07-01)

Improvements

  • Small code improvements

1.1.0 (2024-06-20)

Features

  • Review comments

Improvements

  • Small code improvements
  • Date output format

1.0.8 (2024-06-11)

Improvements

  • Alert on image upload failed

Fixed

  • Fixed the issue with review gallery widget

1.0.7 (2024-06-10)

Improvements

  • Image uploader compatibility with Blank-based Magento themes

Fixed

  • Image uploader compatibility with Magento 2.4.7

1.0.6 (2024-05-30)

Improvements

  • Email notifications about pending reviews
  • Admin notifications about pending reviews

1.0.5 (2024-04-22)

Improvements

  • Ability to select order statuses for which the customer should be considered as 'verified buyer'

1.0.4 (2024-04-22)

Fixed

  • Fixed the issue with the error 'Disallowed image type' on .jpeg images

1.0.3 (2024-03-22)

Features

  • Review widgets: Photo gallery, All reviews, Overall rating

1.0.2 (2024-01-09)

Fixed

  • Fixed the issue with the error: Class Zend_Validate not found
  • Fixed the issue with image uploader

1.0.1 (2023-11-14)

Features

  • CLI interface for generating review

Fixed

  • Fixed the issue with reviews photo gallery

1.0.0 (2023-11-10)

Features

  • Added ability to attach photo to review
  • Purchased product info in reviews for configurable products
  • Reviews photos gallery in reviews listing on product pages

0.0.2 (2023-10-17)

Improvements

  • Initial release

0.0.1 (2023-10-17)