v2.12.2
medusajs/medusav2.12.2Dec 11, 2025by olivermrbl
AI Summary
Introduces experimental Hot Module Replacement (HMR) for the backend, granular queue configurations for the workflow engine, and core infrastructure for multi-language support.
Key Highlights
- Granular queue configurations for Redis Workflow Engine
- Core multi-language infrastructure
- Experimental Backend HMR
New Features
- Granular queue options (concurrency, etc.)
- Translation module and preliminary application
- Sync cart translation
- Backend HMR support for API routes, workflows, and modules
Full Release Notes
<!--

# v2.12.2: Experimental backend HMR and granular queue configurations
This release introduces experimental HMR for the Medusa backend and new configuration options for queues and workers in the workflow engine.
CMS_BREAK -->
## Highlights
### Granular queue configurations
This release adds support for configuring the queue and workers of the Redis Workflow Engine (`@medusajs/workflow-engine-redis`). You can pass any options supported by BullMQ, e.g. `concurrency`, in the options of the module.
Here's an example configuration:
```ts
module.exports = defineConfig({
modules: [
{
resolve: "@medusajs/workflow-engine-redis",
options: {
queueOptions: { defaultJobOptions: { removeOnComplete: 1000 } },
workerOptions: { concurrency: 10 }
},
},
})
```
### Core multi-language infrastructure
This release adds the core foundation for multi-language support. We expect to have a first testable preview version some time next week.
The scope of the first release is aimed to solve the following:
- Allow merchants to configure multiple locales for their store
- Allow merchants to add translations for entities in the **Product Module**
- Allow storefront developers to easily retrieve localized products
- Use translated product data in the cart and order flows, e.g. add item to cart
Although, the first release is only focused on the product-related entities, we have built the infrastructure to enable translations of any entity (core and custom). More on this later.
### Backend HMR (experimental)
This release introduces **experimental** Hot Module Replacement (HMR) for our backend to improve the local development experience. In its current state, this feature is a work-in-progress and should be used with caution.
So far, we have added HMR support for the following files and tools:
- API Routes (and middlewares)
- Workflows & Steps
- Scheduled Jobs
- Event Subscribers
- Modules
As well as regular files, such as types and utilities.
When HMR cannot handle a change, we fallback to restarting the server completely.
You can read more about the architecture and key features here: https://github.com/medusajs/medusa/pull/14074
**How to enable it**
The feature is behind a feature flag. Enable it by setting:
```ts
// medusa-config.ts
module.exports = defineConfig({
featureFlags: {
backend_hmr: true
}
})
```
## Features
* feat(dashboard): Improve fully refunded order details by @NicolasGorga in https://github.com/medusajs/medusa/pull/14077
* feat(): Introduce translation module and preliminary application of them by @adrien2p in https://github.com/medusajs/medusa/pull/14189
* feat(): sync cart translation synced by @adrien2p in https://github.com/medusajs/medusa/pull/14226
* chore(): Add translations/locale integration tests and fix locale endpoint by @adrien2p in https://github.com/medusajs/medusa/pull/14266
* feat(): Pluralized props for list readonly link by @adrien2p in https://github.com/medusajs/medusa/pull/14190
## Bugs
* chore(): revert route loading parallelization by @adrien2p in https://github.com/medusajs/medusa/pull/14204
* fix S3 URL escaping by @peterlgh7 in https://github.com/medusajs/medusa/pull/14220
* fix(dashboard): show correct color indicators for payment and fulfillment status columns for `view_configuration` feature flag by @NicolasGorga in https://github.com/medusajs/medusa/pull/14215
* fix(core-flows): refresh payment collection inside updateCartPromotionsWorkflow by @NicolasGorga in https://github.com/medusajs/medusa/pull/13963
* fix(dashboard): avoid unnecessary product relations to be returned by default by @NicolasGorga in https://github.com/medusajs/medusa/pull/14175
* fix(utils): fix error when generating migrations for a module with existing snapshot by @shahednasser in https://github.com/medusajs/medusa/pull/14218
* fix(medusa): use customer query config on delete address route by @NicolasGorga in https://github.com/medusajs/medusa/pull/14238
* fix(dashboard,order): preview pending diff summary by @fPolic in https://github.com/medusajs/medusa/pull/14221
* fix(dashboard): pass prefix to useDataTable to fix product list not paginating by @NicolasGorga in https://github.com/medusajs/medusa/pull/14232
* fix(core-flows): Access orderItem.variant safely inside convertDraftOrderWorkflow when containing custom items by @NicolasGorga in https://github.com/medusajs/medusa/pull/14233
* fix(utils): avoid inflating refundable_total for tax inclusive pricing by @NicolasGorga in https://github.com/medusajs/medusa/pull/14237
* chore(): Upgrade validator patched version by @adrien2p in https://github.com/medusajs/medusa/pull/14254
* fix(): Improve store supported locale -> locale readonly link by @adrien2p in https://github.com/medusajs/medusa/pull/14269
* fix(utils,core-flows): add events constant for translations and use it in workflows by @shahednasser in https://github.com/medusajs/medusa/pull/14277
* fix(core-flows): refresh payment collection inside updateCartPromotionsWorkflow (patch) by @NicolasGorga in https://github.com/medusajs/medusa/pull/14274
### Documentation
* chore(docs): Generated References (automated) by @github-actions[bot] in https://github.com/medusajs/medusa/pull/14199
* docs: add best practices doc for third-party syncing by @shahednasser in https://github.com/medusajs/medusa/pull/14203
* docs: add custom admin route ranking documentation by @bqst in https://github.com/medusajs/medusa/pull/13984
* docs: update Next.js + React by @shahednasser in https://github.com/medusajs/medusa/pull/14210
* chore(docs): Updated UI Reference (automated) by @github-actions[bot] in https://github.com/medusajs/medusa/pull/14212
* docs: triage issues + revamp troubleshooting guides by @shahednasser in https://github.com/medusajs/medusa/pull/14216
* docs: okta integration tutorial by @shahednasser in https://github.com/medusajs/medusa/pull/14188
* docs: various improvements and fixes by @shahednasser in https://github.com/medusajs/medusa/pull/14257
* docs: improve build with AI chapter by @shahednasser in https://github.com/medusajs/medusa/pull/14259
## Chores
* chore(docs): Update version in documentation (automated) by @github-actions[bot] in https://github.com/medusajs/medusa/pull/14198
* chore(docs): Updated API Reference (automated) by @github-actions[bot] in https://github.com/medusajs/medusa/pull/14200
* chore: configurable database migration in concurrency by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/14004
* chore(): Run some commands in server mode only by @adrien2p in https://github.com/medusajs/medusa/pull/14202
* chore(event-bus, workflow-engine): Enable more granualar queues configuration by @adrien2p in https://github.com/medusajs/medusa/pull/14201
* Add js-sdk to resolutions in local development section by @NicolasGorga in https://github.com/medusajs/medusa/pull/14197
* chore: improvements of TSDocs of link steps by @shahednasser in https://github.com/medusajs/medusa/pull/14261
* chore(): Move event bus local logging by @adrien2p in https://github.com/medusajs/medusa/pull/14244
* chore(): Accept an extra agument 'all-or-nothing' on the migrate command by @adrien2p in https://github.com/medusajs/medusa/pull/14262
* chore(order): Remove unique index on item_id:version for order_item by @NicolasGorga in https://github.com/medusajs/medusa/pull/14268
* chore: Add locks to order edit flows by @olivermrbl in https://github.com/medusajs/medusa/pull/14270
## Other Changes
* escape non-ascii characters in filenames in s3 file provider by @peterlgh7 in https://github.com/medusajs/medusa/pull/14209
* chore: Backend HMR (expriemental) by @adrien2p in https://github.com/medusajs/medusa/pull/14074
* fix(core-flows, medusa): Prevent cart addresses duplication on update by @NicolasGorga in https://github.com/medusajs/medusa/pull/13841
**Full Changelog**: https://github.com/medusajs/medusa/compare/v2.12.1...v2.12.2