Upgrade tool
The upgrade tool assists Strapi users in upgrading their Strapi application dependencies and code to a specific version.
Running the upgrade tool triggers the update of the application dependencies, their installation, and the execution of a series of codemods that automatically edit the application codebase according to the breaking changes introduced up until the targeted version.
The upgrade tool is a Strapi package and can be run from the CLI.
Scope
While the upgrade tool helps upgrade applications and plugins, it doesn't cover every aspect of it.
✅ The upgrade tool supports:
- Updating the project's dependencies
- Applying automatic code transformation to existing files
- Installing or re-installing the correct dependencies for the project
❌ The upgrade tool doesn't support:
- Modifying the file tree by adding, removing or moving files and directories
- Migrating the application's data. This is handled by Strapi database migrations
After the upgrade tool completes its execution, it is strongly recommended to review the modifications made before re-running the app or plugin.
Version types
Strapi version numbers respect the semantic versioning conventions:

- The first number is the major version number.
- The second number is the minor version number.
- The third number is the patch version number.
The upgrade tool allows upgrading to a major, minor, or patch version.
What the upgrade tool does depends on the latest existing version and the command you run.
For instance, if the latest Strapi v4 version is v4.25.9:
| My Strapi application is currently on… | If I run… | My Strapi application will be upgraded to … |
|---|---|---|
| v4.25.1 | npx @strapi/upgrade patch | v4.25.9 (because v4.25.9 is the latest patch version for the v4.25 minor version) |
| v4.14.1 | npx @strapi/upgrade minor | v4.25.9 |
| v4.14.1 | npx @strapi/upgrade major | Nothing. I first need to run npx @strapi/upgrade minor to upgrade to v4.25.9. |
| v4.25.9 | npx @strapi/upgrade major | v5.0.0 |
| v4.14.1 | npx @strapi/upgrade latest | v5.1.2 A confirmation prompt appears to make sure the major version bump is intended. |
Upgrade to a new version
Before running the upgrade process, make sure you've created a backup of your codebase and database.
Upgrade to a major version
Run the upgrade tool with the major parameter to upgrade the project to the next major version of Strapi:
npx @strapi/upgrade major
During the upgrade process, the application dependencies are updated and installed, and the related codemods are executed.
If your application is not already running the latest minor and patch version in the current major, the major upgrade is prevented, and you will first need to upgrade to the latest minor.patch version in the current major version. This means that moving from v4.14.4 to v5.0.0 is a 2-step process because the latest v4 version is v4.16.2.
Upgrade to a minor version
Run the upgrade tool with the minor parameter to upgrade the project to the latest minor and patch version of Strapi:
npx @strapi/upgrade minor
During the upgrade process, the project dependencies are updated and installed, and the related codemods are executed (if any).
Upgrade to a patch version
Run the upgrade tool with the patch parameter to upgrade the project to the latest patch version in the current minor and major version of Strapi:
npx @strapi/upgrade patch
During the upgrade process, the project dependencies are updated and installed, and the related codemods are executed (if any).
Upgrade to the latest version
Run the upgrade tool with the latest parameter to upgrade the project to the latest available version regardless of the current Strapi version:
npx @strapi/upgrade latest
During the upgrade process, the project dependencies are updated and installed, and the related codemods are executed (if any).
If a major version upgrade is detected, the upgrade tool displays a confirmation prompt to make sure the change is
intended.
In the scenario where the major bump isn't the desired option, see the minor upgrade.
Upgrade to a specific version
Run the upgrade tool with the to parameter followed by a target version to upgrade the project to that specific published version of Strapi:
npx @strapi/upgrade to 5.42.0
Use to when latest resolves to a version blocked by your registry policies. For example, your .npmrc might set a min-release-age (a delay before newly published versions can be installed) to mitigate supply-chain risks. In that case, the latest published version is not yet installable, so you can target an older version instead.
For pre-releases, pass the --codemods-target option to select which set of codemods to run. It defaults to the major.minor.patch portion of the target version:
npx @strapi/upgrade to 5.0.0-beta.951 --codemods-target 5.0.0
The to command skips the safety check that requires the project to be on the latest patch of its current major version before a major upgrade. It is intended for users who know which version they want to target.
Run codemods only
Run the upgrade tool with the codemods parameter to execute a utility that allows selecting the codemods to be executed. With this command, only the codemods are run, the dependencies are not updated nor installed.
To view a list of the available codemods, use the ls command:
npx @strapi/upgrade codemods ls
To select from a list of available codemods and run them, use the run command:
npx @strapi/upgrade codemods run
To run only a specific codemod, use run followed by a UID found from the ls command:
npx @strapi/upgrade codemods run 5.0.0-strapi-codemod-uid