Add a dashboard plugin extension to your new Wix CLI project as part of migrating an app from the legacy Wix CLI.
| Legacy path | New path |
|---|---|
src/dashboard/plugins/<name>/plugin.json | src/extensions/dashboard/plugins/<name>/<name>.extension.ts |
src/dashboard/plugins/<name>/plugin.tsx | src/extensions/dashboard/plugins/<name>/<name>.tsx |
Note: <name> is your extension's folder name in the legacy project. The new folder and files use the same name.
In the new project:
src/extensions/dashboard/plugins/<name>/.src/dashboard/plugins/<name>/ folder, copy plugin.tsx into the new folder, and rename it to <name>.tsx.Don't copy the legacy plugin.json file. You recreate its values in <name>.extension.ts.
In <name>.tsx:
In the new project:
In src/extensions/dashboard/plugins/<name>/, create <name>.extension.ts.
Add the following code, and set each field to the value the table below specifies:
| Field | Source in legacy project | What to specify |
|---|---|---|
id | id in plugin.json | Copy source as is |
title | title in plugin.json | Copy source as is |
extends | extends in plugin.json, the slot ID of the dashboard page hosting the plugin | Copy source as is |
component | None | Path to <name>.tsx, relative to src/ |
Add the following field if it applies, inside the same object:
| Field | Source in legacy project | What to specify | Condition |
|---|---|---|---|
height | height in plugin.json | Copy source as is | Only if your legacy plugin.json sets it |
The new structure has no width field for dashboard plugins. If your legacy plugin.json sets width, there's no equivalent to carry over.
Important:
The id must match the value from the legacy plugin.json. Otherwise, the new entry is treated as a separate extension instead of a continuation of the legacy one.
Note: The migration keeps the slot ID as it is, including a slot whose host page Wix has since replaced. Such a plugin builds and appears in the app manifest, but it renders nowhere. To show it again, choose a current slot in About Dashboard Page Slots and set extends to its ID.
In the new project, in src/extensions.ts:
Import the extension:
Add a .use() call for it to the app() chain, on its own line:
Return to Install the extension's dependencies in the main migration guide.
Last updated: 10 November 2026