Saleor v3.1.0 Release Notes

  • ๐Ÿ’ฅ Breaking

    • โœ‚ Remove graphene-django dependency - #9170 by @rafalp
    • ๐Ÿ”Œ Don't run plugins when calculating checkout's total price for available shipping methods resolution - #9121 by @rafalp
      • Use either net or gross price depending on store configuration.

    Other

    • Extend app by AppExtension - #7701 by @korycins
    • ๐Ÿ‘‰ Make SKU an optional field on ProductVariant - #7633 by @rafalp
    • ๐Ÿ—„ Deprecate interface field PaymentData.reuse_source - #7988 by @mateuszgrzyb
    • โž• Add ExternalNotificationTrigger mutation - #7821 by @mstrumeck
    • โž• Add Click&Collect feature - #7673 by @kuchichan
    • โž• Add fulfillment confirmation - #7675 by @tomaszszymanski129
    • Introduce swatch attributes - #7261 by @IKarbowiak
    • Introduce gift card feature - #7827 by @IKarbowiak, @tomaszszymanski129
    • Deprecate setup_future_usage from checkoutComplete.paymentData input - will be removed in Saleor 4.0 - #7994 by @mateuszgrzyb
    • ๐Ÿ“‡ Possibility to pass metadata in input of checkoutPaymentCreate - #8076 by @mateuszgrzyb
    • ๐Ÿ›  Fix shipping address issue in availableCollectionPoints resolver for checkout - #8143 by @kuchichan
    • ๐Ÿ‘Œ Improve draft orders and orders webhooks by @jakubkuc
    • ๐Ÿ›  Fix cursor-based pagination in products search - #8011 by @rafalp
    • Extend accountRegister mutation to consume first & last name - #8184 by @piotrgrundas
    • Introduce sales / vouchers per product variant - #8064 by @kuchichan
    • Introduce sales webhooks - #8157 @kuchichan
    • Batch loads in queries for Apollo Federation - #8273 by @rafalp
    • Add webhooks for stock changes: PRODUCT_VARIANT_OUT_OF_STOCK and PRODUCT_VARIANT_BACK_IN_STOCK - #7590 by @mstrumeck
    • Reserve stocks for checkouts - #7589 by @rafalp
    • โž• Add variant_selection to ProductAttributeAssign operations - #8235 by @kuchichan
    • โž• Add query complexity limit to GraphQL API - #8526 by rafalp
    • Add quantity_limit_per_customer field to ProductVariant #8405 by @kuchichan
    • โž• Add API for webhook payloads and deliveries - #8227 by @jakubkuc
    • โšก๏ธ Optimize products stock availability filter - #8809 by @fowczarek
    • ๐Ÿ”จ Refactor attributes validation - #8905 by @IKarbowiak
      • in create mutations: require all required attributes
      • in update mutations: do not require providing any attributes; when any attribute is given, validate provided values.
    • ๐Ÿ›  Fix crash when querying external shipping methods translation field - #8971 by @rafalp
    • Add COLLECTION_CREATED, COLLECTION_UPDATED, COLLECTION_DELETED events and webhooks - #8974 by @rafalp
    • ๐Ÿ›  Fix crash when too long translation strings were passed to translate mutations - #8942 by rafalp
    • ๐Ÿ‘‰ Make collections names non-unique - #8986 by @rafalp
    • โž• Add validation of unavailable products in the checkout. Mutations: CheckoutShippingMethodUpdate, CheckoutAddPromoCode, CheckoutPaymentCreate will raise a ValidationError when product in the checkout is unavailable - #8978 by @IKarbowiak
    • ๐Ÿ“‡ Change metadata mutations to use token for order and checkout as identifier - #8426 by @IKarbowiak
      • After changes, using the order id for changing order metadata is deprecated
    • โž• Add withChoices flag for Attribute type - #7733 by @dexon44 CheckoutAddPromoCode, CheckoutPaymentCreate will raise a ValidationError when product in the checkout is unavailable - #8978 by @IKarbowiak
    • ๐Ÿ›  Fix disabled warehouses appearing as valid click and collect points when checkout contains only preorders - #9052 by @rafalp
    • โž• Add support for providing shipping methods by Saleor Apps - #7975 by @bogdal:
      • Add SHIPPING_LIST_METHODS_FOR_CHECKOUT sync webhook
    • ๐Ÿ›  Fix crash when Avalara plugin was used together with Webhooks plugin for shipping methods - #9121 by @rafalp
    • ๐Ÿ‘ Allow fetching unpublished pages by app with manage pages permission - #9181 by @IKarbowiak
    • โšก๏ธ Update required permissions for attribute options - #9204 by @IKarbowiak
      • Product attribute options can be fetched by requestors with manage product types and attributes permission.
      • Page attribute options can be fetched by requestors with manage page types and attributes permission.