Skip to content

medusa

v2.15.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 23d API Development
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

commerce e-commerce ecommerce javascript medusa nodejs
+2 more
react typescript

ReleasePort's take

Moderate signal
editorial:auto 13d

In v2.15.0 the Product and ProductVariant attributes width, length, height, and weight have been changed from text/number to float type.

Why it matters: Update any schema migrations or data‑validation logic that assumes these fields are stored as strings or integers before upgrading; failure may cause casting errors in existing records.

Summary

AI summary

Product and ProductVariant attributes width, length, height, and weight now use type float instead of text/number.

Changes in this release

Breaking Medium

Product and variant width/length/height/weight properties aligned to float type

Product and variant width/length/height/weight properties aligned to float type

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Promotion computation supports custom context hooks for external data

Promotion computation supports custom context hooks for external data

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Admin API supports searching products by stock keeping unit identifier

Admin API supports searching products by stock keeping unit identifier

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Medusa CLI includes mcloud proxy command for cloud deployment development

Medusa CLI includes mcloud proxy command for cloud deployment development

Source: llm_adapter@2026-05-21

Confidence: high

Feature Medium

Refund creation workflow exposes metadata field for customization

Refund creation workflow exposes metadata field for customization

Source: llm_adapter@2026-05-21

Confidence: low

Feature Medium

Admin dashboard translation page includes copy action for translations

Admin dashboard translation page includes copy action for translations

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Refund payments applies currency precision tolerance for accuracy

Refund payments applies currency precision tolerance for accuracy

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

WorkflowData type flattened to prevent TypeScript stack depth errors

WorkflowData type flattened to prevent TypeScript stack depth errors

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Cart completion validates presence of items before proceeding

Cart completion validates presence of items before proceeding

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Return fulfillments populate delivery address field correctly

Return fulfillments populate delivery address field correctly

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Admin global search returns correct settings-related routes

Admin global search returns correct settings-related routes

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Index backfills missing inSchemaRef for parent entries

Index backfills missing inSchemaRef for parent entries

Source: llm_adapter@2026-05-21

Confidence: high

Bugfix Medium

Pricing calculation selects prices from price lists with explicit rules when context is empty

Pricing calculation selects prices from price lists with explicit rules when context is empty

Source: granite4.1:30b@2026-05-24-audit

Confidence: high

Bugfix Medium

Refund creation rounding issue resolved for financial precision

Refund creation rounding issue resolved for financial precision

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Order items metadata returns correct value instead of null

Order items metadata returns correct value instead of null

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Price calculation filters prices by pricelist rules with empty context

Price calculation filters prices by pricelist rules with empty context

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Database generation prevents crash when model files export

Database generation prevents crash when model files export

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

S3 file encoding preserves URL prefix slashes correctly

S3 file encoding preserves URL prefix slashes correctly

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Database migration loads workflow loader for hook registration

Database migration loads workflow loader for hook registration

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Distributed system locking prevents race conditions in migrations and index creation

Distributed system locking prevents race conditions in migrations and index creation

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Payment service updates correctly with payment data

Payment service updates correctly with payment data

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Dashboard auto-selects currency row when tax toggle enabled

Dashboard auto-selects currency row when tax toggle enabled

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Order computed status fields marked as non-filterable

Order computed status fields marked as non-filterable

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Translation utility skips empty strings when applying locale

Translation utility skips empty strings when applying locale

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Utility preserves casing in toCamelCase for PascalCase identifiers

Utility preserves casing in toCamelCase for PascalCase identifiers

Source: llm_adapter@2026-05-21

Confidence: low

Bugfix Medium

Database migration loads `WorkflowLoader` to register workflow hooks during `db:migrate`

Database migration loads `WorkflowLoader` to register workflow hooks during `db:migrate`

Source: granite4.1:30b@2026-05-24-audit

Confidence: low

Bugfix Low

S3 file utility encodes URL path segments individually, preserving leading slashes

S3 file utility encodes URL path segments individually, preserving leading slashes

Source: granite4.1:30b@2026-05-24-audit

Confidence: high

Full changelog

Highlights

Aligned Product and Variant Attribute Types

🚧 Breaking change

This version aligns the width, length, height, and weight properties on the Product and ProductVariant data models to be of type float. In previous versions, their type was text on the Product data model, and number on the ProductVariant data model.

This change only affects customizations that relied on the previous text type for these attributes, which are now expected to be float values.


Medusa Cloud Proxy Command

The Medusa CLI now includes a mcloud proxy command for working with Medusa Cloud deployments, streamlining local development workflows against cloud environments.

medusa mcloud proxy

#15320


Promotion Context Hooks

