# v4 code migration guide
Strapi v4 introduces breaking changes that require manually updating the codebase of an existing Strapi project.
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:
|Back end code migration|
|Front end code migration|
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.