Releases: medusajs/medusa
v2.13.6
This release includes an update for MikroORM dependencies to v6.6.12 due to recent security vulnerabilities. While Medusa's core API routes were not impacted by the security vulnerability as they're guarded with Zod validation, it may impact custom API routes if they're not properly guarded. So, we highly recommend updating your Medusa project to avoid potential security vulnerabilities.
There are no breaking changes at Medusa's level due to this update. However, if you use MikroORM and the entity manager in your code, we advise you to read MikroORM's v6.5 and v6.6 release announcements for potential changes.
What's Changed
Features
- feat(http-types-generator): Add an HTTP types generator and validator for Zod schemas by @shahednasser in #14988
Bugs
- fix: Add hosting section to README by @sradevski in #14969
Documentation
- chore: update yarn.lock by @shahednasser in #14944
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14947
- chore(docs): Updated API Reference (automated) by @github-actions[bot] in #14948
- chore(docs): Generated References (automated) by @github-actions[bot] in #14952
- chore: update version in docs by @shahednasser in #14949
- docs: fix data model index documentation not working by @shahednasser in #14959
- chore: support documentation changes automation by @shahednasser in #14968
- docs-utils: automate cloud doc changes by @shahednasser in #14974
- docs: changes to Cloud plans by @shahednasser in #14958
- docs: fix cloud pricing page by @shahednasser in #14979
- Correct 'Buy Y' to 'Get Y' in promotion instructions by @NicolasGorga in #14990
- docs: add note on Redis service plan availability by @shahednasser in #15004
- docs: update Bloom link to correct URL by @shahednasser in #15022
- docs: fix posthog capture for md event by @shahednasser in #15023
- chore: update glob to latest version by @shahednasser in #15005
Chores
- chore: fix example in tsdocs of translations js sdk by @shahednasser in #14953
- chore: add syncing for docs relaese branch by @shahednasser in #14970
- chore: automate TSDocs generation by @shahednasser in #14980
- chore: fix automation actions to add line break by @shahednasser in #14982
- chore: add new rules to the writing-docs skill by @shahednasser in #14983
- chore: set base branch for claude action by @shahednasser in #14989
- chore: fix claude token + run install and build in www by @shahednasser in #14992
- chore: change build command to build packages only in workflows by @shahednasser in #14994
- chore: update claude action prompt with clear guidelines on skill loading by @shahednasser in #14998
- chore(core-flows): Fix comments for removePriceListPricesWorkflow input ids by @NicolasGorga in #15000
- chore: fix PR update for docs automation by @shahednasser in #15002
- chore: fix error in updating docs automation pr by @shahednasser in #15003
- chore: update mikro-orm to 6.6.12 by @shahednasser in #15018
- chore: automate releases by @olivermrbl in #15029
Other Changes
- fix(cli): close leaked file descriptor in clearProject by @buley in #14917
- fix: use exponential backoff in Redis lock acquisition retries by @peterlgh7 in #14954
- Chore: Release by @github-actions[bot] in #15030
New Contributors
Full Changelog: v2.13.5...v2.13.6
v2.13.5
Features
- feat: Improve filtering for workflow executions by @sradevski in #14898
- feat(dashboard,medusa,types): improve order timeline UI by @NicolasGorga in #14935
Bugs
- fix(dashboard): handle single-line errors (without file details) by @shahednasser in #14914
- fix(dashboard): use product default fields on Admin dashboard exports by @NicolasGorga in #14931
- fix: Update injected storefront envvars for Cloud by @sradevski in #14918
Documentation
- chore(docs): Generated References (automated) by @github-actions[bot] in #14893
- chore(docs): Updated API Reference (automated) by @github-actions[bot] in #14892
- docs: add note clarifying pnpm support by @shahednasser in #14896
- docs: added integration docs for Bloom by @shahednasser in #14907
- docs: add S3 info, storefront runtime, and guide on renaming repos for Cloud by @shahednasser in #14908
- docs: redesign docs content by @shahednasser in #14909
- docs: fixes following content redesign by @shahednasser in #14912
Chores
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14890
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14891
- Chore/increase stale thresholds by @NicolasGorga in #14929
- chore: disable rbac user link when ff is off by @carlos-r-l-rodrigues in #14933
Other Changes
- fix: replace hardcoded fulfillment status strings with i18n translati⦠by @bittoby in #14837
- Expose payment & fulfillment status helpers by @pepijn-vanvlaanderen in #14302
- fix(i18n): add missing Brazilian Portuguese translations by @VicenzoMF in #14915
- fix: use in-memory modules if REDIS_URL unset by @peterlgh7 in #14932
New Contributors
- @bittoby made their first contribution in #14837
- @VicenzoMF made their first contribution in #14915
Full Changelog: v2.13.4...v2.13.5
v2.13.4
Features
- feat(order,payment): make return and refund reason translatable by @NicolasGorga in #14797
- feat: carry over promotions flag on claims by @fPolic in #14842
- feat(dashboard): show error details in development mode by @shahednasser in #14875
Bugs
- fix(core-flows): ensure reason ids is an array in
validateReturnReasonsutil by @NicolasGorga in #14836 - fix(ui): propagate data table scroll by @fPolic in #14849
Documentation
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14822
- docs: remove ignored resources from references by @shahednasser in #14841
- docs: add plaintext doc message to markdown content responses by @shahednasser in #14888
Chores
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14821
- chore: add ignore tags for rbac by @shahednasser in #14839
- chore: Fix zod imports in RBAC by @olivermrbl in #14866
Other Changes
- fix: exit build with error if types generation fails by @peterlgh7 in #14852
- docs(resources): fix venue schema import in ticket booking guide by @flatplanetpl in #14868
New Contributors
- @flatplanetpl made their first contribution in #14868
Full Changelog: v2.13.3...v2.13.4
v2.13.3: Fixes regression with entity on query config
Highlights
Fixes regression with undefined entity on req.queryConfig
In v2.13.2 req.queryConfig started including an entity property even when its value was undefined. This caused routes that spread req.queryConfig into query.graph() to have their entity property overwritten by undefined, resulting in the exception: Service with alias "undefined" was not found error. This release fixes the issue by only setting the entity property in req.queryConfig when it indeed has a value.
Bugs
- fix(core-flows): prevent exception when deleting product/variant with orphaned inventory by @NicolasGorga in #14805
- fix(framework): remoteQueryConfig undefined entity regression by @NicolasGorga in #14815
Chores
- chore(types): add external_id to product list params type by @asgerjensen in #14802
Full Changelog: v2.13.2...v2.13.3
v2.13.2: Admin dashboard fixes and DX improvements
β οΈ Warning: v2.13.2 introduces a regression that causes req.queryConfig to include entity: undefined, which can break routes that spread req.queryConfig into query.graph() (e.g., query.graph({entity: "some_entity", ...req.queryConfig })), resulting in a Service with alias "undefined" was not found error. Please upgrade to v2.13.3, which fixes this issue. See #14815 for details.
Highlights
Fix credit line computation on order cancellation and refunding
When cancelling an order with multiple payments (some cancelled or pending), the credit line amount was being incorrectly computed based on all payment amounts, regardless of status. This could result in large negative pending differences. The computation now only considers captured amounts, ensuring accurate credit line totals.
When refunding an order's payments, the credit line amount was being incorrectly computed based on all payments, regardless of the outcome of their corresponding refund. The computation now only takes into account successful refunds.
Filter orders by total amount (view configuration FF enabled) and define max file upload size
Provided the View Configurations feature flag is enabled, the order table now allows filtering orders by their total amount by mapping the value to the underlying order_summary field.
We previously introduced a 1MB limit on file uploads. To attend to different use cases, this release introduces the ability to configure this limit through the medusa-config file. This can be configured as shown below:
// medusa-config.ts
import { defineConfig } from "@medusajs/framework/utils"
export default defineConfig({
admin: {
// Set max upload size to 10MB
maxUploadFileSize: 10 * 1024 * 1024,
// Or disable the limit entirely
// maxUploadFileSize: Infinity,
},
// ... other config
})Show all plugin settings routes in the dashboard
Up until now, only the first plugin's settings routes have appeared in the admin dashboard. If multiple plugins register settings pages, only one would show. All plugin settings route children are now correctly merged and displayed.
Fix create-medusa-app storefront installation when using pnpm
When installing Medusa with pnpm and enabling the Next.js Starter Storefront, an error was raised mentioning pnpm is not available. This release includes dynamic resolution of the package manager set in package.json to match the one being used by the user.
Test files no longer break medusa develop
Previously, having test files (.spec.ts, .test.ts) inside src/workflows, src/subscribers, or src/jobs directories would cause jest is not defined errors when running medusa develop. The resource auto-loader now excludes test files and __tests__/ directories, so they can be placed alongside the source code without issues.
Stripe Payment provider improvements
Previously, if a refund was performed in the Stripe dashboard directly, when trying to create the corresponding Medusa refund, the Stripe provider would throw an error. We know handle this scenario gracefully.
Deleting a customer in Stripe is a permanent action, and if the createPaymentSessionWorkflow failed, this action was performed as part of a compensation function, trapping the customer in a loop when trying to create the account holder in subsequent attempts. We now avoid compensating the createPaymentAccountHolderStep inside the workflow.
Translations no longer crash on primitive arrays
If an entity had a JSONB column containing an array of primitive values (e.g., ["foo", "bar"]), the translation utility would crash with a TypeError when attempting to treat strings as translatable entities. This is now handled gracefully.
Features
- feat(medusa): filter query fields (RBAC field filtering) by @carlos-r-l-rodrigues in #14588
- feat: add forbidden error 403 by @carlos-r-l-rodrigues in #14665
- feat: Allow passing
session_tokento S3 credentials when using an access key by @sradevski in #14778 - feat: Add dynamodb packages as dependencies by @sradevski in #14721
- feat: Introduce filtering by orders total on the Admin UI by @adevinwild in #14146
- feat(admin): add configurable maximum file upload size by @arjusmoon860 in #14720
- feat(medusa,types): add metadata field to AdminUpsertStockLocationAddress and validators by @bouazzaayyoub in #14557
Bugs
- fix(framework): exclude test files from resource auto-loading by @florianhv in #14292
- fix(orchestration):
continueOnPermanentFailurewhen timeout by @carlos-r-l-rodrigues in #14719 - fix(core-flows): only consider captures amounts for credit line amount computation by @NicolasGorga in #14670
- fix(dashboard): settingsRoutes list error (all plugin settings routes now visible) by @chuxi in #14461
- fix(dashboard): pass product ID explicitly to edit option form by @marlinjai in #14631
- fix(dashboard): Added the
__BASE__prefix to the datatable row on click by @adevinwild in #14118 - fix(dashboard): fix toggleable number cell set value by @NicolasGorga in #14619
- fix(dashboard): fix view configurations order filters by @NicolasGorga in #14620
- fix(admin): Fix table cell stacking in RTL languages by @iharshyadav in #14568
- fix(utils): Translations crash on primitive arrays by @Mohammed-AlSharafi in #14565
- fix(types): fix item type for shipping option price calculation by @shahednasser in #14725
- fix(types): make images of product variant optional by @shahednasser in #14689
- fix(js-sdk): fix return type of
listAddressesby @shahednasser in #14712 - fix(icons): default
viewBoxby @fPolic in #14700 - fix(create-medusa-app): fix installations with storefronts for pnpm by @shahednasser in #14681
- fix(cart): add
completed_attoFilterableCartPropsinterface by @webgodo in #14658 - fix(medusa-cli): verbose log level event name typo by @nenadfilipovic-builtt in #14669
- fix: correct
provirdertypo toprovideracross files by @Anexus5919 in #14614 - fix: add
marked_shipped_byto create order shipment by @Fadyy22 in #14660 - fix(core-flows): credit only successful refunds upon order cancellation by @NicolasGorga in #14781
- fix(ui): stale filters when selecting a view by @adevinwild in #14160
- fix(dashboard): Initialize complete price structure for variants in price list edit by @docloulou in #14273
- fix(core-flows,order): avoid returning recreated credit lines due to version bumping as new credit lines in
createOrderCreditLinesWorkflow by @NicolasGorga in #14715 - fix(payment-stripe): handle refunds happening outside of Medusa by @NicolasGorga in #14746
- fix(payment-stripe): Prevent the Stripe payment provider to delete Stripe customers by @adevinwild in #14112
- fix(dashboard): handle undefined payment_collections in order table calculations by @bqst in #14523
- fix(admin): use is_tax_inclusive as column id in store add-currencies form by @webgodo in #14677
- fix(medusa): resolve user_id from user linked to secret key on draft order edit with api-key auth by @NicolasGorga in #14053
Documentation
- docs: added support in Cloud for Next.js 16 by @shahednasser in #14729
- docs: add missing section on custom validation for admin custom auth by @shahednasser in #14682
- docs: add constraint for loops in workflows by @shahednasser in #14639
- docs: add tanstack start solid to supported storefront framework in Cloud by @shahednasser in #14649
- docs: fix Dockerfile COPY command for
.yarn/releasesdirectory by @alexander-wolf in #14710 - docs: update API reference for the loyalty plugin by @shahednasser in #14750
- docs: added information about Claude Code storefront plugin by @shahednasser in #14685
- docs: add a...
v2.13.1: Fixes regression with totals on order listing
Highlights
Fixes regression with totals on order listing
This release fixes a bug introduced in v2.13.0 around total fields selection when listing orders. The bug occurs when loading order items with their relations using the select-in strategy:
- The code maps field selections from
items.*toitems.item.*to load OrderLineItem data - However, critical OrderItem fields like
quantitylive on items.detail, not on items.item - These fields were being dropped during the mapping process
- Without quantity data, the order totals couldn't be calculated correctly
The select-in strategy is used when listing orders with pagination options, which is for example used in the GET /admin/orders and GET /admin/draft-orders endpoints.
This fix adds compensatory logic that ensures when items.item.* fields are selected, the corresponding items.* fields are also selected or preserved. This prevents the data required for order calculations from being removed.
Bugs
- fix(medusa): use http type for batch translation settings request by @shahednasser in #14612
- fix(core-flows): recompute adjustments for draft orders after changes are added by @fPolic in #14511
- fix(order): item relation loading in select-in path by @fPolic in #14629
Documentation
- docs: changes for v2.13.0 by @shahednasser in #14524
- chore(docs): Updated API Reference (automated) by @github-actions[bot] in #14609
- docs: fix references pipeline + generate references for v2.13.0 by @shahednasser in #14623
Chores
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14608
- chore(docs): Generated DML JSON files (automated) by @github-actions[bot] in #14607
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14611
- chore(medusa): default medusa policies by @carlos-r-l-rodrigues in #14542
Full Changelog: v2.13.0...v2.13.1
v2.13.0: Improved Translations, Priority-based event processing, Better pnpm support
Highlights
Zod dependency restructuring
π§ Breaking change
This release adds zod as a dependency of @medusajs/framework.
This change has been marked as breaking although for the vast majority of projects, existing
zodimports will continue to work through either as a direct dependency (if zod is installed directly in your project), or a transitive dependency.
Developers using pnpm couldn't access zod due to strict dependency isolation. Since zod is essential for Medusa development, making it a framework export ensures consistent versioning and accessibility, similar to other third-party libraries used in Medusa.
Migration
Update your zod imports from:
import { z } from "zod"To:
import { z } from "@medusajs/framework/zod"We've added a codemod to automate this migration. After updating to the latest version, run:
npx medusa codemod replace-zod-importsImproved Translations
Translation Settings Management UI
This release adds a new admin dashboard interface for managing translation settings, allowing merchants to configure which entities and fields are translatable directly from the UI.
Translatable modifier in the Data Model API
This release adds a new .translatable() modifier for text properties in the Data Model API.
Example Usage:
const Store = model.define("store", {
name: model.text().translatable(),
description: model.text().translatable(),
})These two changes to Translations improve the experience of managing translatable entities and their translatable fields. When the translatable modifier from the Data Model API is used, the entity will automatically be marked as translatable. This will make it available for configuration in the admin dashboard. Merchants can select what fields of each entity needs translation.
In https://github.com/medusajs/medusa/releases/tag/v2.12.4, we added support for translating custom entities by specifying them in the module options of Translations. This option has been removed in favor of the changes in this release. As described above, entities that has any field with the .translatable() modifier will be marked as translatable.
The following are required actions, if you have already translated data models from custom modules:
- Remove the
entitiesoption from the translation module inmedusa-config.ts - Add the
.translatable()property to fields in your data model definitions - Configure the translatable entities from the new management view in the admin dashboard
Existing translations for custom data models will remain as is after the upgrade.
Translations is still an experimental feature. Enable it in your project by following the guide in our documentation.
Priority-based event processing
This release introduces a priority queue system for event processing to improve system responsiveness and prevent internal events from blocking critical business operations.
Key Changes
- Event processing now uses priority levels to determine processing order (lower number = higher priority)
- Internal system events are automatically assigned the lowest priority to prevent queue overload
- Critical business events like order placement are processed first with high priority (priority 10)
- All other events default to standard priority (priority 100)
- Priority can be customized at message, emit, or module level for fine-grained control
This ensures that important customer-facing events (e.g., order confirmations) are processed immediately, even during high-volume internal system operations.
Improved support for pnpm
This release resolves common issues with pnpm for new installations.
create-medusa-app now installs Medusa with the package manager you're using:
yarn dlx create-medusa-app@latest # install with yarn
pnpm dlx create-medusa-app@latest # install with pnpm
npx create-medusa-app@latest # install with npmYou can alternatively use the --use-npm, --use-yarn, or --use-pnpm options to specify the package manager to use.
Note: we recommend using
yarnorpnpmto install dependencies.npmis known to be slower.
Filtering admin notifications
This release introduces a fixed filter, channel=feed, on notifications fetched for the notification drawer in Medusa Admin.
This was always intended to ensure we only show notifications that are purpose-built for the notification drawer. Other channel notifications will break the rendering of the drawer, since they don't have the required content format for the component.
React Router upgrade
This release bumps react-router-dom from 6.20.1 to 6.30.3 to eliminate a security vulnerability. See advisory here.
If your project has react-router-dom installed explicitly, please upgrade to version 6.30.3.
Claude Code Plugins
We've published new Claude Code plugins to assist you in your development with Medusa. The medusa-dev plugin gives Claude the knowledge to help you in building customizations in your backend, admin, and storefront.
To install the plugin:
claude # start claude code
/plugin marketplace add medusajs/medusa-claude-plugins
/plugin install medusa-dev@medusaThen, you can ask Claude Code to build Medusa features, fix bugs, and more. Claude Code will use the skills in the plugin to provide you with accurate and relevant Medusa code.
For example, you can run the following prompts to create a product reviews feature:
Implement a product reviews feature. Authenticated customers can add reviews. Admin users can view and approve or reject reviews from the dashboard
Features
- feat(DML): Add a new translatable property modifier applicable on text by @adrien2p in #14494
- feat(deps,framework): add zod as framework dependency by @shahednasser in #14441
- feat(create-medusa-app): add support for pnpm and specifying package manager by @shahednasser in #14443
- feat(events): Implement default priority-based event processing by @adrien2p in #14476
- feat(config): Default event worker concurrency to 3 on cloud by @adrien2p in #14477
- feat(core-flows,types,utils,medusa): Translate tax lines by @NicolasGorga in #14359
- feat(medusa-cli): add codemod command + codemod for replacing zod imports by @shahednasser in #14520
- feat(translation,fulfillment,customer,product,region,tax,core-flows,medusa,types): Implement dynamic translation settings management by @NicolasGorga in #14536
- Feat(): improve module typings in medusa config and prepare event config typings by @adrien2p in #14478
- feat(medusa): Prevent build command from throwing on missing config by @adrien2p in #14540
- feat(core-flows): Allow payment session status captured to be processable upon cart completion by @NicolasGorga in #14527
- feat(create-medusa-app): add facts for Claude Code plugin and MCP server by @shahednasser in #14578
- feat(dashboard,translation,js-sdk,medusa,types): Translation settings management UI by @NicolasGorga in #14541
Bugs
- fix: Add schema only flag on Medusa app loader by @adrien2p in #14502
- fix(core-flows): Avoid throwing if no prices found for variant when adding to cart custom price item by @NicolasGorga in #14528
- fix(utils): fix import of caching and translation modules to be from @medusajs/medusa by @shahednasser in #14519
- fix(dashboard): filter feed channel notifications in admin dashboard by @NicolasGorga in #14549
- fix(core-flows): pass created_by to fulfillment input by @NicolasGorga in #14561
- fix: fix validation in posthog analytics identify by @peterlgh7 in #14562
- fix(core-flows): Prevent calling list methods unnecessarily in various update workflows by @NicolasGorga in #14567
- fix(docs): Remove spread operators and let mergeConfig handle merging by @NicolasGorga in #14558
- fix(create-medusa-app): fix error handling when thrown error is a string by @shahednasser in #14555
- fix(utils): support both path and parentPath in migration file by @riqwan in #14576
- fix(cli): show clear error when running outside a Medusa project by @shahednasser in h...
v2.12.5: Fix build-process regression
Highlights
Fixes regression with link migrations
This release fixes a regression in type generation during builds that could cause build failures under certain conditions. In PR #14493, we updated the build process to generate Medusaβs autogenerated types at build time, ensuring they are available both during development and in production.
This change introduced an unintended issue in the build process. Generating types during the build requires bootstrapping the application. During bootstrap, several core internal loaders are executed, including those responsible for establishing database connections. These loaders depend on specific environment variables, and when those variables are not present, the build fails.
This release changes the types generation to rely on a βlightweightβ bootstrap mode , which allows the application to start without executing these core internal loaders, avoiding the dependency on environment variables during the build phase.
Features
- feat(rbac): role-based access control module by @carlos-r-l-rodrigues in #14310
- feat(): Add modules options autocomplete to medusa config by @adrien2p in #14465
Bugs
Documentation
- docs: docs for next release by @shahednasser in #14456
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14469
- docs: fix locale option passed to query by @shahednasser in #14472
- chore(docs): Updated API Reference (automated) by @github-actions[bot] in #14470
- chore(docs): Generated References (automated) by @github-actions[bot] in #14471
- docs: auth in cloud + restructure deployment guides by @shahednasser in #14457
- chore(rbac): user link and utils by @carlos-r-l-rodrigues in #14320
- docs: updates for storefront in cloud by @shahednasser in #14491
Chores
- chore(docs): Generated DML JSON files (automated) by @github-actions[bot] in #14467
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14468
Full Changelog: v2.12.4...v2.12.5
v2.12.4: Improved Translations
Highlights
New Translations features
This release expands the capabilities of Translations. Note that Translations is still an experimental feature. Refer to our documentation on how to get started.
New translatable core data models
We have extended the set of core translatable data models to include:
- Shipping Option
- Region
- Customer Group
- Shipping Option Type
If you need additional core data models to be translatable, please feel free to open an issue and we will address it as soon as possible.
Support for custom data models
We have added support for translating data models from custom modules. These can be specified in the module options of the @medusajs/translation module, as shown below:
module.exports = defineConfig({
projectConfig: { ... },
modules: [
{
resolve: "@medusajs/translation",
options: {
entities: [{ type: "post", fields: ["title"] }],
},
},
],
featureFlags: {
translation: true,
},
})The API is still under development and may change in a future release.
When custom data models are specified in the module options, they are automatically detected and will allow merchants to add translations from the admin dashboard without any additional setup.
Fetching the localized version of your data is easily done with query.graph:
const { data } = query.graph(
{
entity: "post",
fields: ["title"]
},
{
locale: "de-DE"
}
)Simply pass the locale option and Medusa will take care of the rest under the hood.
Generate types during build
This release improves our build-tooling to generate types in .medusa/types/ during the build. This ensures that types used during development will not cause the production build to fail.
Resolved risk of critical data loss
This release solves an issue with order-deletion, that could lead to critical data loss. See PR here. The issue was reported by @mo6zes and solved shortly after. We will publish an advisory describing the details soon.
Although, the data loss could only happen under rare circumstances, we advise upgrading to the latest version as soon as possible.
Features
- feat(): Auto generated types generation upon build by @adrien2p in #14337
- feat(): Translation settings + user configuration + admin hook and js sdk + dashboard by @adrien2p in #14355
- feat(dashboard): Add first and last name inputs to update order shipping and billing address forms by @NicolasGorga in #14394
- feat(translation,core-flows): translate remaining core entities and sync shipping option <> method translations by @NicolasGorga in #14358
- feat(core-flows,utils): Shipping options workflow events emission by @NicolasGorga in #14388
- feat(dashboard,draft-order): Remove hardcoded strings and replace with translations in draft orders list page by @NicolasGorga in #14400
- feat(medusa,utils,core-flows): add reset password metdata by @riqwan in #14417
- feat(translation): Update wording in translation list for translation⦠by @adrien2p in #14453
- feat(translation): Order translastable entities ordered alphabetically by @adrien2p in #14451
- feat(translation): Add support for locale to the graph query by @adrien2p in #14454
- feat(translation): Improve translation alert in empty languages state by @adrien2p in #14464
Bugs
- fix(core-flows): fix type of getTranslatedLineItemsStep by @shahednasser in #14338
- fix(medusa): fix type of product variant request param by @shahednasser in #14342
- fix(order): Prevent fetching all db adjustments when no items are pre⦠by @adrien2p in #14351
- fix(medusa): allow passing null to cart API routes by @shahednasser in #14381
- fix(medusa,framework): HMR file watch by @carlos-r-l-rodrigues in #14390
- fix(types): add missing completed_at property for carts by @shahednasser in #14412
- fix(dashboard): fix customer details page crashing when their order is refunded by @shahednasser in #14413
- fix(dashboard): form reset for across allocation by @fPolic in #14369
- fix(core-flows): Avoid checking inventory items on fulfillment cancel for unmanaged inventory variants by @NicolasGorga in #14177
- fix(core-flows): conditionally create customer on order email update if unset by @NicolasGorga in #14264
- fix(translation): omit id from types properties by @adrien2p in #14445
- fix(js-sdk): add metadata parameter to request body type of reset-password route by @shahednasser in #14458
- fix(create-medusa-app): fix version option not working with Next.js storefront by @shahednasser in #14462
Documentation
- docs: document cloud sign in methods, usage and add-on changes by @shahednasser in #14333
- docs: generate API reference for 2.12.3 by @shahednasser in #14341
- docs: generate references manually for 2.12.3 by @shahednasser in #14340
- docs: add vite configuration to docker guide by @shahednasser in #14352
- docs: fixes related to troubleshooting by @shahednasser in #14353
- docs: fix total descriptions across docs by @shahednasser in #14366
- docs: add admin extensions to navbar by @shahednasser in #14368
- docs: add line highlight validation by @shahednasser in #14380
- docs-utils: add operator map to docs generator knowledge base by @shahednasser in #14382
- docs: small fixes and improvements to text by @shahednasser in #14385
- docs-utils: performance improvements for the clean OAS script by @shahednasser in #14386
- docs: resolve example tag in DML properties by @shahednasser in #14383
- docs: allow stop generation of answer in AI assistant by @shahednasser in #14387
- docs: various improvements to introduction guides by @shahednasser in #14398
- docs: use 200 for routes response across docs by @shahednasser in #14418
- docs: add how-to guide for removing country code in storefront prefix by @shahednasser in #14419
- docs: added support for tests in www workspace by @shahednasser in #14415
- docs: add examples for migrations by @shahednasser in #14420
- docs: added callouts in search and AI assistant by @shahednasser in #14421
- docs: added tests for components in api-reference project by @shahednasser in #14428
- docs: fix styling of code elements in headers by @shahednasser in #14440
Chores
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14336
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14334
- chore(docs): Generated DML JSON files (automated) by @github-actions[bot] in #14335
- chore: fix TSDocs of total fields to be accurate by @shahednasser in #14367
- chore: Ensure isolated order deletion by @olivermrbl in #14405
- chore: Create publishable API key as part of the defaults by @olivermrbl in #14356
- chore: Add Claude Code commands by @olivermrbl in #14438
- chore: fix eslint config in root by @shahednasser in #14444
- chore(medusa): add missing fields and filters to product variants endpoint by @NicolasGorga in #14448
- chore: Require manual trigger of Claude review by @olivermrbl in #14455
- chore: update TSDocs + export getTranslatedShippingOptionsStep from core-flows by @shahednasser in #14460
Other Changes
v2.12.3: Translations (experimental) and Order Exports
Highlights
Translations (experimental)
This release introduces experimental support for Translations. Translations allows merchants to configure multiple locales in their store and translate their product information accordingly. In this experimental release, translations support all entities from the Product Module. In the official release in January, we expect to support additional core entities and offer framework-level tooling to translate entities from custom modules.
Read the announcement blog post or get started in our documentation.
Order Exports
This release introduces support for exporting Orders to a .csv file from Medusa Admin. The export will use the filters applied in the orders table.
Features
- feat(): Sync order translations by @adrien2p in #14267
- feat: order export and upload stream by @carlos-r-l-rodrigues in #14243
- feat(): Add support for locale to the js sdk by @adrien2p in #14306
- feat(): Add support for store locales end point by @adrien2p in #14307
- feat(): Translation statistics by @adrien2p in #14299
- feat(): Add more translatable core entity by @adrien2p in #14311
- feat(js-sdk,types,medusa): add list locales store method to JS SDK by @shahednasser in #14314
- feat(): remove status from translatable fields by @adrien2p in #14321
- feat: Translations UI by @NicolasGorga in #14217
Bugs
- fix(translation): add index file for models by @shahednasser in #14272
- fix(types,translations): fix types for translation and locale updates by @shahednasser in #14278
- fix(types): add locale to the query parameters of product query types by @shahednasser in #14282
- fix(index): detect enum field by @carlos-r-l-rodrigues in #14298
- fix(link-modules): export store locale link definition by @NicolasGorga in #14293
- Fix/readonly link feature flag conditional by @adrien2p in #14316
- fix(pricing,dashboard): update min_quantity/max_quantity to decimal in price model by @NicolasGorga in #14045
- fix(): Cart translation sync by @adrien2p in #14327
Documentation
- docs: updates for next release by @shahednasser in #14275
- chore(docs): Generated DML JSON files (automated) by @github-actions[bot] in #14284
- docs: update next and react by @shahednasser in #14288
- chore: generate and update OAS for translations by @shahednasser in #14281
- docs: translation module by @shahednasser in #14271
Chores
- chore(docs): Update version in documentation (automated) by @github-actions[bot] in #14283
- chore(docs): Updated UI Reference (automated) by @github-actions[bot] in #14285
- chore: Introduce OIDC auth for npm publishing by @olivermrbl in #14279
- chore(utils): currency epsilon by @carlos-r-l-rodrigues in #14225
- chore(): Allow PR CI to run all the time by @adrien2p in #14295
- chore: sync Figma resources by @fPolic in #14297
- chore(): Remove default_locale from StoreLocale by @NicolasGorga in #14300
- chore(): apply locale middleware to all store routes by @adrien2p in #14305
- chore(): Update locale header usage by @adrien2p in #14318
- chore(): Migration generator fix generated import by @adrien2p in #14315
- chore(): js-sdk set locale in server environment by @adrien2p in #14313
- chore: TSDocs for Translation Module by @shahednasser in #14280
- chore(): Apply translation feature flag broaderly by @adrien2p in #14319
- chore: added since tag to new routes by @shahednasser in #14322
- chore: add missing since tag for js sdk by @shahednasser in #14325
Other Changes
- feat(admin): add translation for zhTW by @Achang0611 in #14124
New Contributors
- @Achang0611 made their first contribution in #14124
Full Changelog: v2.12.2...v2.12.3