User Interfaces
Learn how to create beautiful and functional user interfaces for your UXP plugins
Overview
Every UXP plugin with a visual component needs a user interface. Whether you're building a simple dialog or a complex panel, UXP gives you multiple ways to create UI that looks and feels like a native part of Premiere.
UXP provides three approaches for building user interfaces:
- Standard HTML Elements: familiar web technologies with custom styling.
- Spectrum UXP Widgets: built-in, Adobe-styled components that work out of the box.
- Spectrum Web Components (SWC): modern Web Component library with Adobe's design system.
Recommended approach
Each technology has its strengths and you can mix and match them in the same plugin—although we recommend using Spectrum Web Components going forward for the most complete feature set and future support. Please read the Spectrum UXP Reference for more details.
Understand the Options
Before diving into the technical details, it's helpful to understand some key terminology:
- Spectrum: Adobe's open-source design language1 and guidelines that ensure consistency across applications.
- Web Components: A set of HTML5 technologies that let you create custom, reusable HTML elements.
- Adobe Spectrum Web Components (SWC): An open-source library of pre-built Web Components styled according to Spectrum design guidelines.
Standard HTML Elements
These are the familiar HTML elements you've likely used before: <div>, <button>, <input>, <img>, <dialog>, and more. They follow web standards and give you complete control over styling through CSS.
Copied to your clipboard<div class="container"><button class="primary-button">Click me</button><input type="text" placeholder="Enter text" /></div>
| Best for | Trade-offs |
|---|---|
Building highly customized interfaces that need match different design systems | Complex and expensive to implement |
UXP is not a browser
While UXP supports modern web technologies, it's not a full browser environment. Not all HTML elements, CSS properties, or JavaScript APIs available in browsers will work in UXP. Check the list of unsupported HTML elements and unsupported attributes for details.
Spectrum UXP Widgets
Spectrum UXP Widgets are built directly into the UXP platform. They provide ready-to-use, Adobe-styled components that automatically match Premiere's look and feel, including dark and light theme support.
Copied to your clipboard<sp-button variant="primary">I'm a Spectrum button</sp-button><sp-textfield placeholder="Enter your name"></sp-textfield><sp-checkbox>Enable feature</sp-checkbox>
These widgets are immediately available—no installation or imports required. Just use them like any other HTML tag.
| Best for | Trade-offs |
|---|---|
Quick prototyping, getting started with UXP, or when you want Premiere's native look without extra setup. | Limited number of components available. You can't customize their behavior beyond the provided API or easily inspect their internal structure. |
Spectrum Web Components (SWC)
Spectrum Web Components are Adobe's official implementation of the Spectrum Design System using modern Web Component standards. They offer the most complete feature set and the closest adherence to Spectrum guidelines.
To use SWCs, you need to install each component individually via npm or yarn and import it in your code:
Copied to your clipboardnpm install @spectrum-web-components/button@0.37.0npm install @spectrum-web-components/textfield@0.37.0
Version Requirement
For Premiere plugins, all Spectrum Web Components must be locked to version 0.37.0 for the time being. This ensures compatibility with the current UXP version.
Then import and use them in your JavaScript:
Copied to your clipboardimport '@spectrum-web-components/button/sp-button.js';import '@spectrum-web-components/textfield/sp-textfield.js';
Copied to your clipboard<sp-button variant="primary">I'm a SWC button</sp-button><sp-textfield placeholder="Enter your name"></sp-textfield>
| Best for | Trade-offs |
|---|---|
Production plugins that need the full range of Spectrum components, or when you need to inspect and debug component internals. | Requires Node.js, a package manager (npm/yarn), and a bundler (Webpack, Rollup, etc.) to build your plugin. |
You'll also need to enable SWC in your manifest.json:
Copied to your clipboard{"featureFlags": {"enableSWCSupport": true}}
Mix and Match
The best part? You can combine all three approaches in a single plugin. UXP seamlessly supports mixing HTML elements, Spectrum UXP Widgets, and Spectrum Web Components:
Copied to your clipboard<form><!-- Standard HTML element --><div class="section"><!-- Spectrum Web Component --><sp-banner><div slot="header">Welcome</div><div slot="content">This is a mixed UI example</div></sp-banner><!-- Spectrum UXP Widget --><sp-button variant="primary">Submit</sp-button></div></form>
This flexibility lets you use the right tool for each part of your interface.
Which Approach Should You Choose?
Your choice depends on your project requirements, timeline, and experience level.
Start with Spectrum UXP Widgets if you:
- Are new to UXP development
- Want to quickly prototype an idea
- Need a simple UI with standard components
- Prefer zero configuration
Use Spectrum Web Components if you:
- Are building a production plugin
- Need access to the full Spectrum component library
- Want to inspect and debug component internals
- Are comfortable with npm and build tools
Use Standard HTML Elements if you:
- Need highly custom UI components
- Have specific design requirements beyond Spectrum
- Are comfortable writing custom CSS
- Want maximum control over styling and behavior
For most projects, we recommend starting with Spectrum Web Components, and using standard HTML elements for very specific custom needs. UXP Widgets are still supported but may be deprecated in the future.
Creative Cloud Marketplace and Visual Language
You are free to use your own visual language in UXP plugins. At the moment, products sent for approval to the Creative Cloud Marketplace don't need to implement the Adobe Spectrum Design System, although we recommend it for consistency.
Best UX practices, as well as adherence to the Adobe Brand Guidelines, will be enforced during the approval process.
Working with JavaScript Frameworks
While vanilla JavaScript, HTML, and CSS are sufficient for many plugins, complex applications can benefit from modern JavaScript frameworks. UXP plugins work well with popular frameworks like React, Vue, and Svelte.
These frameworks help you manage complex state, create reusable components, and build more maintainable code. However, they require additional setup including Node.js, package managers, and build tools.
If you're already familiar with React or plan to build a complex plugin, check out the Using Spectrum with React guide for tips on integrating Spectrum components with React. The most popular approach is to use React Wrappers for Spectrum Web Components.
Reference Documentation
Ready to start building? Explore the complete documentation for each UI approach.
- Spectrum Web Components: full SWC component library and usage examples.
- Spectrum UXP Widgets: built-in widget reference and API documentation.
- HTML Elements: supported HTML elements in UXP.
- HTML Tags Reference: complete HTML tag documentation.
- Using Spectrum with React: integration guide for React developers (see also the Working with Bundlers section of the UXP Developer Tool documentation).
For practical examples and working code, explore the CSS Styling recipe to learn how to customize your plugin's appearance.

