
Enforces required media fields at publish time in Strapi v5, filling the gap left by the native validation limitation
released June 24, 2026
npm install strapi-plugin-publish-media-validationA Strapi v5 plugin that enforces required: true on media fields at publish time.
Strapi v5 validates required: true on scalar fields (string, integer, etc.) when publishing, but skips that check for media fields (type: "media"). This means a content manager can publish an entry with a missing required banner, thumbnail, or any other required image/file — even though the field is marked as required in the schema.
This plugin intercepts the Document Service publish action and blocks it if any required media field is empty, returning a clear error message instead of silently allowing the publish.
npm install strapi-plugin-publish-media-validation
# or
yarn add strapi-plugin-publish-media-validation
# or
pnpm add strapi-plugin-publish-media-validationBecause @strapi/utils is a peer dependency and pnpm does not hoist packages by default, you also need to add it as a direct dependency:
pnpm add @strapi/utilsNo configuration needed. Once installed, the plugin automatically scans every content type's schema on publish and blocks any entry where a required: true media field is empty.
Example schema:
{
"banner": {
"type": "media",
"multiple": false,
"required": true,
"allowedTypes": ["images"]
}
}If you try to publish without a banner, the admin panel will show:
The following required media fields are empty: Banner
The plugin registers a Document Service middleware that:
publish action across all content typestype: "media" fields with required: trueValidationError listing any empty fields, which Strapi maps to a 400 response with the message shown in the admin UI| Strapi version | Supported |
|---|---|
| v5.x | ✅ |
| v4.x | ❌ |
Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.
Submit
