Plans for UXP in 2023
New features planned for UXP v7.0 and beyond.
This post is for developers using UXP to build for Photoshop and InDesign. If you’ve made a UXP feature request in the last two years, it might appear on the list below; read on to find out more about XMP support, user GUIDs, canvas APIs, TypeScript definitions, and more!
Did you know?
- In Photoshop, you can find new features and updates from UXP in the Photoshop release Changelog section
- You can now write and publish a UXP plugin with C++ capabilities (a “Hybrid UXP plugin”) in the Creative Cloud Marketplace. Download the UXP Hybrid plugin SDK to try it out, or read the docs.
- A detailed tutorial for WebView (inside a dialog or panel) is now available here and new WebView starter templates for Photoshop were added to UDT (UXP Developer Tool) v1.8.0.
UXP and UXP Developer Tool Roadmap for 2023
Get ready for a bunch of exciting features and enhancements in the UXP world this year! Here is a sneak peek:
Please note that the exact release dates depend on the host application’s release (and prerelease) schedule. For example, Photoshop and InDesign may pick up UXP 7.0 on different dates.
UXP updates by Version
Below are some details on UXP features by version.
UXP 7.0 has: Web Components, Spectrum Web Components (Beta), 2D Canvas APIs, ImageBlob, Support for HTML focusin and focusout events, and Additional enhancements
Future releases (UXP > v7.0) will have: UXP Scripting support for InDesign Server, UXP Plugins for InDesign, XMP Support, User GUID, and AI/ML APIs
Read on for the details!
UXP v7.0
Already available with Photoshop v24.4 (Beta) and soon to be integrated with InDesign (tentative July), UXP v7.0 has major updates and new features.
Web Components
Web Components let you define custom HTML tags to encapsulate reusable code and behavior. Get started by understanding the basics of web components.
The example below creates and uses a custom tag <hello-world> to print a ‘Hello World!’ greeting in a UXP plugin.
Pro tip: Use LitElement to create Web Components with minimal overhead.
Spectrum Web Components (Beta)
Along with the vanilla Web Components, UXP v7.0 also supports Adobe Spectrum Web Components (SWC). SWC is an open-source Adobe Spectrum-styled Web Components UI library.
In the beta phase, only a subset of the Adobe SWC is supported. Learn more about SWC in our docs.
2D Canvas APIs
You can now draw basic shapes in your plugin using the HTML Canvas APIs. Learn more about the web Canvas APIs and its support in UXP.
We are just getting started with Canvas APIs. There are more enhancements planned in the next releases of UXP. But please note that UXP will only support the ‘2D’ canvas. (Sorry, webGL fans, we recommend you use WebViews instead.)
Here’s an example of drawing a basic triangle.
ImageBlob
With UXP v7.0 you can create images in your plugin using uncompressed pixel-level data.
As we all know, images are made up of pixels. Each pixel represents a color that is defined using a color scheme such as RGBA. Once you have a group of pixels defined, you need a URL representing these pixels to set the src property of the HTMLImageElement.
ImageBlobs help you create these URLs. The following example illustrates the same. Read the docs to learn more about ‘Blob’ and ImageBlob in UXP.
Also, follow the example in our docs to combine the power of the UXP ImageBlob along with the Photoshop Imaging APIs to display a selected portion of the document in your plugin panel.
Other updates
This isn’t the full list! Check out the Photoshop release Changelog section to read about more updates including:
- Support for HTML
focusinandfocusoutevents - Enhancements to
FileandStreamingAPIs
Future releases (UXP > v7.0)
We plan to add new features and enhance existing ones for the rest of the year. Here’s how:
Exciting enhancements to InDesign UXP Scripting
Last year we unlocked the support for UXP Scripts in InDesign v18.0. With InDesign v18.4 (tentative release date — June) we plan to release the following set of enhancements.
- InDesign Server (IDS): UXP scripts will be able to take arguments and return value from/to the client.
- InDesign Cloud Service (IDCS) will support UXP scripting.
InDesign DOM APIs will no longer be available in the global scope. For example, to add a new document, you will need to require the ‘InDesign’ app module before accessing the DOM APIs.
Note: This may break your existing UXP scripts.
Additionally, you can choose a specific version of the DOM API.
Note: If you don’t specify the version, it defaults to the version available in the app.
Next, we have event-based scripts. You can build powerful event-based scripts that will execute only when the event occurs rather than being run by the user (from the Scripts Palette). Scripts will be able to listen to the application and document events, such as opening/creating a file, printing, and importing text and graphic files from a disk, via an eventListener.
Attach scripts to menus: InDesign menus (within panels, menu bar, etc) have actions associated with each menu item. These actions get triggered when the menu item is selected. You can now define a custom scriptMenuAction within UXP scripts and associate it with a menu selection. How exciting is that!
UXP Plugins for InDesign
Along with the support for UXP Scripts, you will be able to build and publish UXP plugins for InDesign. The tentative date is mid-July. Join InDesign’s prerelease program to build UXP plugins as soon as it’s available. (Note: If your application has been pending for these programs for more than a few business days, reach out to wwds@adobe.com.)
In the latter half of the year, you will also be able to create UXP Hybrid plugins (UXP plugins with C++ capabilities) in InDesign.
XMP Support
Adobe’s Extensible Metadata Platform (XMP) is a file labeling technology that lets you capture meaningful information such as title, description, searchable keywords, author, and copyright information in the file’s metadata. XMP APIs will allow you to read/write metadata into files easily.
User GUID
Something we are definitely considering for this year is providing user GUIDs to allow you to manage your plugin entitlements and licenses more effectively.
We are in the process of hashing out the details and will soon share more updates. Stay tuned.
AI/ML APIs
We are exploring AI/ML APIs that will help you unlock more workflows in Creative Cloud apps.
Further enhancements are planned for
- UXP Hybrid plugins to enable integration with Photoshop C++ plug-ins built using the Connection-SDK
- The support of static and local HTML in WebView (local file access)
- Adding more components to the supported Spectrum Web Components
- The support for animations and imaging in Canvas
UXP Developer Tool (UDT) updates
The much-awaited support for UXP Type declaration and Playground is planned for UDT v2.0.
The concept of Type declaration emerges from Typescript. As mentioned in their documentation, TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor. Type Declaration Files (aka “typings”) aid the plugin development process. A Typescript file has a .d.ts file extension that does not carry any business logic and its main purpose is to serve like an API doc. Read more about Type definitions here. Note that you don’t have to write your code in Typescript to make use of typings. Plain vanilla JavaScript too will work just fine with them.
All popular code editors such as Visual Studio code have integrated Typescript support. You may have to set up your project to import the typing but once done, it helps the code editor run validations on your code and notifies if it violates any rules.
The other big update coming soon is the UDT playground. You might be familiar with web/online code playgrounds such as JSFiddle or CodePen. UDT playground means to serve the same purpose. It aims to provide all the important configurations already set up for you so that you can try/test code quickly with minimum hurdles.
The next set of UDT updates will entail the support of UXP plugins in InDesign v18.5.
Afterward, we plan to work on improving the UXP Script workflow. You can build/debug scripts from the main Developer Workspace, just like with plugins.
Towards the end of the year, we have planned for some UI enhancements as well.
Take our survey and don’t forget to drop kudos to the UXP and InDesign engineering team for all their hard work!
Subscribe to our Creative Cloud Developer Newsletter to stay updated on UXP news.
