โ ๏ธ Breaking Change
Impact Score: 7/10
Medusa v1.19.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 change** Attempting to complete an already completed cart will no longer return a 409 conflict. Instead, the order or swap associated with the completed cart is returned.
โก Executive Summary (TL;DR)
Medusa v1.19.0. Source highlight: Cart-completion strategy response
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 change** Attempting to complete an already completed cart will no longer return a 409 conflict. Instead, the order or swap associated with the completed cart is returned.
โจ New Features & Capabilities (6)
- feat(link-modules, pricing, product, utils): Should be able to set some custom database config even in shared mode
- feat(medusa): Respond with order when cart is already completed
- feat(medusa-cli): add monorepo support command develop
- feat(admin): Add Korean language support
- feat(medusa-payment-klarna): Add language variable
- feat(medusa): Improve add line item to cart perf and transaction management + clustering start command
โก Performance & Enhancements (1)
- docs: enhance how references are generated
๐ง Bug Fixes & Patches (6)
- fix(medusa): throw proper error when product doesn't exist w/ key header
- fix(modules-sdk): add graphql dependency to modules-sdk
- fix(medusa-react): Allow setting maxRetries on MedusaProvider
- fix(ui): Bump cva and minor type fixes
- fix(admin-ui): Bulk editor default fields
- fix(medusa): Updating note doesn't require loading author relationship
๐ View Raw Release Notes (Original Developer Log)
<!--

