Strapi v5.31.1stable Released Nov 19, 2025
Impact Score: 5/10

Strapi v5.31.1 — Release Notes & Engineering Impact

Source available — automated, not human-reviewed

Component: strapi · Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified — check source notes
📄 .MD
⚡ Executive Summary (TL;DR)

Strapi v5.31.1. Source highlight: **media-library:** add aria-selected and click handlers for better … (#23475)

Who Does This Impact? (Role-Based Analysis)

💻 Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

📊 Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

⚙️ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

✨ New Features & Capabilities (2)

  • **media-library:** add aria-selected and click handlers for better … (#23475)
  • improve combobox to add new locale (#24806)

⚡ Performance & Enhancements (1)

  • improve package registry URL determination during Strapi upgrade (#22913)

🔧 Bug Fixes & Patches (6)

  • accessible responsive left menu (8f6b0444b7)
  • bulk unpublish when creating a new locale (#24821)
  • modifying&publishing locale should only update that locale (#24648)
  • include locales to get last modified entries in widgets (#24647)
  • optional chaining in getRetentionDays function (#24830)
  • edit view dialog ui (#23353)
📄 View Raw Release Notes (Original Developer Log)
## 5.31.1 (2025-11-19) ### 🚀 New feature - **media-library:** add aria-selected and click handlers for better … ([#23475](https://github.com/strapi/strapi/pull/23475)) ### 🔥 Bug fix - accessible responsive left menu ([8f6b0444b7](https://github.com/strapi/strapi/commit/8f6b0444b7)) - bulk unpublish when creating a new locale ([#24821](https://github.com/strapi/strapi/pull/24821)) - modifying&publishing locale should only update that locale ([#24648](https://github.com/strapi/strapi/pull/24648)) - include locales to get last modified entries in widgets ([#24647](https://github.com/strapi/strapi/pull/24647)) - optional chaining in getRetentionDays function ([#24830](https://github.com/strapi/strapi/pull/24830)) - edit view dialog ui ([#23353](https://github.com/strapi/strapi/pull/23353)) - show relations per locale in listview ([#24805](https://github.com/strapi/strapi/pull/24805)) - global translation keys for bulk move modal ([#22773](https://github.com/strapi/strapi/pull/22773)) - missing translations ([#22800](https://github.com/strapi/strapi/pull/22800)) - added fix for not performing bulk actions when it is disabled ([#21792](https://github.com/strapi/strapi/pull/21792)) - warn user on page reload/close if edit view has unsaved data ([3c9d7923b3](https://github.com/strapi/strapi/commit/3c9d7923b3)) - add error notification when AI metadata save fails ([#24611](https://github.com/strapi/strapi/pull/24611)) - unable to customize cors settings in graphql plugin ([#22852](https://github.com/strapi/strapi/pull/22852)) - typescript error front test ([#24845](https://github.com/strapi/strapi/pull/24845)) - contentTypes generation fails on negative number ([#24056](https://github.com/strapi/strapi/pull/24056)) - unable to clear and save time only fields in the content manager… ([#24675](https://github.com/strapi/strapi/pull/24675)) - add missing semicolon to core-contoller ts template ([#24079](https://github.com/strapi/strapi/pull/24079)) - prevent list from jumping to top when selecting checkbox ([#24146](https://github.com/strapi/strapi/pull/24146)) - **admin:** ai admin config can be set to true for non growth license ([#24835](https://github.com/strapi/strapi/pull/24835)) - **admin:** ai disabled by default for growth license ([#24868](https://github.com/strapi/strapi/pull/24868)) - **content-manager:** preserve fields with visible:false during form submission ([#24849](https://github.com/strapi/strapi/pull/24849)) - **core:** max length on short text ([#24794](https://github.com/strapi/strapi/pull/24794)) - **core:** allow description and placeholder be empty ([#24799](https://github.com/strapi/strapi/pull/24799)) - **db:** replace discardDrafts calls in v5 migration with queries ([#24798](https://github.com/strapi/strapi/pull/24798)) - **upload:** file-type does not support commonjs ([#24848](https://github.com/strapi/strapi/pull/24848)) ### ⚙️ Chore - improve combobox to add new locale ([#24806](https://github.com/strapi/strapi/pull/24806)) - replace act() calls with the right testing library api when it is necessary ([b5ed02af8c](https://github.com/strapi/strapi/commit/b5ed02af8c)) - **content-manager:** fix deprecation in Tooltip usage ([#23029](https://github.com/strapi/strapi/pull/23029)) - **deps:** bump cloudinary from 1.41.0 to 2.7.0 ([#24831](https://github.com/strapi/strapi/pull/24831)) - **deps:** bump tar-fs from 2.1.1 to 2.1.4 ([#24844](https://github.com/strapi/strapi/pull/24844)) ### 💅 Enhancement - improve package registry URL determination during Strapi upgrade ([#22913](https://github.com/strapi/strapi/pull/22913)) ### ❤️ Thank You - Adrien L - Araksya Gevorgyan @araksyagevorgyan - Ayush @Ayushd785 - Bassel Kanso @Bassel17 - Ben Irvin - Chaitya @chaitya-titan - Daniel Garcia @dagadevelop - Dmitry Maklygin @dmaklygin - HichamELBSI - Jorrit Schippers - José Luis @SalahAdDin - Lucas Boilly @lucasboilly - markkaylor - Marvin Mottet - mathildeleg @mathildeleg - Maxime Robert - ndaemy @ndaemy - Ocneanu Vlad @OcneanuVlad - Razim Saidov @razims - Sam Phillemon @Sam-Phillemon9493 _Please note, this version has been deprecated on npm due to a data loss issue found within a bug fix._