This guide walks through migrating an app from the legacy Wix CLI for Apps to the new Wix CLI. The two CLIs use different project structures and toolchains. The migration converts your app to use the new project structure, so it can use the new CLI's commands, generators, and supported extensions.
The migration involves creating a new Wix CLI project linked to the same app and migrating extensions to it one at a time. Both projects share a single version history.
To create a new project linked to your existing app:
In the terminal, navigate to the folder where you want to create the new project.
Run the following command:
If prompted to install the package, confirm it.
Select Add new extensions for an existing Wix app.
Select the existing Wix CLI app you want to migrate from the list.
Enter a name for the project folder or accept the default. The CLI generates the new project and shows a Results summary when it's done.
Note: If the default folder name is already in use on your filesystem, the CLI prompts you to enter a different one.
The new project comes with a default my-page dashboard extension that's not part of the migration. To remove it:
src/extensions/dashboard/pages/my-page/ folder.src/extensions.ts, remove the myPage import and the .use(myPage) call.If your legacy project has web methods or HTTP functions, migrate them to the new project before migrating extensions. Extensions may reference backend code, so migrating the backend first keeps your extension migrations working.
To migrate the backend, complete each step that applies to your project:
For each extension in your legacy project, follow the steps below. Repeat until all extensions are migrated.
In the new project, add the extension by following the migration guide for your extension type.
As you migrate extensions, src/extensions.ts accumulates one import per extension and one chained .use() call per extension. For example, after migrating three extensions:
To finish migrating the extension:
Warning:
A wix release can't be undone. A broken release stays broken for users who received it until you release a fix. Verifying on a development site beforehand catches most issues.
For details on how users receive new versions, see About App Versioning.
From the new project, run wix dev and verify the extension works on the development site. The dev site reflects your local code, so issues found here can be fixed before release.
Build the new project to confirm the extension compiles:
In the new project, release a new version:
On a site where your app is installed, check the release as follows:
In the legacy project, delete the extension's files by following the delete instructions for your extension type.
Important: When the new project releases an extension that also exists in the legacy project, the new version takes precedence. Still, deletion from the legacy project matters. As long as the extension exists in both projects, a later legacy release for any reason would override the new project's version.
For each extension type, follow the migration guide and the delete instructions:
| Extension type | Migrate | Delete |
|---|---|---|
| Dashboard page | Migrate a Dashboard Page Extension | Delete a dashboard page |
| Dashboard modal | Migrate a Dashboard Modal Extension | Delete a dashboard modal |
| Dashboard plugin | Migrate a Dashboard Plugin Extension | Delete a dashboard plugin |
| Dashboard menu plugin | Migrate a Dashboard Menu Plugin Extension | Delete a dashboard menu plugin |
| Custom element | Migrate a Custom Element Extension | Delete a site widget extension (custom elements were a kind of site widget in the legacy CLI) |
| Site plugin | Migrate a Site Plugin Extension | Delete a site plugin extension |
| Embedded script | Migrate an Embedded Script Extension | Delete an embedded script extension |
| Service plugin | Migrate Service Plugin Extensions | Delete a service plugin extension |
| Event | Migrate an Event Extension | Delete an event extension |
What to do next depends on whether your app is already distributed:
This section lists common issues you might run into during the migration, with instructions to resolve each.
When npm install fails with peer-dependency conflicts (ERESOLVE), you need to allow legacy peer dependencies and reset the install.
At the top of your project's folder, create a .npmrc file containing legacy-peer-deps=true.
In the terminal, navigate to your project's folder and run the following command:
If you released a new version but the extension doesn't appear in the dashboard, a value that should have been preserved from the legacy config most likely wasn't carried over.
The build needs the WIX_CLIENT_ID environment variable. If it isn't set, the build fails.
Set it in one of these ways:
.env.local file containing WIX_CLIENT_ID=<your-app-id>.wix env pull.Last updated: 29 June 2026