β οΈ Breaking Change
Impact Score: 7/10
Saleor 3.20.0 β Release Notes & Engineering Impact
Source available β automated, not human-reviewed
Component: saleor Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
Breaking-change evidence from the source
Breaking changes - Remove the `anonymize` plugin. Use `saleor/core/utils/anonymization` code instead. - by @aniav
β‘ Executive Summary (TL;DR)
Saleor 3.20.0. Source highlight: Welcome to Saleor 3.20 release!
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 - Remove the `anonymize` plugin. Use `saleor/core/utils/anonymization` code instead. - by @aniav
β¨ New Features & Capabilities (6)
- Add `translatableContent` to all translation types; add translated object id to all translatable content types - #15617
- Add the `Channel.taxConfiguration` field - #15610
- Add the `Warehouse.stocks` field - #15771
- Change permissions for `checkout` and `checkouts` queries. Add `HANDLE_PAYMENTS` to required permissions - #16010
- Added support for the `BrokerProperties` custom header to webhooks to support Azure Service Bus - #15899
- Added HTTP compression telemetry - #16125
β‘ Performance & Enhancements (3)
- Database performance improvements around:
- DB performance improvements in attribute dataloaders - #15474
- Improve performance of the `productVariants` resolvers by using JOINs instead of subqueries - #16262
π§ Bug Fixes & Patches (1)
- Fixed a rare crash in the introspection query detection code - #15966
π View Raw Release Notes (Original Developer Log)
Welcome to Saleor 3.20 release!
### Highlights
- Connecting the Transaction item to a granted refund in the refund flow is now possible. This makes it easier to understand whatβs the status of a refund. - #15590 by @korycins
- `checkout` and `checkouts` queries now allow to be used with `HANDLE_PAYMENTS` permission. Previously, only `MANAGE_CHECKOUTS` and `IMPERSONATE_USER` were allowed to retrieve checkouts. This made the behavior around payment apps inconsistent.
- Database performance improvements around:
- using the replica database in all the places where the operation doesnβt have to write to the database
- dataloaders for `attributes` and `productVariants` queries
### Breaking changes
- Remove the `anonymize` plugin. Use `saleor/core/utils/anonymization` code instead. - by @aniav
- Require the `type` field on `PromotionCreateInput` - #16296 by @IKarbowiak
### Deprecated
- Deprecate `EU` from `CountryCode` enum - #16300 by @IKarbowiak
- `EU` is not a country code and might cause a misconfiguration
- Deprecate the `taxTypes` query - #15802 by @maarcingebala
### GraphQL API
- Add `translatableContent` to all translation types; add translated object id to all translatable content types - #15617 by @zedzior
- Add the `Channel.taxConfiguration` field - #15610 by @Air-t
- Add the `Warehouse.stocks` field - #15771 by @teddyondieki
- Change permissions for `checkout` and `checkouts` queries. Add `HANDLE_PAYMENTS` to required permissions - #16010 by @Air-t
- Change the `checkoutRemovePromoCode` mutation behavior to throw a `ValidationError` when the promo code is not detached from the checkout. - #16109 by @Air-t
### Other changes
- Remove `prefetched_for_webhook` queryset for legacy payload generators - #15369 by @AjmalPonneth
- Don't raise `InsufficientStock` for inventory tracking for variants is disabled - #15475 by @carlosa54
- DB performance improvements in attribute dataloaders - #15474 by @AjmalPonneth
- Calculate order promotions in draft orders - #15459 by @zedzior
- Prevent name overwriting of product variants when updating product types - #15670 by @teddyondieki
- Added support for the `BrokerProperties` custom header to webhooks to support Azure Service Bus - #15899 by @patrys
- Fixed a rare crash in the introspection query detection code - #15966 by @patrys
- Added HTTP compression telemetry - #16125 by @patrys
- Implement login throttling - #16219 by @zedzior
- Introduce the `allow_writer` context manager to explicitly control when the writer database should be used - #15651 by @maarcingebala
- Improve performance of the `productVariants` resolvers by using JOINs instead of subqueries - #16262 by @maarcingebala
- Extend valid address values - #15877 by @zedzior