Edit in GitHubLog an issue

The manifest.json file (v4)

The manifest is where you include metadata about your plugin. Simply put, the manifest is a list of facts about your plugin in the form of a JSON object. No executable code goes into your manifest.

The manifest is located in your plugin's root folder and must be named manifest.json.


There are two versions of the manifest that you can use. Version 3 is described here. Note that while version 3 is still acceptable for now, it will be deprecated in the future.

Example manifest#

Copied to your clipboard
2 "manifestVersion": 4,
3 "id": "YOUR_ID_HERE",
4 "name": "Name of Your Plugin",
5 "version": "0.0.1",
6 "main": "main.js",
7 "host": {
8 "app": "XD",
9 "minVersion": "36.0.0"
10 },
11 "entrypoints": [
12 {
13 "type": "command",
14 "id": "commandFn",
15 "label": { "default": "Show A Dialog" }
16 },
17 {
18 "type": "panel",
19 "id": "panelName",
20 "label": { "default": "Panel Name" }
21 }
22 ],
23 "icons": [
24 { "width": 48, "height": 48, "path": "icons/plugin.png",
25 "scale": [ 1, 2 ], "theme": [ "all" ], "species": [ "pluginList" ] }
26 ]

See the sections below to learn more about each key/value field. All fields are required unless otherwise noted below.

Top-level metadata#

The top level of the manifest JSON object contains high-level information about your plugin.


Here are the definitions of the keywords in the "Required" column:

  • Develop - required field for XD to run the plugin. If excluded, XD won't load the plugin
  • Publish - required field for plugins to be submitted in the Adobe Developer Console and published in the Plugin Manager
Key pathTypeDescriptionRequired
manifestVersionnumberThe version of the manifest. For new XD plugins, this should be 4 or higher. Version 3 is allowed, but will be deprecated.Develop / Publish
idstringUnique identifier for your plugin. You can get your unique ID on the Adobe Developer Console.Develop / Publish
namestringThe name should be 3 - 45 characters.
Note: We recommend your plugin name matches the project name you created when getting your plugin ID from the Adobe Developer Console.
Develop / Publish
versionstringVersion number of your plugin in x.y.z format.
Version must be three segments and each version component must be between 0 and 99.
Develop / Publish
mainstringPath to the your plugin initialization code. This can be a JavaScript file or an HTML file.Optional (defaults to main.js)
iconsIconDefinition[]Icons displayed in XD's plugins panel.
PNG, JPG/JPEG formats are supported and the max file size for each icon is 1MB.
Two sizes are required - 24px and 48px.
Note: Icons for XD's Plugin Manager are uploaded directly via the Adobe Developer Console, not included within your plugin itself. See our "Publishing your plugin" guide to learn more.
hostHostDefinition\|HostDefinition[]Describes the supported applications that can be used with this plugin. This can include the type of application, the minimum required version, or the maximum version of the host app that the plugin supports.

Note: An array can ONLY be used during development. A single definition will be needed when submitting to the marketplace
Develop / Publish
entryPointsEntryPointDefinition[]Describes the entries your plugin adds to the Plugins menu & plugin panel. See the next section for details.Develop / Publish


Icons are not required during development, but must be provided when distributing through the Plugin Marketplace. The icons field is an array of a IconDefinitions.


widthnumberWidth in logical pixels. For XD, use 24 or 48.
heightnumberHeight in logical pixels. For XD, use 24 or 48.
pathstringPath to the icon (relative to the plugin root)
scalenumber[]Array of scales provided. For example, [1, 2] means that there is a @1x and @2x version of the icon specified at the path. (Densities can be specified by adding @1x or @2x before the icon's extension. Note that the filename in the path key does not include a density specifier.)
themestring[]Array of themes this icon supports. XD doesn't yet support themes, so you can remove this key, or you can use all. (Default is all).
speciesstring[]Identifies the type of icon and where it would make sense to display it. The default is generic, meaning that XD is free to use this icon anywhere. For XD panels, you should generally use pluginList -- this tells XD that the icon is suitable for display in the Plugins Panel.


The host field is an object matching the HostDefinition format specified below. This entry allows your plugin to specify which app your plugin can run on such as Adobe XD or Photoshop. During development, the field can contain an array of HostDefinition's. This can be very convient during development of cross-compatible UXP plugins. However, during submission to the marketplace, only one HostDefinition is allowed.


appstringIndicates the supported application for this plugin (currently, the only valid values here are "XD" and "PS").Develop / Publish
minVersionstringMinimum required version of the host app (in x.y format) that can run this plugin. The lowest valid version for manifest V4 plugins is version 36.0.
Note: The version number must be at least two segments. Typically, you'll leave the minor segment set to 0, e.g. 36.0.
Develop / Publish
maxVersionstringMaximum version of host app that can run this plugin. Same formatting as host.minVersion.Optional

Entry Points#

The entryPoints field is an array of objects matching the EntryPointDefinition format specified below. These entries appear both in the Plugins menu in the native menubar, and the "plugin launchpad" sidebar panel. See Plugin menu structure for details on how these entries are displayed.

Each entry point specifies a type, to create either a direct-action command or a panel show/hide command.


typestringEntry point type: either "command" or "panel".
idstringUnique identifier for the entry point. This id will also be mapped to entrypoints defined in your plugin code.
labelstringLabel for this menu item that the user will select to run your plugin. May be a single string or a dictionary of localized strings.

Note: If you only have 1 commandId or panelId, the label value must match the manifest's name value. Additionally, the "Public plugin name" you submit via the Adobe Developer Console must match the manifest's name and label values.

Object defining Mac and Windows keyboard shortcuts for this menu item. See "Keyboard shortcuts" below for details. Only valid for command entry points.

Keyboard shortcuts#

Example: "shortcut": { "mac": "Cmd+Shift+P", "win": "Ctrl+Shift+P" }

Keyboard shortcuts are defined separately for each platform. Each definition is a string that follows this syntax:

  • One or more modifier keys, in any order, each one followed by "+"

    • Mac: modifiers may be Cmd, Ctrl, Opt / Alt, or Shift. Shortcut must contain at least one of Cmd or Ctrl.
    • Win: modifiers may be Ctrl, Alt, or Shift. Shortcut must contain Ctrl.
  • A letter or number key.

    • Letters are case-insensitive (e.g. "Cmd+P" and "Cmd+p" mean the same thing and neither requires pressing Shift).
    • Other keys (including punctuation, arrow keys, or F1-F12) are currently not supported.

Info If your shortcut collides with a built-in XD command or another plugin's shortcut, your shortcut will be ignored and you'll see a warning printed to the developer console.

Menu Localization#

Plugin menu item labels or panel labels can be localized to match XD's current UI language setting. Other manifest fields such as name cannot be localized yet.

Localized labels are represented as an object containing multiple translations, instead of a single string value:

Copied to your clipboard
1"label": {
2 "default": "Menu Label",
3 "fr": "Etiquette de Menu",
4 "de": "Menübezeichnung"

A default string is always required. The language must be a two-letter code from ISO 639-1, not a hyphenated code such as en-US. To avoid inconsistency with the rest of XD's built-in menu items, languages that aren't supported by XD are ignored.

Info You can also localize strings that appear in your plugin's own dialog UI, by choosing which strings to use in your UI based on the value of application.appLanguage.

  • Privacy
  • Terms of Use
  • Do not sell my personal information
  • AdChoices
Copyright © 2022 Adobe. All rights reserved.