v2.15.3

tobias-kirschstein/ggheadv2.15.3May 21, 2026by medusa-os-bot[bot]

AI Summary

This release introduces Multi-Factor Authentication (MFA) primitives and API routes for enhanced security, alongside improvements to promotion code visibility when limits are reached.

Key Highlights

  • Implementation of MFA primitives and API routes for enhanced security
  • Improved visibility for skipped promotion codes due to budget or usage limits
  • React peer dependencies broadened to support version 18
  • Fixes for Thai (th) translations and dashboard inventory queries

New Features

  • MFA auth helpers in the JS SDK
  • CodeInput component in the UI

Full Release Notes

## Highlights

### Multi-Factor Authentication Support

This release adds the primitives to support Multi-Factor Authentication (MFA) for enhanced security. This includes new authentication provider primitives, API routes for MFA management, and retrieval functionality. The implementation provides a foundation for integrating various MFA methods.

---

### Promotion Code Visibility Improvements

When promotion codes are skipped due to budget or usage limits, the system now surfaces this information to provide better visibility into why certain promotions weren't applied. This helps merchants understand promotion application behavior and troubleshoot issues.

[#15396](https://github.com/medusajs/medusa/pull/15396)

## Features

*   feat(js-sdk): add MFA auth helpers by [@christiananese](https://github.com/christiananese) in [#15441](https://github.com/medusajs/medusa/pull/15441)
*   feat(ui): add CodeInput component by [@christiananese](https://github.com/christiananese) in [#15424](https://github.com/medusajs/medusa/pull/15424)

## Bugs

*   fix(design-system): broaden React peer dependencies to support v18 an… by [@Suh0161](https://github.com/Suh0161) in [#15271](https://github.com/medusajs/medusa/pull/15271)
*   fix(core-flows): harden create payment sessions when customer has no account holders by [@Suh0161](https://github.com/Suh0161) in [#15264](https://github.com/medusajs/medusa/pull/15264)
*   fix(dashboard): include inventory query in detail key by [@Derekko-web](https://github.com/Derekko-web) in [#15417](https://github.com/medusajs/medusa/pull/15417)
*   fix(dashboard): complete and correct Thai (th) translations by [@Ligament](https://github.com/Ligament) in [#15409](https://github.com/medusajs/medusa/pull/15409)
*   fix(test-utils, link-modules): encode URL credentials and fix schema-qualified RENAME TO by [@Ultron03](https://github.com/Ultron03) in [#15344](https://github.com/medusajs/medusa/pull/15344)
*   fix(medusa): fix filtering by categories and tags in /store/products with the index module by [@shahednasser](https://github.com/shahednasser) in [#15405](https://github.com/medusajs/medusa/pull/15405)
*   fix(create-medusa-app): fix incorrect command replacement when using yarn and npm by [@shahednasser](https://github.com/shahednasser) in [#15436](https://github.com/medusajs/medusa/pull/15436)
*   fix(utils): implement tokenized free text search by [@Suh0161](https://github.com/Suh0161) in [#15275](https://github.com/medusajs/medusa/pull/15275)
*   fix(core-flows): fix incorrect stock location picked for item with backorder in a sales channel with multiple locations by [@shahednasser](https://github.com/shahednasser) in [#15159](https://github.com/medusajs/medusa/pull/15159)

## Documentation

*   docs: configure posthog capturing by [@shahednasser](https://github.com/shahednasser) in [#15449](https://github.com/medusajs/medusa/pull/15449)
*   docs: fix information about preview environments by [@shahednasser](https://github.com/shahednasser) in [#15445](https://github.com/medusajs/medusa/pull/15445)
*   docs: fix documentation issues in triage inbox by [@shahednasser](https://github.com/shahednasser) in [#15427](https://github.com/medusajs/medusa/pull/15427)
*   docs: revert Cloudflare migration by [@shahednasser](https://github.com/shahednasser) in [#15438](https://github.com/medusajs/medusa/pull/15438)
*   docs: add logging by [@shahednasser](https://github.com/shahednasser) in [#15435](https://github.com/medusajs/medusa/pull/15435)
*   docs: prepare to deploy to medusa cloud by [@shahednasser](https://github.com/shahednasser) in [#15429](https://github.com/medusajs/medusa/pull/15429)
*   docs: track logged in users by [@shahednasser](https://github.com/shahednasser) in [#15425](https://github.com/medusajs/medusa/pull/15425)
*   docs: added cloud docs for backups by [@shahednasser](https://github.com/shahednasser) in [#15408](https://github.com/medusajs/medusa/pull/15408)
*   docs: migrate to cloudflare by [@shahednasser](https://github.com/shahednasser) in [#15388](https://github.com/medusajs/medusa/pull/15388)
*   docs: fix mcp instructions for cursor by [@shahednasser](https://github.com/shahednasser) in [#15401](https://github.com/medusajs/medusa/pull/15401)
*   docs: add TSDocs for "add MFA provider primitives by [@shahednasser](https://github.com/shahednasser) in [#15387](https://github.com/medusajs/medusa/pull/15387)

## Chores

*   chore(docs): cloud doc changes (automated) by [@shahednasser](https://github.com/shahednasser) in [#15451](https://github.com/medusajs/medusa/pull/15451)
*   chore: fix docs automation job by [@shahednasser](https://github.com/shahednasser) in [#15452](https://github.com/medusajs/medusa/pull/15452)
*   chore: fix required secrets in review and triage actions by [@shahednasser](https://github.com/shahednasser) in [#15421](https://github.com/medusajs/medusa/pull/15421)
*   chore: fix actions required anthropic api key by [@shahednasser](https://github.com/shahednasser) in [#15410](https://github.com/medusajs/medusa/pull/15410)
*   chore: switch actions to use anthropic api key by [@shahednasser](https://github.com/shahednasser) in [#15404](https://github.com/medusajs/medusa/pull/15404)
*   chore(docs): Updated UI Reference (automated) by [@app/github-actions](https://github.com/app/github-actions) in [#15391](https://github.com/medusajs/medusa/pull/15391)
*   chore(docs): Generated References (automated) by [@app/github-actions](https://github.com/app/github-actions) in [#15393](https://github.com/medusajs/medusa/pull/15393)
*   chore(docs): Update version in documentation (automated) by [@app/github-actions](https://github.com/app/github-actions) in [#15390](https://github.com/medusajs/medusa/pull/15390)
*   chore: fixes to pr reviewer and issue triager by [@shahednasser](https://github.com/shahednasser) in [#15394](https://github.com/medusajs/medusa/pull/15394)

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