API
- Add mutation to change customer's first name last name - 4489 by fowczarek
- Add mutation to delete customer's account - 4494 by fowczarek
- Add mutation to change customer's password - 4656 by fowczarek
- Add ability to customize email sender address in emails sent by Saleor - 4820 by NyanKiyoshi
- Add ability to filter attributes per global ID - 4640 by NyanKiyoshi
- Add ability to search product types by value (through the name) - 4647 by NyanKiyoshi
- Add queries and mutation for serving and saving the configuration of all plugins - 4576 by korycins
- Add `redirectUrl` to staff and user create mutations - 4717 by fowczarek
- Add error codes to mutations responses - 4676 by Kwaidan00
- Add translations to countries in `shop` query - 4732 by fowczarek
- Add support for sorting product by their attribute values through given attribute ID - 4740 by NyanKiyoshi
- Add descriptions for queries and query arguments - 4758 by maarcingebala
- Add support for Apollo Federation - 4825 by salwator
- Add mutation to create multiple product variants at once - 4735 by fowczarek
- Add default value to custom errors - 4797 by fowczarek
- Extend `availablePaymentGateways` field with gateways' configuration data - 4774 by salwator
- Change `AddressValidationRules` API - 4655 by Kwaidan00
- Use search in a consistent way; add sort by product type name and publication status to `products` query. - 4715 by fowczarek
- Unify `menuItemMove` mutation with other reordering mutations - 4734 by NyanKiyoshi
- Don't create an order when the payment was unsuccessful - 4500 by NyanKiyoshi
- Don't require shipping information in checkout for digital orders - 4573 by NyanKiyoshi
- Drop `manage_users` permission from the `permissions` query - 4854 by maarcingebala
- Deprecate `inCategory` and `inCollection` attributes filters in favor of `filter` argument - 4700 by NyanKiyoshi & khalibloo
- Remove `PaymentGatewayEnum` from the schema, as gateways now are dynamic plugins - 4756 by salwator
- Require `manage_products` permission to query `costPrice` and `stockQuantity` fields - 4753 by NyanKiyoshi
- Refactor account mutations - 4510, 4668 by fowczarek
- Fix generating random avatars when updating staff accounts - 4521 by maarcingebala
- Fix updating JSON menu representation in mutations - 4524 by maarcingebala
- Fix setting variant's `priceOverride` and `costPrice` to `null` - 4754 by NyanKiyoshi
- Fix fetching staff user without `manage_users` permission - 4835 by fowczarek
- Ensure that a GraphQL query is a string - 4836 by nix010
- Add ability to configure the password reset link - 4863 by fowczarek
- Fixed a performance issue where Saleor would sometimes run huge, unneeded prefetches when resolving categories or collections - 5291 by NyanKiyoshi
- uWSGI now forces the django application to directly load on startup instead of being lazy - 5357 by NyanKiyoshi
Core
- Add enterprise-grade attributes management - 4351 by dominik-zeglen and NyanKiyoshi
- Add extensions manager - 4497 by korycins
- Add service accounts - backend support - 4689 by korycins
- Add support for webhooks - 4731 by korycins
- Migrate the attributes mapping from HStore to many-to-many relation - 4663 by NyanKiyoshi
- Create general abstraction for object metadata - 4447 by salwator
- Add metadata to `Order` and `Fulfillment` models - 4513, 4866 by szewczykmira
- Migrate the tax calculations to plugins - 4497 by korycins
- Rewrite payment gateways using plugin architecture - 4669 by salwator
- Rewrite Stripe integration to use PaymentIntents API - 4606 by salwator
- Refactor password recovery system - 4617 by fowczarek
- Add functionality to sort products by their "minimal variant price" - 4416 by derenio
- Add voucher's "once per customer" feature - 4442 by fowczarek
- Add validations for minimum password length in settings - 4735 by fowczarek
- Add form to configure payments in the dashboard - 4807 by szewczykmira
- Change `unique_together` in `AttributeValue` - 4805 by fowczarek
- Change max length of SKU to 255 characters - 4811 by lex111
- Distinguish `OrderLine` product name and variant name - 4702 by fowczarek
- Fix updating order status after automatic fulfillment of digital products - 4709 by korycins
- Fix error when updating or creating a sale with missing required values - 4778 by NyanKiyoshi
- Fix error filtering pages by URL in the dashboard 1.0 - 4776 by NyanKiyoshi
- Fix display of the products tax rate in the details page of dashboard 1.0 - 4780 by NyanKiyoshi
- Fix adding the same product into a collection multiple times - 4518 by NyanKiyoshi
- Fix crash when placing an order when a customer happens to have the same address more than once - 4824 by NyanKiyoshi
- Fix time zone based tests - 4468 by fowczarek
- Fix serializing empty URLs as a string when creating menu items - 4616 by maarcingebala
- The invalid IP address in HTTP requests now fallback to the requester's IP address. - 4597 by NyanKiyoshi
- Fix product variant update with current attribute values - 4936 by fowczarek
- Update checkout last field and add auto now fields to save with update_fields parameter - 5177 by IKarbowiak