Plugins upgrade summary
The present page is intended to be used as a short summary of everything to consider if you are a plugin developer upgrading your plugin from Strapi v4 to Strapi 5. The page quickly describes the changes affecting plugins and links to additional resources where necessary.
Starting with Strapi 5, the platform includes a Plugin SDK to help develop and build Strapi plugins. While you are free to use other methods for plugin development, we strongly recommend using the Plugin SDK. As part of the migration process from v4 to Strapi 5, we encourage you to update your plugin to take advantage of the Plugin SDK.
Recommended steps to migrate a plugin
Your Strapi application is already running on the latest v5 minor and patch version. If it's not, follow the step-by-step guide to upgrade to Strapi 5.
Upgrading a Strapi v4 plugin to Strapi 5 consists in:
- Creating a new empty plugin using the Plugin SDK.
- Move your Strapi v4 code to the newly created files in the Strapi 5 plugin structure, also considering the changes summarized in this page.
Alternatively, you can manually update your Strapi v4 plugin to use the Plugin SDK. The manual steps include:
- If your code uses a format other than CommonJS, update the
package.json
file and specify the appropriate exports property. - Reorganize your Strapi v4 code to align with the Strapi 5 plugin structure
Back-end changes
- The Entity Service API from Strapi v4 is deprecated and Strapi 5 uses the Document Service API instead. A migration guide is available to help you transition to the Document Service API.
- General Strapi v4 to Strapi 5 breaking changes might apply.
- You can use the new Plugin SDK to generate plugins and publish them on NPM and/or submit them to the Marketplace.
Front-end changes
- The Design System is upgraded to v2 in Strapi 5:
- A dedicated migration guide is available in the Design System documentation.
- There are no big visual changes, except for icons.
- General Strapi v4 to Strapi 5 breaking changes might apply.
- The
helper-plugin
has been removed. A migration reference is available to help you transition away from thehelper-plugin
. - Strapi does not alias dependencies any longer. The 4 dependencies that are expected to be used by all client facing code are declared at the project level (
react
,react-dom
,styled-components
, andreact-router-dom
). If you do not declare the dependencies that you use (e.g.axios
), there is a likelihood users could face unforeseen issues with your plugin. - If you're using the Plugin SDK, you will need to transition your front-end files to
.jsx
or.tsx
format.
Custom providers
Custom providers for the Email and Upload plugins need conversion only if they were using the Entity Service API (please refer to the Entity Service API to Document Service API migration guide).