РелизВерсия 3.23.42
Saleor 3.23.42: доступность вариантов без потери цен
16 октября 2026 года опубликован стабильный Saleor 3.23.42. В API появились управление доступностью вариантов без удаления цен, отдельные полные описания категорий и коллекций и выбор между отложенным и немедленным формированием данных webhook.
Изменения полезны магазинам с несколькими каналами продаж и собственными интеграциями. Это выпуск серверного ядра Saleor: наличие новых полей API само по себе не означает появления готовых элементов управления в любой панели или витрине Next.js.
Отключить вариант в одном канале, сохранив цены
У записи варианта в канале появился флаг isAvailableForPurchase. При значении false вариант скрывается от покупателей в этом канале, исключается из диапазона цен товара и не может быть добавлен в checkout или заказ. При этом его цена, себестоимость и предыдущая цена остаются в записи. Раньше отключение через удаление варианта из канала удаляло и эти данные.
Новая мутация productVariantChannelListingAvailabilityUpdate меняет доступность без повторной передачи цен; для неё требуется право MANAGE_PRODUCTS. Уже существующие и новые записи по умолчанию получают true, поэтому само добавление флага не отключает варианты. Наличие разрешающего флага при этом не заменяет остальные условия продажи — например, отсутствие цены по-прежнему делает вариант недоступным для покупки.
Краткое и полное описание можно вести отдельно
Категории и коллекции получили необязательное переводимое поле fullDescription с форматированным содержимым Editor.js. Оно позволяет отделить вводный текст от подробного описания. Старое description и его содержимое не меняются; переносить прежние тексты в новое поле выпуск не требует, хотя для самих полей добавлены миграции базы.
Входной тип переводов остаётся общим с товарами ради совместимости API. Поэтому fullDescription виден и во входах productTranslate и productBulkTranslate, но передача его туда, включая явный null, отклоняется с INVALID. Это возможность категорий и коллекций, не новое поле описания товара.
Webhook может зафиксировать состояние в момент запроса
Для асинхронных webhook с подписочным запросом появилась настройка payloadGeneration. Режим DEFERRED остаётся стандартным: фоновая задача формирует данные по состоянию объекта на момент своего выполнения. При двух быстрых изменениях обе доставки поэтому могут содержать второе состояние — например, новое значение метаданных заказа.
Режим IMMEDIATE формирует данные в запросе, вызвавшем событие. Это важно интеграциям, которым нужно видеть состояние каждого изменения, но добавляет работу к самому запросу. Настройка задаётся отдельно для webhook и не влияет на legacy-webhook без subscription query, синхронные события и события, для которых отложенная генерация не используется.
Уже созданные доставки после смены режима завершаются по прежнему правилу; гарантии порядка получения сообщений ни один режим не даёт. Хотя проект документации помечает настройку как добавленную в 3.23.41, в модели выпущенного тега 3.23.41 её нет, а в 3.23.42 она присутствует и включена в release notes. Привязка этой новости проверена по выпущенному коду.
Собственных испытаний Удельты для этого выпуска не проводилось. Обложка взята из официальных материалов Saleor, сохранённых в каталоге; она иллюстрирует панель, а не подтверждает проверку интерфейса версии 3.23.42.