# Version 1.19.0
This version comes with significant performance improvements and improved retry logic in our client SDKs.
CMS_BREAK -->
## Highlights
### Cart-completion strategy response
> ๐ง **Breaking change**
Attempting to complete an already completed cart will no longer return a 409 conflict. Instead, the order or swap associated with the completed cart is returned.
More specifically, the response will take one of the following two shapes:
```ts
// completing a regular cart
{
response_code: 200,
response_body: { data: order, type: "order" },
}
// completing a swap cart
{
response_code: 200,
response_body: { data: swap, type: "swap" },
}
```
### `node-redis` replaced with `ioredis` for session management
> ๐ง **Important change**
Our default Express session store has been changed from `node-redis` to `ioredis`.
This was done in response to a request for higher configurability of the Redis client used for session management. It was decided to not only expose more options but simultaneously change the library to `ioredis` to be consistent with other packages that use Redis, e.g. the Redis Event Bus + Redis Cache.
### Add to cart performance improvements
The add-to-cart endpoint, `POST /store/carts/:id/line-items`, has been refactored, improving performance and transaction management. The latter was done in response to some users experiencing issues with concurrent requests leading to database conflicts. The changes to transaction management in the endpoint should significantly reduce the risk of this issue occurring while improving performance.
Some rough benchmarks show that for 1000 requests (10-20/s), we see approx. 30% of requests fail due to database conflicts in the latest version. With this PR, 0% of requests fail โ even under a higher load.
### New cluster command added to `@medusajs/medusa-cli`
A new cluster command has been added to our CLI, `@medusajs/medusa-cli`:
```bash
medusa start-cluster --cpus 3
```
The command allows you to start Medusa in [cluster mode](https://expressjs.com/en/advanced/best-practice-performance.html#run-your-app-in-a-cluster). By default, cluster mode will try to consume all available CPUs for Medusa instances. You can specify the number of CPUs with a CLI argument `--cpus`.
Running in cluster mode will likely significantly improve performance as the workload and tasks are distributed among all available instances instead of a single one.
### Retry support in `medusa-react`
> ๐ง **Important change**
You can now specify `maxRetries` as a prop to the `MedusaProvider` from `medusa-react`. This config is passed on to the underlying `medusa-js` client, which means failed requests are retried the amount of times specified by the param. If not provided, the `maxRetries` defaults to 3.
```tsx
import { MedusaProvider as Provider } from "medusa-react"
import { queryClient } from "../constants/query-client"
export const MedusaProvider = ({ children }) => {
return (
<Provider
queryClientProviderProps={{
client: queryClient,
}}
baseUrl={process.env.MEDUSA_BACKEND_URL}
maxRetries={2}
>
{children}
</Provider>
)
}
```
## Features
* feat(link-modules, pricing, product, utils): Should be able to set some custom database config even in shared mode by @adrien2p in https://github.com/medusajs/medusa/pull/5755
* feat(medusa): Respond with order when cart is already completed by @olivermrbl in https://github.com/medusajs/medusa/pull/5766
* feat(medusa-cli): add monorepo support command develop by @driver005 in https://github.com/medusajs/medusa/pull/5723
* feat(admin): Add Korean language support by @iweurman in https://github.com/medusajs/medusa/pull/5769
* feat(medusa-payment-klarna): Add language variable by @edinskeja in https://github.com/medusajs/medusa/pull/4483
* feat(medusa): Improve add line item to cart perf and transaction management + clustering start command by @adrien2p in https://github.com/medusajs/medusa/pull/5701
* feat(medusa): Replace Node Redis with ioredis by @pepijn-vanvlaanderen in https://github.com/medusajs/medusa/pull/5656
* feat(core-flows,pricing,medusa,pricing,types,utils): Price List Prices can have their own rules by @riqwan in https://github.com/medusajs/medusa/pull/5752
* feat(medusa): Emit "discount.created" event when discount is created by @Arsenalist in https://github.com/medusajs/medusa/pull/5816
* feat(orchestration,core-flows,medusa,product,types,utils): product import/export uses workflows by @riqwan in https://github.com/medusajs/medusa/pull/5811
* feat(medusa, core-workflows, product): slightly improve create cart workflow by @adrien2p in https://github.com/medusajs/medusa/pull/5725
* feat(admin-ui): metadata for categories in admin ui and refactor to react-hook-form by @luluhoc in https://github.com/medusajs/medusa/pull/5697
## Bugs
* fix(medusa): throw proper error when product doesn't exist w/ key header by @pKorsholm in https://github.com/medusajs/medusa/pull/5745
* fix(modules-sdk): add graphql dependency to modules-sdk by @riqwan in https://github.com/medusajs/medusa/pull/5750
* fix(medusa-react): Allow setting maxRetries on MedusaProvider by @kasperkristensen in https://github.com/medusajs/medusa/pull/5765
* fix(ui): Bump cva and minor type fixes by @kasperkristensen in https://github.com/medusajs/medusa/pull/5818
* fix(admin-ui): Bulk editor default fields by @kasperkristensen in https://github.com/medusajs/medusa/pull/5829
* fix(medusa): Updating note doesn't require loading author relationship by @josetr in https://github.com/medusajs/medusa/pull/5825
* fix(medusa): Product option values in CSV Export by @mortenengel in https://github.com/medusajs/medusa/pull/5781
* fix(medusa): Order edit confirmation conflict line items update by @adrien2p in #5867
## Docs
* docs: fix back link in Workflows API Reference by @shahednasser in https://github.com/medusajs/medusa/pull/5740
* docs: updated user guide for product pricing by @shahednasser in https://github.com/medusajs/medusa/pull/5744
* docs: fix back links for modules references by @shahednasser in https://github.com/medusajs/medusa/pull/5747
* docs: updated next.js starter docs by @shahednasser in https://github.com/medusajs/medusa/pull/5748
* docs: update pricing module docs with the latest changes by @riqwan in https://github.com/medusajs/medusa/pull/5749
* docs: fix typo in onboarding by @shahednasser in https://github.com/medusajs/medusa/pull/5802
* docs: search results template needs the product ids to fetch previews by @chrislaai in https://github.com/medusajs/medusa/pull/5793
* docs: enhance how references are generated by @shahednasser in https://github.com/medusajs/medusa/pull/5805
* docs: update algolia plugin next.js details by @shahednasser in https://github.com/medusajs/medusa/pull/5807
* docs: added examples for modules usage in Medusa by @shahednasser in https://github.com/medusajs/medusa/pull/5753
* docs: diagrams plugin tooling by @shahednasser in https://github.com/medusajs/medusa/pull/5741
* docs: updated Next.js deployment guide by @shahednasser in https://github.com/medusajs/medusa/pull/5756
* docs: TSDoc + reference of fulfillment by @shahednasser in https://github.com/medusajs/medusa/pull/5761
* docs: added "Integrate Your Ecommerce Stack" recipe by @shahednasser in https://github.com/medusajs/medusa/pull/5774
* docs(plugins): puts local-file plugin into correct category in site by @annikorp in https://github.com/medusajs/medusa/pull/5804
* docs: update local events module to fix mistyped reference to redis events module by @ishaqkhattana in https://github.com/medusajs/medusa/pull/5835
* docs: Fix multiple typos in medusa docs by @Sajarin-M in https://github.com/medusajs/medusa/pull/5854
* docs: fixed sidebar in API reference by @shahednasser in https://github.com/medusajs/medusa/pull/5871
* docs: update required Node.js version for Next.js starter by @shahednasser in https://github.com/medusajs/medusa/pull/5859
* docs: generate documentation for UI components by @shahednasser in https://github.com/medusajs/medusa/pull/5849
## Chores
* chore(): Add engines to all package.json if needed by @adrien2p in https://github.com/medusajs/medusa/pull/5812
* chore(medusa): Prefer logger instead of console.log by @adrien2p in #5846
## New Contributors
* @driver005 made their first contribution in https://github.com/medusajs/medusa/pull/5723
* @iweurman made their first contribution in https://github.com/medusajs/medusa/pull/5769
* @chrislaai made their first contribution in https://github.com/medusajs/medusa/pull/5793
* @annikorp made their first contribution in https://github.com/medusajs/medusa/pull/5804
* @luluhoc made their first contribution in https://github.com/medusajs/medusa/pull/5697
* @ishaqkhattana made their first contribution in https://github.com/medusajs/medusa/pull/5835
* @Arsenalist made their first contribution in https://github.com/medusajs/medusa/pull/5816
* @Sajarin-M made their first contribution in https://github.com/medusajs/medusa/pull/5854
**Full Changelog**: https://github.com/medusajs/medusa/compare/v1.18.1...v1.19.0