While I’m aware that UXP Hybrid Plugins (C++) is on the roadmap for InDesign development, it sounds like this is still a ways off. I decided to start a topic to gather some of the main reasons I believe this should be top-priority for the InDesign team as this is preventing a lot of teams from migrating from CEP extensions to UXP plugins or from C++ plugins to UXP plugins.
Reason #1: CLI Access
A few months ago, we released Bolt UXP, a framework for accelerating UXP development, and while Bolt ships with templates and pre-signed binaries for UXP Hybrid plugins, these only work in Photoshop currently, not InDesign. One of the big reasons we ship this Hybrid Plugin option is for the execSync()
function, which gives developers access to the command line like Node.js did in CEP panels, since UXP does not expose this. ( more on the evolution of this request from my initial request for CLI access back in 2019 )
Why is CLI access important for extensions/plugins? Lots of our tools rely on standalone binaries such as FFMPEG/Jimp/OpenCV to achieve tasks not possible in native plugin languages. Additionally, many developers opt to store their licensing frameworks in an external binary for security. Without CLI access of some sort, countless tools simply cannot be ported to UXP.
In Photoshop we were able to build a workaround for this with UXP Hybrid Plugins, but since Hybrid Plugins are not yet in InDesign, developers building for InDesign cannot take advantage of this workaround yet.
Reason #2: App C++ APIs
Many developers have opted for building C++ plugins rather than CEP extensions / ExtendScript scripts simply because certain API Methods only existed in the C++ APIs and not in the JS APIs. UXP Hybrid Plugins however has a nice solution for this, in that we can opt to build our plugin logic and UI in JavaScript, and reach out to C++ in a Hybrid Plugin to access these APIs, getting the best of both worlds: the speed of development from JavaScript, and the full flexibility of C++ and an app’s C++ APIs.
This is currently possible in Photoshop, but again not yet in InDesign as Hybrid Plugins are still pending.
Reason #3: C++ Only Functions
Finally, certain functions such as computationally heavy tasks make much more sense to accomplish in a lower level language like C++, rather than a higher level language like JavaScript.
This is one of the main advertised features of UXP Hybrid Plugins, yet again isn’t yet available in InDesign.
Summary
This conversation has been on-going for some time, but was recently sparked after speaking with InDesign developers at CreativePro Week’s Creative Developer Summit 2024. While many dev teams are interested in migrating to UXP and would like to take advantage of the benefits of a JavaScript UI with a C++ backend via UXP Hybrid Plugins, migration to UXP simply isn’t an option until C++ Hybrid Plugin capabilities are implemented for the reasons mentioned.
To the Adobe InDesign Team:
I would highly recommend bumping UXP Hybrid Plugins priority to top of the list in order to get faster and more widespread adoption from the developer community.
To InDesign Plugin Developers:
If you have project examples to add to the conversation, please share below to further illustrate why UXP Hybrid plugins are a requirement for migration in many scenarios.