Highlights
Preview release of Medusa 2.0 next week
We recently announced Medusa 2.0, and the majority of our time and resources are currently going into making this new major a reality as soon as possible. We will reach an important milestone next week by releasing an early preview version for experimentation and exploration. More information about the preview version will be shared alongside the release.
Remove useToast
hook from @medusajs/ui
🚧 Breaking change
The useToast
hook has been removed. Users should instead use the toast
function that is exported from the @medusajs/ui
package. This function can be used to show toasts in your application. For more information on how to use the toast
function, please refer to the documentation.
The Toaster
component is still available but the options for the component have changed. The default position has been changed to bottom-right
. For more information on the Toaster
component, please refer to the documentation.
Order totals account for deleted discounts
An issue with order totals not accounting for deleted discounts has been resolved.
Resolve node-gyp
installation issue in @medusajs/admin
An issue with node-gyp
in a dependency of a dependency has been resolved. The solution should, for the time being, be considered temporary.
Expose backend URL for admin in local development
The forced backend URL for admin in local development has been removed in favor of a plugin configuration.
You can now specify a host
value:
// medusa-config.js
const plugins = [
...
{
resolve: "@medusajs/admin",
options: {
// other options...
develop: {
port: 7000,
host: "example.com",
},
},
},
]
Features
- feat(medusa): add list location levels endpoint in api v2 by @pKorsholm in #6741
- feat: API key sales channel link by @olivermrbl in #6851
- feat: Modify the abstract repository upsert to handle subresources as per convention by @sradevski in #6813
- feat(medusa, stock-location-next): add list-stock-locations endpoint to api-v2 by @pKorsholm in #6788
- feat(admin-next): Email password invite flow in admin 2.0 by @olivermrbl in #6821
- feat: Refactor the product module definitions and implementation by @sradevski in #6866
- feat(modules-sdk): remote query retrieve by @carlos-r-l-rodrigues in #6849
- feat: Implemented price set update with prices and aligned pricing API by @sradevski in #6872
- feat(medusa-react,medusa,types,dashboard): added empty state + table for promotions list page by @riqwan in #6827
- feat: Remove sales channels from pub keys by @olivermrbl in #6876
- feat: Add v2 product types endpoints by @sradevski in #6880
- feat(dashboard): admin 3.0 order refund form by @fPolic in #6850
- feat(create-medusa-app): Add a
--verbose
option. by @shahednasser in #6027 - feat: Pricing update and refactor product API tests to not rely on internals by @sradevski in #6892
- feat: Admin V2 users domain by @olivermrbl in #6844
- feat(dashboard): Variant edit form by @kasperkristensen in #6870
- feat: Correctly define all product module models and SQL migration script by @sradevski in #6906
- feat: add sales channel management by @olivermrbl in #6761
- feat(link-module, core-flows, medusa): Add sales channel location management by @pKorsholm in #6905
- feat(workflows-sdk,orchestration): async step as background task by @carlos-r-l-rodrigues in #6886
- feat(dashboard): Update v2 store domain to follow conventions, and abstract some logic by @kasperkristensen in #6927
- feat(medusa): added endpoints for rule attribute/operator/values options by @riqwan in #6911
- feat: Add some of the missing pieces in the create product form by @sradevski in #6918
- feat(dashboard): Setup V2 Collections domain by @kasperkristensen in #6935
- feat(dashboard): admin locations v2 by @pKorsholm in #6868
- feat(dashboard): Add forms for edit and create product options by @kasperkristensen in #6907
- feat: region payment providers management workflows/api by @adrien2p in #6864
- feat: Normalize known DB errors to a MedusaError when possible by @sradevski in #6922
- feat(dashboard): Setup workflows in V2 routes by @kasperkristensen in #6939
- feat(dashboard): Edit variant options + create option callback for combobox by @kasperkristensen in #6920
- feat: Admin V2 API keys by @olivermrbl in #6883
- feat: Add boilerplate for the file module by @sradevski in #6956
- feat(utils): Support free text configuration by @adrien2p in #6942
- feat: Shipping options API by @adrien2p in #6957
- feat: Add zod middleware by @olivermrbl in #6961
- feat(dashboard): Migrate to new hooks and API client by @kasperkristensen in #6963
- feat(product): return parents tree by @carlos-r-l-rodrigues in #6944
- feat: Add create location fulfillment set flow + API by @olivermrbl in #6945
- feat: Add generic link filter middleware by @olivermrbl in #6969
- feat: Add product routes and components to v2 in admin-next by @sradevski in #6958
- feat(dashboard): added details page for promotions + edit sliders by @riqwan in #6882
- feat: Create shipping options workflow by @adrien2p in #6962
- feat: Switch to zod for the product API and implement missing primitives by @sradevski in #6978
- Feat: draft order api by @carlos-r-l-rodrigues in #6797
- feat(dashboard): regions v2 by @fPolic in #6943
- feat: Bring back API key sales channel management by @olivermrbl in #6976
- feat: Clean up shipping options management by @adrien2p in #6977
- feat: Add support for defining options when creating product by @sradevski in #6981
- feat(medusa, core-flows): Create service zones by @olivermrbl in #6979
- feat: Delete service zone by @olivermrbl in #6984
- feat: Add support for setting sales channel when creating a product by @sradevski in #6986
- feat: Add tax regions table by @olivermrbl in #6983
- feat: Revamp product details page and several product fixes and cleanups by @sradevski in #6988
- feat: Add decimal digits and rounding info to currencies by @sradevski in #6991
- feat: Totals calculation by @carlos-r-l-rodrigues in #6980
- feat: Update service zone by @olivermrbl in #6990
- feat: Improvements to the products details page in the admin by @sradevski in #6994
- feat(*): shipping options update API by @adrien2p in #6987
- feat: Admin V2 Customers by @olivermrbl in #6998
- feat: Add variant creation and editing in the products UI by @sradevski in #6997
- feat: Improve how options are defined and handled for product by @sradevski in #7007
- feat: Make tags unique, clean up searchability of product entities by @sradevski in #7014
- feat: Categories retrieve + list API by @olivermrbl in #7009
- feat(dashboard): Initial pricing domain by @kasperkristensen in #6996
- feat: Add support for loading file providers to file module by @sradevski in #7016
- feat: Admin Shipping Profiles API by @olivermrbl in #7019
- feat: Admin V2 customer group by @olivermrbl in #7000
- feat(dashboard): Secret keys domain by @kasperkristensen in #7030
- feat: delete shipping options by @adrien2p in #6993
- Feat(medusa, core-flows, types): add reservation endpoints by @pKorsholm in #7018
- Feat(admin-next, core-flows, link-modules, medusa, types): Inventory end to end flows by @pKorsholm in #7020
- feat(): Add support for shipping options prices update by @adrien2p in #7028
- feat: Add support for price setting and updates for products by @sradevski in #7037
- feat: Add support for batch method for products and product variants by @sradevski in #7038
- feat: Create product category flow by @olivermrbl in #7034
- feat(medusa,dashboard,tax): added tax rates and regions UI by @riqwan in #7026
- feat(ui, dashboard): Toast rework by @kasperkristensen in #7076
- feat(dashboard): shipping management by @fPolic in #6995
- refactor: users domain by @fPolic in #7070
- feat(medusa,core-flows,types): adds batch operations to price list prices by @riqwan in #7077
- feat(pricing): pricing uses big number by @riqwan in #7075
- feat(core-flows,medusa,types): cancel fulfillments API by @riqwan in #7095
- feat(dashboard): Region refactor by @fPolic in #7083
- feat: Add batch method to collection and clean up some batch implementations by @sradevski in #7102
- Feat(orders,utils, cart): orders get endpoints and cart totals by @carlos-r-l-rodrigues in #7010
- feat: Update product category by @olivermrbl in #7092
- feat: Convert several batch methods to the standardized format by @sradevski in #7116
- feat(medusa,types): add fulfillment provider list api by @riqwan in #7124
- feat(core-flows,medusa,types): fulfillment API: create by @riqwan in #7101
- feat(medusa,types): create promotion flows by @riqwan in #7029
- feat(medusa): migrate store cart endpoints to zod by @riqwan in #7130
- feat: V2 batch update products in categories by @olivermrbl in #7125
- refactor(dashboard): refresh domains by @fPolic in #7087
- feat: Add local file provider and wire everything up in the file module by @sradevski in #7134
- feat: Add s3-compatible plugin for the file module by @sradevski in #7143
- feat(docs-util): predefined OAS schemas by @shahednasser in #7139
- feat(admin-next, inventory-next, medusa, types): Add admin reservations flow by @pKorsholm in #7080
- feat: Support invites in CLI for V2 by @olivermrbl in #6798
- feat(core-flows, medusa): add update stock location endpoint to api-v2 by @pKorsholm in #6800
- feat(utils): custom serialization that allows for non self ref by @adrien2p in #6836
- feat: Add local file provider and wire everything up in the file module by @sradevski in #7134
- feat: Add s3-compatible plugin for the file module by @sradevski in #7143
- feat(docs-util): predefined OAS schemas by @shahednasser in #7139
- feat(admin-next, inventory-next, medusa, types): Add admin reservations flow by @pKorsholm in #7080
- feat(order): bundled actions by @carlos-r-l-rodrigues in #7133
- feat: Add support for search to all endpoints by @sradevski in #7149
- feat(modules-sdk): remote query context filter by @carlos-r-l-rodrigues in #7153
- feat(core-flows, medusa): add shipping methods to cart API by @riqwan in #7150
- feat(medusa): Remove require id from update shipping options validator by @adrien2p in #7166
- feat: Add missing endpoints and normalize customer and currency endpoints for storefront by @sradevski in #7160
- feat(medusa,types): added store apis for products by @riqwan in #7144
- feat: Add collection and category endpoints to store by @sradevski in #7155
Bugs
- fix(utils): Mikro orm prop filtering should check existence by @adrien2p in #6842
- fix: integration tests modules expectations by @adrien2p in #6848
- fix: bust cache builds by @riqwan in #6847
- fix(dashboard): user loading and V2 flag parsing by @fPolic in #6843
- fix/pricing data manipulation by @adrien2p in #6845
- fix(medusa): Deleted discount missing on order by @pepijn-vanvlaanderen in #6837
- fix(inventory): cannot migrate existing products (#6877) by @gempain in #6878
- fix(workflow-engine-*): subscribe response and error by @carlos-r-l-rodrigues in #6869
- fix(): medusa test runner by @adrien2p in #6857
- fix: Fixes to product module and improving tests by @sradevski in #6898
- fix: ensure that shutdown works in loaderOnly mode by @srindom in #6893
- fix(dashboard): Combobox should not disable body after being closed by @kasperkristensen in #6909
- fix(fulfillment): Wrong type usage by @adrien2p in #6914
- fix(medusa-test-utils): recompute driver options by @adrien2p in #6917
- Fix(medusa-test-utils): config loader by @carlos-r-l-rodrigues in #6919
- fix(medusa): Fix get-query-config backward compatiblity by @adrien2p in #6913
- fix(dashboard): Promotions loader by @kasperkristensen in #6928
- fix(admin-ui): Resolve
node-gyp
error during installation with npm by @shahednasser in #6952 - fix: upsertWithReplace should delete non-persist relationship fields … by @sradevski in #6960
- fix(modules-sdk): Select all should send undefined instead of an empty array by @adrien2p in #6982
- fix(region): update regions countries by @fPolic in #6970
- fix(modules-sdk): Fix remote query selection by @adrien2p in #6989
- fix(modules-sdk): Remote Query "order" as config options by @carlos-r-l-rodrigues in #6925
- fix(dashboard): align color for draft by @kasperkristensen in #7005
- fix(dashboard): close locations create form on success by @fPolic in #7011
- fix(medusa, core-flows): Delete service zone by @olivermrbl in #7017
- fix(dashboard): Minor fixes to region domain and api by @kasperkristensen in #7042
- fix(): workflow sdk step return function type infer by @adrien2p in #7047
- fix(dashboard): Minor fixes to Profile domain by @kasperkristensen in #7046
- fix(dashboard): Minor cleanup and improve text legibility by @kasperkristensen in #7045
- fix(medusa-core-utils): add missing awilix dependency by @shahednasser in #7003
- fix: Switch some modules to using zod for validation, and fix some bugs by @sradevski in #7074
- fix(dashboard): Wrong hook usage in /collections/create by @kasperkristensen in #7078
- fix(dashboard,medusa): Fixes to Customer and Customer Groups domains by @kasperkristensen in #7081
- fix: Support bigNumber in upsertWithReplace by @sradevski in #7084
- fix: Switch to zod for customer endpoints, fix inconsistencies by @sradevski in #7094
- fix: Resume workflow execution by @olivermrbl in #7103
- fix(dashboard): Update API keys domains with new design by @kasperkristensen in #7123
- fix-docs: TS error when importing a function as a type only (example logged in user middleware) by @adevinwild in #7073
- fix(medusa): Add to default admin customer fields by @kasperkristensen in #7126
- fix: Standardize remaining batch methods and update FE calls by @sradevski in #7122
- fix(dashboard,medusa,fulfillment): Move Shipping Profiles to settings by @kasperkristensen in #7090
- fix: admin/product-types v2 endpoint by @josetr in #7112
- fix(workflows-sdk): Handle result from a trasnformer after a step fail by @adrien2p in #6951
- fix: Add count to stock-locations response by @olivermrbl in #6965
- fix(medusa,admin-ui): Remove forced backendUrl in development, and allow alternative host value. by @kasperkristensen in #7128
- fix: Fixed logged-in-user.mdx example by @danvayn in #7132
- fix: Corrections to the store region endpoint for v2 by @sradevski in #7152
- fix: correct calculations of subtotal for shipping option requirements by @kevinfurmanski in #7089
- fix(modules-sdk): load custom modules options by @carlos-r-l-rodrigues in #7176
- fix: onStepAwaiting events by @carlos-r-l-rodrigues in #7161
Documentation
- docs: added doc pages for v1.20.4 by @shahednasser in #6828
- docs-util: added AI generator by @shahednasser in #6770
- docs(plugin): paypal integration missing createOrder callback by @raiyansarker in #6401
- docs: Update fulfillment.AbstractFulfillmentService.mdx by @OmarMHawash in #6936
- docs: fix typedoc errors and warnings by @shahednasser in #7006
- docs: improvements to railway deployment guide + new troubleshooting guide by @shahednasser in #7012
- docs: add a section about missing migration name by @shahednasser in #7013
- docs: fixes to Digital Product recipe by @shahednasser in #7025
- docs: explain expanding nested relations by @shahednasser in #7008
- docs: change supabase database url format by @shahednasser in #7036
- docs: fix download button in API reference by @shahednasser in #7039
- docs: add details about the new host option of admin by @shahednasser in #7142
- docs-util: fix clean command removing used schemas by @shahednasser in #6774
- docs: fix for subscriber logic in digital products recipe by @eskoniarek in #7184
Chores
- chore: fix doc announcement actions by @shahednasser in #6856
- chore(workflows-sdk): add idempotencyKey to shared context by @carlos-r-l-rodrigues in #6860
- chore: add tsdocs for the Sales Channel Module by @shahednasser in #6794
- chore: remove noop tests by @riqwan in #6855
- chore(medusa-test-utils): create declaration file by @srindom in #6858
- chore: medusa shutdown by @adrien2p in #6865
- chore: added TSDocs to auth_cors configuration by @shahednasser in #6895
- chore: update TSDocs of the Product Module by @shahednasser in #6897
- chore(docs): Updated API Reference by @github-actions in #6831
- chore(docs): Generated References by @github-actions in #6904
- chore(medusa-test-utils):Handle errors gracefully by @adrien2p in #6901
- chore(docs): Removed Docs Announcement Bar (automated) by @github-actions in #6915
- chore: updated TSDocs of the Currency Module by @shahednasser in #6908
- chore: Ensure Redis connection is ready with callback by @adrien2p in #6924
- chore: add tsdocs for the Store Module resources by @shahednasser in #6795
- chore: add tsdocs for the Customer Module by @shahednasser in #6784
- chore: added tsdocs to the Inventory Next Module by @shahednasser in #6814
- chore: added tsdocs for Stock Location Next Module by @shahednasser in #6817
- chore: added tsdocs for the Auth Module by @shahednasser in #6863
- chore: add TSDocs to the Payment Module by @shahednasser in #6885
- chore: updated TSDocs of the Pricing Module by @shahednasser in #6894
- chore: added tsdocs for the Tax Module by @shahednasser in #6902
- chore: added tsdocs to Cart Module by @shahednasser in #6881
- chore: add TSDocs to the Promotion Module by @shahednasser in #6793
- chore: rename rule endpoints validators by @riqwan in #6955
- chore: add batch update prices for price lists by @riqwan in #6999
- chore: Added TSDocs for the Fulfillment Module by @shahednasser in #6912
- chore: disable turbo and jest cache by @riqwan in #7024
- chore(dashboard): Cleanup Pricing domain by @kasperkristensen in #7035
- chore: Move several modules to use zod for validation and cleanup routes by @sradevski in #7079
- chore: Move several more endpoints to use zod for validation, unify APIs by @sradevski in #7086
- chore: Move most of the remaining endpoints to zod by @sradevski in #7096
- chore: finish migration zod by @sradevski in #7098
- chore: add action to generate v2 oas by @shahednasser in #7040
- chore: Update CODEOWNERS by @olivermrbl in #7119
- chore: remove team from generate docblock actions by @shahednasser in #6953
- chore(ui): added API reference comments for Toast component by @shahednasser in #7129
- chore:(product): renaming vars by @carlos-r-l-rodrigues in #6972
- chore: added tsdocs to Region Module resources by @shahednasser in #6799
- chore: Trigger pipeline on merge to develop by @olivermrbl in #6954
- Chores: Do not disable foreign keys by default by @adrien2p in #6973
- chore(orchestration): serialize error by @carlos-r-l-rodrigues in #6967
- chore(dashboard): refresh domains by @fPolic in #7087
New Contributors
- @raiyansarker made their first contribution in #6401
- @danvayn made their first contribution in #7132
- @kevinfurmanski made their first contribution in #7089
- @eskoniarek made their first contribution in #7184
Full Changelog: v1.20.4...v1.20.5