โ ๏ธ Breaking Change
Impact Score: 7/10
Medusa v1.15.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 Reading and writing streams with file plugins now default to a private bucket across all providers.
โก Executive Summary (TL;DR)
Medusa v1.15.0. Source highlight: Import and Export support in `@medusajs/file-local`
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 Reading and writing streams with file plugins now default to a private bucket across all providers.
โจ New Features & Capabilities (5)
- feat(api-reference): Add rewrite to UI docs
- feat(medusa-file-local): implement missing streaming methods
- feat(medusa): `PriceListImportStrategy` descriptive errors
- docs: added beta features documentation by @shahednasser in #4859
- docs,api-ref: added search filters by @shahednasser in #4830
๐ง Bug Fixes & Patches (6)
- fix(medusa-interfaces, medusa-file-*): flag for streaming to a private bucket
- fix(utils,product): mikro orm connection loader
- fix(medusa-telemetry): added missing babel dependencies
- fix(admin-ui): Fix sign out in admin panel not redirecting correctly
- fix(admin-ui): Fix variant creation when no stock locations provided
- fix(admin-ui): Typo for should in the "Create Region" form by @ vfrunza in #4854
๐ View Raw Release Notes (Original Developer Log)
<!--

# Version 1.15.0
This release ships improvements to file plugins, including support for import and export using the file plugin for local development.
CMS_BREAK -->
## Highlights
### Import and Export support in `@medusajs/file-local`
The file plugin, `@medusajs/file-local,` used for local development, now supports uploads and downloads via streaming, making it possible to import products right after setting up a project, among other things.
### New Search UI in Medusa Documentation
You can now filter the search results to view specific results such as plugins, API reference, UI, and other areas of the documentation.
<p align="center">
<img src="https://github.com/medusajs/medusa/assets/59018053/e46359e0-3385-465c-8ec4-366109cfc409" width="400"/>
</p>
Check it out [here](https://docs.medusajs.com/).
### Breaking changes
Reading and writing streams with file plugins now default to a private bucket across all providers.
The file plugin streaming API to upload to public/private buckets has been updated to be consistent across all providers.
```ts
// before
// MinIO
fileService.getUploadStreamDescriptor({..., usePrivateBucket: false})
// S3 & Spaces
fileService.getUploadStreamDescriptor({..., acl: "public-read"})
// after
fileService.getUploadStreamDescriptor({..., isPrivate: true}) // private bucket (default)
fileService.getUploadStreamDescriptor({..., isPrivate: false}) // public bucket
```
The following method signatures in the Price List and Product import strategies have been updated:
```ts
// before
downloadImportOpsFile(batchJobId: string, op: OperationType)
deleteOpsFiles(batchJobId: string)
// after
downloadImportOpsFile(batchJob: BatchJob, op: OperationType)
deleteOpsFiles(batchJob: BatchJob)
```
The following types specific to file services have moved from `@medusajs/medusa` to `@medusajs/types`:
```ts
export type FileServiceUploadResult = {
url: string
key: string
}
export type FileServiceGetUploadStreamResult = {
writeStream: stream.PassThrough
promise: Promise<any>
url: string
fileKey: string
[x: string]: unknown
}
export type GetUploadedFileType = {
fileKey: string
isPrivate?: boolean
[x: string]: unknown
}
export type DeleteFileType = {
fileKey: string
[x: string]: unknown
}
export type UploadStreamDescriptorType = {
name: string
ext?: string
isPrivate?: boolean
[x: string]: unknown
}
```
## Features
* feat(api-reference): Add rewrite to UI docs by @kasperkristensen in https://github.com/medusajs/medusa/pull/4791
* feat(medusa-file-local): implement missing streaming methods by @fPolic in https://github.com/medusajs/medusa/pull/4788
* feat(medusa): `PriceListImportStrategy` descriptive errors by @fPolic in https://github.com/medusajs/medusa/pull/4842
## Bugs
* fix(medusa-interfaces, medusa-file-*): flag for streaming to a private bucket by @fPolic in https://github.com/medusajs/medusa/pull/4771
* fix(utils,product): mikro orm connection loader by @carlos-r-l-rodrigues in https://github.com/medusajs/medusa/pull/4825
* fix(medusa-telemetry): added missing babel dependencies by @shahednasser in https://github.com/medusajs/medusa/pull/4817
* fix(admin-ui): Fix sign out in admin panel not redirecting correctly by @StephixOne in https://github.com/medusajs/medusa/pull/4837
* fix(admin-ui): Fix variant creation when no stock locations provided by @StephixOne in https://github.com/medusajs/medusa/pull/4843
* fix(admin-ui): Typo for should in the "Create Region" form by @ vfrunza in #4854
## Docs
* docs: added beta features documentation by @shahednasser in #4859
* docs,api-ref: added search filters by @shahednasser in #4830
**Full Changelog**: https://github.com/medusajs/medusa/compare/v1.14.0...v1.15.0