The promotion computation system now supports custom context hooks, allowing developers to pass additional context data when calculating promotions. This enables more sophisticated promotion rules based on external data sources or custom business logic.

Example:

// in src/workflows/hooks/promotion.ts
import { StepResponse } from "@medusajs/framework/workflows-sdk";
import { updateCartPromotionsWorkflow } from "@medusajs/medusa/core-flows";

updateCartPromotionsWorkflow.hooks.setPromotionContext(
  ({ cart }, { container }) => {
    if (cart.items.length >= 2) {
      return new StepResponse({
        company_id: "company_123"
      });
    }
  }
);

#15301


Product SKU Search Support

The admin API now supports searching products by SKU, making it easier to find and manage products through their stock keeping unit identifiers.

#13930


Translation Copy Actions

The admin dashboard translation edit page now includes copy actions for original translations, improving the translation workflow by allowing translators to quickly copy base text.

#14943

Features

  • feat(core-flows): add setPromotionContext hook to pass additional context for promotion computation by @NicolasGorga in #15301
  • feat: Add mcloud proxy command to medusa CLI by @sradevski in #15320
  • feat(product): add SKU search support to admin API by @bqst in #13930
  • feat(dashboard): add copy action for Original translations on translations edit page by @LukasKri in #14943
  • fix(core-flows, payment, types): expose metadata on refund creation through refundPaymentsWorkflow by @Metbcy in #15273

Bugs

  • fix(index): backfill missing inSchemaRef for existing parent entries by @ranma-dev in #15131
  • fix(workflows-sdk): flatten WorkflowData type to remove recursive expansion that caused TS excessive stack depth errors in large consumer codebases by @NicolasGorga in #15174
  • fix(settings): mark Order computed status fields as non-filterable by @aliaksei-loi in #15262
  • fix(utils): preserve casing in toCamelCase for PascalCase identifiers with digits by @Chicolll in #15293
  • fix(dashboard): auto-select currency row when its tax-inclusive toggle is enabled by @Anexus5919 in #15164
  • fix(core-flows): populate delivery_address on return fulfillments by @ShriyansSharma27 in #15241
  • fix(core-flows): validate cart has items before completing by @rnagulapalle in #15231
  • fix(utils): skip empty string translations when applying locale by @asynchroza in #15013
  • fix(medusa): prevent plugin:db:generate crash when model files export by @shubhamchoudhary-2003 in #14718
  • fix(order): fix regression on order.items.metadata showing null when line item metadata is set by @NicolasGorga in #15329
  • fix(core-flows): apply currency-precision tolerance to refundPayments by @hunnyboy1217 in #15316
  • Fixes #14793 -- paymentService_ was not getting updated with the data causing the issue by @Ultron03 in #15295
  • fix(index,modules-sdk,): introduce locking to avoid race conditions in distributed systems for migrations, links and index partition creation by @NicolasGorga in #15176
  • fix(i18n): refresh Czech (cs) translations by @dugynoo in #15286
  • fix(pricing): calculatePrices() with empty context selects prices from pricelists that explicitly have rules by @ShriyansSharma27 in #15277
  • fix(product, dashboard): align product and variant volumetric attributes data types by @NicolasGorga in #14762
  • fix(core-flows,payment): Fix rounding issue on refund creation by @NicolasGorga in #15303
  • fix(run-scripts): load WorkflowLoader during db:migrate so workflow hooks are registered by @AKIB473 in #15260
  • fix(admin): correct settings-related routes in global search results by @biocodersin in #14853
  • fix(file-s3): encode URL path segments individually to preserve prefix slashes by @aayushbaluni in #15109

Documentation

Chores

New Contributors

  • @ranma-dev made their first contribution in #15131
  • @Anexus5919 made their first contribution in #15164
  • @ShriyansSharma27 made their first contribution in #15241
  • @asynchroza made their first contribution in #15013
  • @LukasKri made their first contribution in #14943
  • @shubhamchoudhary-2003 made their first contribution in #14718
  • @hunnyboy1217 made their first contribution in #15316
  • @Ultron03 made their first contribution in #15295
  • @dugynoo made their first contribution in #15286
  • @sradevski made their first contribution in #15320
  • @AKIB473 made their first contribution in #15260
  • @bqst made their first contribution in #13930
  • @biocodersin made their first contribution in #14853
  • @aayushbaluni made their first contribution in #15109
  • @Metbcy made their first contribution in #15273

Full Changelog: v2.14.2...v2.15.0

Breaking Changes

  • Changed `width`, `length`, `height`, and `weight` properties on `Product` from type text to float; changed same properties on `ProductVariant` from number to float.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track medusa

Get notified when new releases ship.

Sign up free

About medusa

The world's most flexible commerce platform.

All releases →

Beta — feedback welcome: [email protected]