Strapi v4 to Strapi 5 breaking changes
🚧 Work in progress
This page is a work-in-progress and the list of breaking changes is not 100% final yet.
This page lists all the breaking changes introduced in Strapi 5.
❗️ Warning
It is currently strongly advised that you refrain from migrating from Strapi v4 to Strapi 5, especially in a production environment.
The beta version of Strapi 5 is not meant to be used in production yet.
Configuration
- Some
env-only configuration options are handled by the server configuration - Configuration filenames should meet strict requirements
- Server log level is
http - Model config path uses uid instead of dot notation
- The
webhooks.populateRelationsserver configuration is removed
Content API
- Strapi 5 has a new, flattened response format for API calls
documentIdshould be used instead ofidin API calls- The
publicationStateparameter is not supported and replaced bystatus - Sorting by id is no longer possible to sort by chronological order
- There is no
findPage()method with the Document Service API - The
localizationsfield does not exist anymore - The
localeattribute name is reserved by Strapi - The GraphQL API has been updated
Database
Plugins, plugins configuration, and plugins development
- Users & Permissions
register.allowedFieldsdefaults to[] - The helper-plugin is deprecated
injectContentManagerComponent()is removed in favor ofgetPlugin('content-manager').injectComponent()
Strapi objects, methods, and packages
strapi.fetchuses the nativefetch()API- strapi factories import have changed
- The
isSupportedImagemethod is removed in Strapi 5 strapi-utilshas been refactored- Core service methods use the Document Service API
Content Manager
- The
ContentManagerAppStateredux is modified - The
EditViewLayoutandListViewLayouthave been refactored
Dependencies
- Vite is the default bundler in Strapi 5
- Strapi 5 uses
react-router-domv6 - Strapi 5 uses
koa-bodyv6 - Webpack Aliases are removed in Strapi 5
- Apollo Server v3 upgraded to Apollo Server v4
Internal changes
The following changes should only affect users who deeply customize Strapi.