โ ๏ธ Breaking Change
Impact Score: 7/10
Medusa v1.16.0 โ Release Notes & Engineering Impact
Source available โ automated, not human-reviewed
Component: medusajs ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Breaking changes **Database schema changes**
โก Executive Summary (TL;DR)
Medusa v1.16.0. Source highlight: Multi-language support in Medusa Admin
Who Does This Impact? (Role-Based Analysis)
๐ป Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
๐ Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
โ๏ธ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
โ ๏ธ Breaking Changes & Deprecations (1)
- Breaking changes **Database schema changes**
โจ New Features & Capabilities (6)
- feat(medusa,orchestration): Decouple Product in Cart domain
- feat(utils, module-sdk, medusa): Extract pg connection utils to utils package
- feat(admin): add ProductCollectionDetailsWidgetProps type
- feat(pricing, types): PriceSets as entry point to pricing module
- feat(orchestration): remote joiner - field alias
- feat(admin-ui): Multi-language support
๐ง Bug Fixes & Patches (6)
- fix(medusa): Type in AbstractFulfillmentService
- fix(link-modules): Fix link module initialization
- fix(admin-ui): disabling analytics when opted out
- fix(medusa): default sales channel for store variant endpoints
- fix(link-modules): fix link configuration for product shipping profile
- fix(orchestration): Infinite loop by reference update
๐ View Raw Release Notes (Original Developer Log)
<!--

