Hybrid Plugins
Extend your UXP plugins with the power of C++ native libraries.
Overview
A UXP plugin can provide extensive functionality using JavaScript, HTML, and CSS. However, situations can arise where the UXP runtime cannot address specific programming needs—for instance, performance-critical computation or integration with existing native codebases. For these scenarios, UXP offers Hybrid Plugins.
A UXP Hybrid plugin is a standard UXP plugin that can load dynamically-linked shared objects written in C++. The concept is similar to C++ addons in Node.js: compiled native libraries are loaded at runtime via the require() function, just like any other JavaScript module.
Copied to your clipboardconst addon = require("sample.uxpaddon");
The loaded addon exposes C++ functions and properties directly to your JavaScript code, enabling seamless two-way communication between the two environments.
Building Hybrid plugins requires proficiency in C++. Make sure you also have experience writing UXP plugins and are comfortable using the UXP Developer Tool before diving in.
Use Cases
- Performance-intensive audio/video processing: offload computationally expensive operations (custom waveform analysis, frame-level pixel manipulation, audio DSP algorithms) to native code while keeping the UI and orchestration logic in JavaScript.
- Integration with C++ libraries: leverage established native libraries such as OpenCV, TensorFlow Lite, or custom in-house codecs directly from your plugin.
- Metadata processing at scale: perform batch XMP operations or custom metadata schema transformations that would be too slow in pure JavaScript.
- Bridging to external native pipelines: connect to hardware SDKs, proprietary encoding pipelines, or platform-specific system APIs that are only available via C/C++.
Minimum Requirements
| Component | Minimum Version |
|---|---|
Premiere | 26.2 |
UXP Developer Tool (UDT) | 2.2 |
Creative Cloud Desktop | 5.10 |
The UXP Hybrid Plugin SDK
Download
Download the UXP Hybrid Plugin SDK from the Adobe Developer Console (if you get "Access Denied", see this FAQ). Unpack the contents and read the included README.md for platform-specific build instructions.
SDK Contents
The SDK provides C++ headers, utilities, and templates for building native addons (called uxpaddons). Its API surface is intentionally similar to Node-API—if you're familiar with Node.js native addons, you'll feel right at home.
| Folder | Contents |
|---|---|
src/api | UxpAddonTypes.h — fundamental data types (opaque abstractions consumed by the SDK APIs). UxpAddonShared.h — the full addon API surface, closely mirroring Node-API. |
src/utilities | Utility classes with common helpers. UxpAddon.h — provides the UXP_ADDON_INIT and UXP_ADDON_TERMINATE macros for registering initialization and termination routines. |
template/template-dev | Source code for a minimal addon example—use it as a starting point for your own plugin. |
template/template-plugin | A pre-compiled Hybrid plugin ready to load in UDT. |
Releases
The SDK is versioned independently from the host application (it is labeled with a UXP version, since Hybrid plugins are designed to be app-independent). Announcements of new SDK releases are made in the Changelog. Updating to a new SDK version requires recompiling and republishing your plugin; however, plugins built with an older SDK remain forward-compatible with newer host application versions.
Next Steps
Ready to build? Head over to Building Hybrid Plugins for the complete development guide—from compiling your first uxpaddon to packaging and distributing the finished plugin.
