v2.21.2

medusajs/medusav2.21.2Sep 28, 2026by medusa-os-bot[bot]

Upgrading?

AI Summary

This patch release focuses on performance improvements for the search route and resolves cache stability issues. It also includes bug fixes for promotions, the workflow engine, and various dashboard components.

Key Highlights

  • Restricts the `/store/search` route to only allow retrieving fields defined within the index to ensure better performance and data safety.
  • Fixes search cache settling issues and prevents search index versions from piling up.
  • Corrects the correlation of automatic promotion prefiltering with candidate promotions.
  • Updates workflow engine Redis options to nest `RedisWorkflowsOptions` under `redis`.
  • Enhances dashboard internationalization and adds validation messages for forms.

Breaking Changes

  • The `/store/search` route now strictly disallows expanding fields outside of the defined index, which may break code that previously requested data not in the index.

Full Release Notes

<!--

![v2.21.2](https://res.cloudinary.com/dza7lstvk/image/upload/v1790589186/Releases/v2-21-2-d470b5.png)

# v2.21.2: Performance Improvement for Search Route

This patch release resolves several search indexing and cache stability issues, corrects automatic promotion prefiltering, and ships a range of dashboard and API bug fixes from the community.

CMS_BREAK -->

## Disallow Expanding Fields Outside of Index in Search Route

The `/store/search` route now only allows retrieving fields that are defined on the index being searched. It no longer allows fetching data outside the index by hydrating through `query.graph`. This is for better search performance and ensures you clearly define what can be retrieved on your indexed data model.

## Bugs

*   fix: Disallow expanding beyond index fields on search endpoint by [@sradevski](https://github.com/sradevski) in [#17044](https://github.com/medusajs/medusa/pull/17044)
*   fix: Wait for search cache to settle before setting or invalidating by [@sradevski](https://github.com/sradevski) in [#16966](https://github.com/medusajs/medusa/pull/16966)
*   fix(search): stop search index versions from piling up by [@sradevski](https://github.com/sradevski) in [#16930](https://github.com/medusajs/medusa/pull/16930)
*   fix: Correctly count when using distinct by [@sradevski](https://github.com/sradevski) in [#16928](https://github.com/medusajs/medusa/pull/16928)
*   fix(promotion): correlate the automatic promotion prefilter with the candidate promotions by [@DylanCuure](https://github.com/DylanCuure) in [#16954](https://github.com/medusajs/medusa/pull/16954)
*   fix(medusa): allow omitting deprecated options in admin product updates by [@Dextheking1](https://github.com/Dextheking1) in [#16959](https://github.com/medusajs/medusa/pull/16959)
*   fix(workflow-engine-redis): nest RedisWorkflowsOptions under redis in the module options type by [@Asgabani](https://github.com/Asgabani) in [#16730](https://github.com/medusajs/medusa/pull/16730)
*   fix(payment): avoid double-prefixing an already pp_-prefixed provider by [@RoxasZohbi](https://github.com/RoxasZohbi) in [#16899](https://github.com/medusajs/medusa/pull/16899)
*   fix(draft-order): fix admin crash when selecting a customer without an email by [@kelvin511](https://github.com/kelvin511) in [#16952](https://github.com/medusajs/medusa/pull/16952)
*   fix(utils): strip g/y flags in buildRegexpIfValid for CORS origins by [@wakqasahmed](https://github.com/wakqasahmed) in [#16568](https://github.com/medusajs/medusa/pull/16568)
*   fix(dashboard): internationalize order payment labels by [@luxapan](https://github.com/luxapan) in [#16846](https://github.com/medusajs/medusa/pull/16846)
*   fix(dashboard): i18n fill the 5 missing keys in fi hr pl sv tr by [@theluckystrike](https://github.com/theluckystrike) in [#16933](https://github.com/medusajs/medusa/pull/16933)
*   fix(dashboard): add readable validation messages to create region form by [@NikhilDhillon](https://github.com/NikhilDhillon) in [#16720](https://github.com/medusajs/medusa/pull/16720)
*   fix(dashboard): point refund and return reason row links at their edit routes by [@Minhal128](https://github.com/Minhal128) in [#16742](https://github.com/medusajs/medusa/pull/16742)
*   fix(dashboard): correct shipping profile row link path by [@Asgabani](https://github.com/Asgabani) in [#16728](https://github.com/medusajs/medusa/pull/16728)
*   fix(dashboard): i18n placeholders in de and pl that don't match en.json by [@Na5co](https://github.com/Na5co) in [#16907](https://github.com/medusajs/medusa/pull/16907)
*   fix: rename misspelled orignalSet parameter to originalSet by [@Dextheking1](https://github.com/Dextheking1) in [#16908](https://github.com/medusajs/medusa/pull/16908)
*   chore: fix handling of invalid translation json by [@shahednasser](https://github.com/shahednasser) in [#17002](https://github.com/medusajs/medusa/pull/17002)

## Documentation

*   docs: add docs on canceling workflow execution by [@shahednasser](https://github.com/shahednasser) in [#16901](https://github.com/medusajs/medusa/pull/16901)
*   docs: add behavior of allow unauthenticated by [@shahednasser](https://github.com/shahednasser) in [#16965](https://github.com/medusajs/medusa/pull/16965)
*   docs: clarify has_account behavior + how to convert a guest customer into a registered customer by [@shahednasser](https://github.com/shahednasser) in [#17001](https://github.com/medusajs/medusa/pull/17001)
*   docs: add markdown parsing for pricing page by [@shahednasser](https://github.com/shahednasser) in [#17005](https://github.com/medusajs/medusa/pull/17005)
*   docs: update cloud navigation info and pricing page by [@shahednasser](https://github.com/shahednasser) in [#16924](https://github.com/medusajs/medusa/pull/16924)
*   docs: update cloud usage with search changes by [@shahednasser](https://github.com/shahednasser) in [#17015](https://github.com/medusajs/medusa/pull/17015)
*   docs: document usage credits and searchable branch picker in Cloud [automated] by [@shahednasser](https://github.com/shahednasser) in [#17017](https://github.com/medusajs/medusa/pull/17017)
*   docs: remove published status filter by [@shahednasser](https://github.com/shahednasser) in [#16915](https://github.com/medusajs/medusa/pull/16915)
*   docs: generate sidebar + update actions to use opus 5.5 by [@shahednasser](https://github.com/shahednasser) in [#16931](https://github.com/medusajs/medusa/pull/16931)
*   docs: address Kapa coverage gaps for 2026-08-01 [automated] by [@shahednasser](https://github.com/shahednasser) in [#17011](https://github.com/medusajs/medusa/pull/17011)
*   docs: document Kapa top questions for 2026-08-01 [automated] by [@shahednasser](https://github.com/shahednasser) in [#17012](https://github.com/medusajs/medusa/pull/17012)
*   docs: document domain provisioning failures, database access controls, and log time-range limits [automated] by [@shahednasser](https://github.com/shahednasser) in [#16919](https://github.com/medusajs/medusa/pull/16919)
*   docs: fix JSDoc typos in core types and js-sdk by [@Dextheking1](https://github.com/Dextheking1) in [#16920](https://github.com/medusajs/medusa/pull/16920)
*   docs: fix typos in Alert example and CommandBar JSDoc by [@Dextheking1](https://github.com/Dextheking1) in [#16906](https://github.com/medusajs/medusa/pull/16906)
*   docs: mention plural-config.json in admin translation guide by [@SanteriMoilanen](https://github.com/SanteriMoilanen) in [#16888](https://github.com/medusajs/medusa/pull/16888)
*   docs: fix typo multple -> multiple by [@vaibhav8a](https://github.com/vaibhav8a) in [#16654](https://github.com/medusajs/medusa/pull/16654)
*   docs: doc changes for next release [automated] by [@shahednasser](https://github.com/shahednasser) in [#16798](https://github.com/medusajs/medusa/pull/16798)

## Chores

*   chore: combine release actions + fix snapshot releases by [@shahednasser](https://github.com/shahednasser) in [#17041](https://github.com/medusajs/medusa/pull/17041)
*   chore: re-add snapshot comment by [@shahednasser](https://github.com/shahednasser) in [#17042](https://github.com/medusajs/medusa/pull/17042)
*   chore: add action to automate translations by [@shahednasser](https://github.com/shahednasser) in [#16962](https://github.com/medusajs/medusa/pull/16962)
*   chore: add automation for Kapa insights to docs by [@shahednasser](https://github.com/shahednasser) in [#17008](https://github.com/medusajs/medusa/pull/17008)
*   chore: update claude code action version by [@shahednasser](https://github.com/shahednasser) in [#17009](https://github.com/medusajs/medusa/pull/17009)
*   chore: update CLAUDE.md by [@shahednasser](https://github.com/shahednasser) in [#17043](https://github.com/medusajs/medusa/pull/17043)
*   chore: increase stalebot API limit by [@leobenzol](https://github.com/leobenzol) in [#16927](https://github.com/medusajs/medusa/pull/16927)
*   chore(dashboard): add missing translations [automated] by [@shahednasser](https://github.com/shahednasser) in [#17004](https://github.com/medusajs/medusa/pull/17004)
*   chore(dashboard): add missing translations [automated] by [@shahednasser](https://github.com/shahednasser) in [#17000](https://github.com/medusajs/medusa/pull/17000)

## Other Changes

*   chore(dashboard): i18n complete the vi dashboard locale by [@theluckystrike](https://github.com/theluckystrike) in [#16936](https://github.com/medusajs/medusa/pull/16936)
*   chore(dashboard): i18n complete the uk dashboard locale by [@theluckystrike](https://github.com/theluckystrike) in [#16939](https://github.com/medusajs/medusa/pull/16939)
*   chore(dashboard): i18n complete the el dashboard locale by [@theluckystrike](https://github.com/theluckystrike) in [#16948](https://github.com/medusajs/medusa/pull/16948)
*   i18n complete the mk dashboard locale by [@theluckystrike](https://github.com/theluckystrike) in [#16940](https://github.com/medusajs/medusa/pull/16940)
*   add missing hungarian translations in admin dashboard by [@theluckystrike](https://github.com/theluckystrike) in [#17007](https://github.com/medusajs/medusa/pull/17007)

## New Contributors

* @DylanCuure made their first contribution in [#16954](https://github.com/medusajs/medusa/pull/16954)
* @RoxasZohbi made their first contribution in [#16899](https://github.com/medusajs/medusa/pull/16899)
* @kelvin511 made their first contribution in [#16952](https://github.com/medusajs/medusa/pull/16952)
* @wakqasahmed made their first contribution in [#16568](https://github.com/medusajs/medusa/pull/16568)
* @luxapan made their first contribution in [#16846](https://github.com/medusajs/medusa/pull/16846)
* @NikhilDhillon made their first contribution in [#16720](https://github.com/medusajs/medusa/pull/16720)
* @Minhal128 made their first contribution in [#16742](https://github.com/medusajs/medusa/pull/16742)
* @Na5co made their first contribution in [#16907](https://github.com/medusajs/medusa/pull/16907)
* @leobenzol made their first contribution in [#16927](https://github.com/medusajs/medusa/pull/16927)
* @SanteriMoilanen made their first contribution in [#16888](https://github.com/medusajs/medusa/pull/16888)
* @vaibhav8a made their first contribution in [#16654](https://github.com/medusajs/medusa/pull/16654)
* @Asgabani made their first contribution in [#16728](https://github.com/medusajs/medusa/pull/16728)
* @Dextheking1 made their first contribution in [#16906](https://github.com/medusajs/medusa/pull/16906)
* @theluckystrike made their first contribution in [#16933](https://github.com/medusajs/medusa/pull/16933)

**Full Changelog**: [v2.21.1...v2.21.2](https://github.com/medusajs/medusa/compare/v2.21.1...v2.21.2)

Related Repositories