РелизВерсия v3.91.0
Payload CMS 3.91.0: новые требования Node.js и изменения MCP
15 октября 2026 года опубликован стабильный Payload CMS 3.91.0. Выпуск уточняет требования к Node.js, исправляет крупные загрузки в Azure и меняет контракт ряда инструментов MCP; для собственного почтового transport требуется учесть переход на Nodemailer 10.
Изменения относятся к ветке Payload 3.x и её адаптерам. Помимо исправлений панели и запросов, в журнале выпуска выделены несовместимые изменения зависимостей. Их область действия различается: требование одного адаптера не становится автоматически требованием всего проекта.
Node.js: общий минимум и отдельное условие Azure
Общий заявленный минимум поднят с ^18.20.2 || >=20.9.0 до >=20.18.1. По объяснению проекта, зависимость undici@7 уже требовала Node.js 20.18.1 и не загружалась на Node.js 18. Поэтому новая декларация устраняет расхождение с фактическими требованиями зависимостей, а не впервые ломает до этого работавшую поддержку Node.js 18.
У @payloadcms/storage-azure требование выше — Node.js 22.0.0. Причина — обновление @azure/storage-blob до 12.34.0. Оно исправляет клиентскую загрузку файлов больше 256 MiB по частям: в Payload 3.90.0–3.90.2 при chunkLargeFiles: true и SDK версии ниже 12.32.0, такой сценарий мог завершаться ошибкой 403 AuthorizationPermissionMismatch. Обычные загрузки одним запросом этой конкретной проблемой не затронуты. Минимум 22.0.0 относится именно к Azure-адаптеру.
Собственный почтовый transport: меняются типы
Адаптер @payloadcms/email-nodemailer переведён на Nodemailer 10. Если проект создаёт собственный transport через Nodemailer 9 и передаёт его адаптеру, типы больше не совпадают: возможна ошибка TS2322. Проект указывает для такого случая переход зависимости Nodemailer на ветку 10 и удаление @types/nodemailer, поскольку новая версия поставляет собственные типы.
Согласно PR, изменение совместимости transport не затрагивает пользователей, которые передают только transportOptions или не задают конфигурацию. Авторы отдельно отмечают, что описанное несовпадение — вопрос проверки типов, а не изменение поведения transport при выполнении.
MCP: объекты вместо строк JSON
В plugin-mcp параметр select в инструментах поиска, создания и обновления коллекций и глобальных объектов теперь передаётся объектом, а не строкой JSON. То же изменение сделано для headers инструмента auth. Клиент, продолжающий присылать эти значения строками, получает ошибку проверки входа. При этом where в ветке 3.x остаётся строкой JSON — переносить на него новое правило нельзя.
Инструменты поиска коллекций также получили параметры populate, joins, trash и pagination; для поиска глобальных объектов добавлен populate. Это расширяет доступные настройки запросов через MCP, но не отменяет необходимость учитывать точную схему каждого инструмента.
Новость основана на официальном выпуске и полных описаниях связанных PR; собственного стенда Удельты для 3.91.0 не было. Обложка — демонстрационный экран из официальной документации Payload, сохранённый в каталоге; интерфейс конкретного проекта может отличаться.