Migrate a Dashboard Plugin Extension

Add a dashboard plugin extension to your new Wix CLI project as part of migrating an app from the legacy Wix CLI.

Folder structure

Legacy pathNew path
src/dashboard/plugins/<name>/plugin.jsonsrc/extensions/dashboard/plugins/<name>/<name>.extension.ts
src/dashboard/plugins/<name>/plugin.tsxsrc/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.

Step 1 | Copy and rename the file

In the new project:

  1. Create the folder src/extensions/dashboard/plugins/<name>/.
  2. From the legacy project's 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.

Step 2 | Adapt the code to the new project

In <name>.tsx:

  1. Update any imports as needed, to use the new paths.
  2. If the component calls a web method or an HTTP function, replace the call. Fixing the import path isn't enough, because the legacy backend code doesn't exist in that form after the migration. See Migrate from Web Methods to HTTP Endpoints or Migrate from HTTP Functions to HTTP Endpoints.

Step 3 | Create the extension file

In the new project:

  1. In src/extensions/dashboard/plugins/<name>/, create <name>.extension.ts.

  2. Add the following code, and set each field to the value the table below specifies:

    Copy
    FieldSource in legacy projectWhat to specify
    idid in plugin.jsonCopy source as is
    titletitle in plugin.jsonCopy source as is
    extendsextends in plugin.json, the slot ID of the dashboard page hosting the pluginCopy source as is
    componentNonePath to <name>.tsx, relative to src/
  3. Add the following field if it applies, inside the same object:

    Copy
    FieldSource in legacy projectWhat to specifyCondition
    heightheight in plugin.jsonCopy source as isOnly 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.

Step 4 | Register the extension

In the new project, in src/extensions.ts:

  1. Import the extension:

    Copy
  2. Add a .use() call for it to the app() chain, on its own line:

    Copy

Step 5 | Return to the main migration guide

Return to Install the extension's dependencies in the main migration guide.

Last updated: 10 November 2026

Did this help?