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.
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.
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, 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
.
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:
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 #4945
- feat(utils, module-sdk, medusa): Extract pg connection utils to utils package by @adrien2p in #4961
- feat(admin): add ProductCollectionDetailsWidgetProps type by @tekloon in #5012
- feat(pricing, types): PriceSets as entry point to pricing module by @riqwan in #4978
- feat(orchestration): remote joiner - field alias by @carlos-r-l-rodrigues in #5013
- feat(admin-ui): Multi-language support by @gempain in #4962
- feat(medusa): List products with Remote Query by @adrien2p in #4969
- feat(admin-ui): Add display name + pull supported languages from config by @olivermrbl in #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 #5003
- fix(link-modules): Fix link module initialization by @adrien2p in #4990
- fix(admin-ui): disabling analytics when opted out by @jporsay in #4939
- fix(medusa): default sales channel for store variant endpoints by @pKorsholm in #4556
- fix(link-modules): fix link configuration for product shipping profile by @riqwan in #5014
- fix(orchestration): Infinite loop by reference update by @adrien2p in #5023
- fix(medusa): duplicated migration by @carlos-r-l-rodrigues in #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 #4974
- chore(admin-ui): Add pt-BR to supported languages by @olivermrbl in #5080
Documentation
- docs: fix S3 plugin options section by @shahednasser in #5007
- docs: add create-medusa-app option in Next.js starter by @shahednasser in #5008
- docs: added new recipes by @shahednasser in #4964
- docs: fix steps in create entity documentation by @shahednasser in #5011
- docs: added troubleshooting for Next.js with NPX by @shahednasser in #5016
- docs: added ecommerce recipe by @shahednasser in #5017
- docs: updated the add fulfillment provider docs by @shahednasser in #4986
- docs: update create-medusa-app to add details about Next.js option by @shahednasser in #4991
- docs: add documentation for remaining plugins by @shahednasser in #4994
- docs,api-ref: fix kbd styling by @shahednasser in #4995
- docs: fix environment variable names for Railway guide by @shahednasser in #5077
New Contributors
- @jporsay made their first contribution in #4939
- @tekloon made their first contribution in #5012
- @gempain made their first contribution in #4962
Full Changelog: v1.15.1...v1.16.0