# v4 code migration guide
Strapi v4 introduces breaking changes that require manually updating the codebase of an existing Strapi project.
This guide covers migrating both the back end and the front end of a Strapi v3.6.x application to Strapi v4.0.x. and is built around small independent topics.
PREREQUISITES
Migrating the back end code of a Strapi application is a prerequisite to migrating the front end.
For each topic covered, this guide is designed to:
- help you understand the main differences between Strapi v3 and v4,
- help you resolve breaking changes by migrating built-in code to Strapi v4,
- and, whenever possible, offer some clues and starting points on how to migrate custom code.
The following topics are covered by this guide, and you can either click on a specific topic to jump to the dedicated migration documentation or click on a scope to read a more general introduction for the back end or the front end migration:
Scope | Topic |
---|---|
Back end code migration | |
Front end code migration |
✏️ NOTE
The following topics are not extensively covered in this code migration guide, but Strapi v4 also introduces:
- a new file structure for the project, which can be migrated with the help of Strapi codemods (opens new window),
- fully rewritten REST and GraphQL APIs, with the REST API not populating by default any relations, components, dynamic zones, and medias,
- the new Entity Service and Query Engine APIs,
- and the Strapi Design System (opens new window) which is used to build the new user interface of Strapi v4.
🤓 Need more help?
Feel free to ask for help on the forum (opens new window) or on the community Discord (opens new window).