Each widget must define a
manifest.json file. If you use the "Create new widget" option, Figma will automatically create a simple manifest for you.
Here’s an example of a widget manifest file:
This file is similar to the plugin manifest with the additional
widgetApi properties and without plugin-specific options like menus or relaunchButtons.
"editorType": ["figma", "figjam"],
The name of the widget, as it will appear in the menu.
The widget ID to publish updates to. This ID will be assigned to you by Figma and is typically obtained using the "Create new Plugin" feature, which will generate a manifest file with a new
id. You can also get a new plugin ID at the time of publishing your plugin.
The version of the widget API used by the widget. The current widgetApi version is
"1.0.0". In the future, when there are more versions of the widget API, this will be used to ensure stability across widget versions. See Stability and Updates for more information about updates to the api.
We recommend updating to the latest version whenever possible to get the latest features, bug fixes, and documentation.
All widget manifests should have this set to true.
This allows you to specify the editor that your widget is intended for and will impact which editor your widget appears in.
The types we support currently are:
"editorType": ["figma", "figjam"]
Used to specify HTML file/files that can be used in the iframe modal via
figma.showUI, if you choose to have one.
- If a map is specified, each entry of the map will be available at
Experimental! A shell command to run before we load the file specified in
ui. This can be used to call build commands such as compiling with Typescript, running Webpack, etc. The command is run in the directory of the manifest.
Here are some plugin specific manifest options that are also applicable to widgets:
The version of the Figma Plugin API used by the widget. We recommend updating to the latest version whenever possible to get the latest features, bug fixes, and documentation.
This allows you to specify what permissions your widget wants access to.
type PermissionType =
activeuser must be specified if your widget uses
currentuser must be specified if your widget uses
See Plugin Proposed API.
This flag is only meant for development, and will not work in published widgets!
This enables Plugin API that's specific to private widgets. Setting this will also enable local widgets to work with these APIs during development.