Inter Plugin Communication

UXP allows communication between plugins installed within the same application

This feature is handy when you know another plugin already automates a specific task; in such cases, you can invoke it instead of duplicating the effort. To provide the best user experience, ensure your plugin clearly communicates such dependencies.

Overview

The Plugin Manager module provides the necessary APIs to establish the connection. Before diving into an example, make sure you're familiar with the following topics:

Additionally, you will need to have a basic understanding of the plugin you are going to communicate with, which includes:

  • The plugin's id and entrypoints
  • The structure of arguments to be passed, if applicable.

Implementation

We’ll refer to the two plugins as Requester and Responder.

Requester

This is the plugin that will initiate the communication with the Responder. It must have the enablePluginCommunication permission set to true in the manifest.json file.

Copied to your clipboard
{
// ...
"requiredPermissions": {
"ipc": { "enablePluginCommunication": true }
}
// ...
}

Through the pluginManager module, the Requester plugin can get a list of all installed plugins in Premiere and find the Responder plugin by its id (which must be known in advance).

Copied to your clipboard
const { pluginManager } = require("uxp");
const allPlugins = pluginManager.plugins;
const responderPlugin = Array.from(allPlugins)
.find(plugin => plugin.id === "Test-responder"); // 👈 Responder id

When you've stored a reference to the Responder plugin, you can invoke its command entrypoints using the invokeCommand(), or request to show its panel using the showPanel() methods. Pass the id of the entrypoint you want to invoke or show.

Copied to your clipboard
responderPlugin.invokeCommand("simpleCommand");
responderPlugin.showPanel("simplePanel");

Responder

This is the plugin that will receive the communication from the Requester plugin. It does not need additional manifest permissions, but the command entrypoints the Requester will invoke must be exposed in the manifest.json file.

Copied to your clipboard
{
// ...
"entrypoints": [
{
"id": "simplePanel",
"type": "panel",
"label": { "default": "Main Panel" },
// ...
},
{
"id": "simpleCommand",
"type": "command",
"label": { "default": "Simple Command" }
},
{
"id": "commandWithInput",
"type": "command",
"label": { "default": "Command With Input" }
}
],
// ...
}

The commands should also be implemented in the index.js file. For more information, please refer to the Add Commands tutorial.

Example

In this example, the Requester plugin implements a button that will initiate three requests to the Responder plugin:

  • show the Responder's panel
  • invoke the Responder's simpleCommand entrypoint
  • invoke the Responder's commandWithInput entrypoint, with an input payload

The Responder plugin will log the requests in the panel's body.

Inter Plugin Communication

Requester code

Copied to your clipboard
<!DOCTYPE html>
<html>
<head>
<script src="main.js"></script>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<sp-heading>Requester Plugin</sp-heading>
<sp-divider></sp-divider>
<div class="main-div">
<sp-body id="plugin-body">
<sp-button id="btnCommunicate">
Communicate with Responder Plugin
</sp-button>
</sp-body>
</div>
</body>
</html>

Responder code

Copied to your clipboard
<!DOCTYPE html>
<html>
<head>
<script src="main.js"></script>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<sp-heading>Responder Plugin</sp-heading>
<sp-divider></sp-divider>
<div class="main-div">
<sp-body id="plugin-body"> </sp-body>
</div>
<footer>
<sp-button id="clear-btn">Clear messages</sp-button>
</footer>
</body>
</html>

Additional notes

  • You may not see any error if the entrypoint is not found. We recommend using plugin.manifest.commands and plugin.manifest.panels to select from the actual list of entrypoints. Users may have turned off a particular plugin via the Adobe Creative Cloud Desktop App. Before invoking it, check the plugin's availability by using plugin.enabled.
  • You cannot pass methods in the payload object.
  • Cross-application communication is not supported (e.g., Premiere to Photoshop).

Summary

Inter-plugin communication enables UXP plugins to invoke commands and show panels from other installed plugins within Adobe Premiere.

Key Concepts:

  1. Requester plugin: This plugin initiates communication and requires the enablePluginCommunication: true permission in manifest.json.
    • Plugin Manager: Use pluginManager.plugins to discover and reference other installed plugins by their id.
    • Communication methods: invokeCommand() to execute commands and showPanel() to display panels from the target plugin.
  2. Responder plugin: This plugin receives communication requests, exposes entrypoints in its manifest (no special permissions are needed), and implements the entrypoints in its code.
  • Privacy
  • Terms of Use
  • Do not sell or share my personal information
  • AdChoices
Copyright © 2025 Adobe. All rights reserved.