# Version 1.16.0
This version ships multi-language support in Medusa Admin, including translations in English, French, and Portuguese (Brazil)
CMS_BREAK -->
## Highlights
### Multi-language support in Medusa Admin
We are excited to announce multi-language support in Medusa Admin, allowing merchants to manage products, orders, customers, etc. in their preferred language.
<p align="center">
<img src="https://github.com/medusajs/medusa/assets/59018053/1a3e5ea0-87a3-47c4-850c-3ce82fcf2e7e" width="500"/>
</p>
This release ships English, Portuguese (Brazil), and French translations.
Check it out by upgrading to the latest version of Medusa Admin:
```
yarn add @medusajs/admin@latest
```
Huge thanks to @gempain and @mj-mehdizadeh for this amazing contribution. And thanks @dahorarodrigo for contributing with Portuguese translations.
If you want to help us translate Admin to other languages, see the [contribution guide in our documentation](https://docs.medusajs.com/contribution/admin-translations).
Your efforts are highly appreciated!
### Pricing Module
This release introduces the first iteration of our new standalone Pricing Module, which ships on npm under `@medusajs/pricing`. This version of the module comes with limited functionality as we've focused on putting down a solid foundation for follow-up work.
You can think of the Pricing Module as a way to assign a price to any type of resource, for example, ProductVariants.
We will share an announcement article soon, describing the module's features and what you can expect from follow-up iterations.
### Breaking changes
**Database schema changes**
In our effort to build [Standalone Commerce Modules](https://x.com/owjuhl/status/1699436543990247756?s=20), we will incrementally be dropping foreign key constraints across many business domains and change relationships between entities in the core, `@medusajs/medusa`.
Right now, we are focused on finalizing the Product (`@medusajs/product`) and Pricing (`@medusajs/pricing`) module, which has led to the following database changes.
The relationship between MoneyAmounts and ProductVariants has been changed from a Many-to-One to a Many-to-Many in package `@medusajs/medusa`. Therefore, you are required to apply the new migration by running the following command in your Medusa project:
```
npx @medusajs/medusa-cli migrations run
```
You can no longer create prices for variants as part of creating a product using only the `ProductService`.
```ts
await ProductService.create({ variants [ { prices: [ ... ] } ] }) // <-- This will throw an error, due to the change in DB schema mentioned above
```
Instead, you should create products and variants separately. For example, you can do:
```ts
const product = await ProductService.create({ ... })
const variants = await ProductVariantService.create(product.id, variants)
```
Additionally, the following foreign key constraints have been dropped:
> These changes are **only** relevant if you are using the feature flag `isolate_product_domain`. Please be careful about enabling this flag, as it will introduce experimental changes and work in progress.
- ProductTaxRate to Product
- ProductTypeTaxRate to ProductType
- ClaimItem to ProductVariant
- DiscountConditionProduct to Product
- DiscountConditionProductCollection to ProductCollection
- DiscountConditionProductTag to ProductTag
- DiscountConditionProductType to ProductType
- DiscountRule to Product
## Features
* feat(medusa,orchestration): Decouple Product in Cart domain by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/4945
* feat(utils, module-sdk, medusa): Extract pg connection utils to utils package by @adrien2p in https://github.com/medusajs/medusa/pull/4961
* feat(admin): add ProductCollectionDetailsWidgetProps type by @tekloon in https://github.com/medusajs/medusa/pull/5012
* feat(pricing, types): PriceSets as entry point to pricing module by @riqwan in https://github.com/medusajs/medusa/pull/4978
* feat(orchestration): remote joiner - field alias by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/5013
* feat(admin-ui): Multi-language support by @gempain in https://github.com/medusajs/medusa/pull/4962
* feat(medusa): List products with Remote Query by @adrien2p in https://github.com/medusajs/medusa/pull/4969
* feat(admin-ui): Add display name + pull supported languages from config by @olivermrbl in https://github.com/medusajs/medusa/pull/5028
* feat(medusa): Get product with isolated product module by @adrien2p in #5010
* feat(medusa): Drop FKs to isolate products by @carlos-r-l-rodrigues in #5042
* feat(medusa): Separate money amount and variant by @pKorsholm in #4906
* feat(medusa): Prevent default SC to be assign if the isolated product flag is enabled by @adrien2p in #5037
* feat(pricing) Add Price Set Rule Type by @pKorsholm in #4977
* feat(admin-ui): Add French translations by @gempain in #5031
## Bugs
* fix(medusa): Type in AbstractFulfillmentService by @pepijn-vanvlaanderen in https://github.com/medusajs/medusa/pull/5003
* fix(link-modules): Fix link module initialization by @adrien2p in https://github.com/medusajs/medusa/pull/4990
* fix(admin-ui): disabling analytics when opted out by @jporsay in https://github.com/medusajs/medusa/pull/4939
* fix(medusa): default sales channel for store variant endpoints by @pKorsholm in https://github.com/medusajs/medusa/pull/4556
* fix(link-modules): fix link configuration for product shipping profile by @riqwan in https://github.com/medusajs/medusa/pull/5014
* fix(orchestration): Infinite loop by reference update by @adrien2p in https://github.com/medusajs/medusa/pull/5023
* fix(medusa): duplicated migration by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/5029
* fix(orchestration,link-modules,pricing,types): fix shippingprofile error outside of core + change link alias name by @riqwan in #5025
* fix(medusa): Support fields param in list-variants by @olivermrbl in #5053
* fix(create-medusa-app): fix command for windows OS by @shahednasser in #5061
* fix(admin,admin-ui): copy public folder as part of admin build by @kasperkristensen in #5057
* fix(medusa-react): fix useAdminAddStoreCurrency hook by @shahednasser in #5074
* fix(medusa): Money amount detached migration by @adrien2p in #5079
* fix(admin-ui): Load translations from path by @olivermrbl in #5064
* feat(admin-ui): pt-BR translations and en version text fixes by @dahorarodrigo in #5066
## Chores
* chore(modules-sdk,orchestration): to remote joiner query by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/4974
* chore(admin-ui): Add pt-BR to supported languages by @olivermrbl in #5080
## Documentation
* docs: fix S3 plugin options section by @shahednasser in https://github.com/medusajs/medusa/pull/5007
* docs: add create-medusa-app option in Next.js starter by @shahednasser in https://github.com/medusajs/medusa/pull/5008
* docs: added new recipes by @shahednasser in https://github.com/medusajs/medusa/pull/4964
* docs: fix steps in create entity documentation by @shahednasser in https://github.com/medusajs/medusa/pull/5011
* docs: added troubleshooting for Next.js with NPX by @shahednasser in https://github.com/medusajs/medusa/pull/5016
* docs: added ecommerce recipe by @shahednasser in https://github.com/medusajs/medusa/pull/5017
* docs: updated the add fulfillment provider docs by @shahednasser in https://github.com/medusajs/medusa/pull/4986
* docs: update create-medusa-app to add details about Next.js option by @shahednasser in https://github.com/medusajs/medusa/pull/4991
* docs: add documentation for remaining plugins by @shahednasser in https://github.com/medusajs/medusa/pull/4994
* docs,api-ref: fix kbd styling by @shahednasser in https://github.com/medusajs/medusa/pull/4995
* docs: fix environment variable names for Railway guide by @shahednasser in #5077
## New Contributors
* @jporsay made their first contribution in https://github.com/medusajs/medusa/pull/4939
* @tekloon made their first contribution in https://github.com/medusajs/medusa/pull/5012
* @gempain made their first contribution in https://github.com/medusajs/medusa/pull/4962
**Full Changelog**: https://github.com/medusajs/medusa/compare/v1.15.1...v1.16.0