Streamline UI Prototyping with Adobe XD Component States
Learn how Adobe XD Component States let you prototype hover, pressed, and disabled UI variations inside a single component, reducing file clutter and simplifying updates.
06 Mar 2026, 07:25 UTC

Problem: duplicated artboards lead to clutter and inconsistency
When designing interactive UI elements such as buttons, toggles, or input fields, designers often create separate artboards for each state (default, hover, pressed, disabled). This approach quickly fills the file with near‑duplicate copies, makes global edits tedious, and increases the risk of mismatched properties across states.
Thesis: Component States give a single source of truth for each UI element
Adobe XD’s Component States feature lets you define multiple visual variations inside one component. Editing the master component propagates changes to all states, while each state can override specific properties (fill, text, opacity, etc.). The result is a cleaner file, easier maintenance, and reliable prototyping.
Section 1 – Create a component and add states
- Select the object or group you want to turn into a reusable control.
- Right‑click and choose Make Component (or press Cmd+K/Ctrl+K).
- With the component selected, open the States panel in the Property Inspector.
- Click + State to add a new state; give it a descriptive name (e.g.,
Hover). - Edit the properties of that state directly on the canvas; only the changed attributes are stored as overrides.
- Repeat for as many states as needed (e.g.,
Pressed,Disabled).
Section 2 – Link states with interactions in Prototype mode
- Switch to Prototype mode (top‑right toggle).
- Select the component instance on the artboard.
- Click the interaction handle (the small circle) that appears on the right side of the component.
- Drag the handle to the target state (or to the same component to create a self‑loop).
- In the interaction dialog, choose the trigger (Tap, Drag, Hover, etc.) and set the action to Transition To the selected state.
- Adjust the easing and duration if you want a smoother animation.
Worked example – Button with four states
1. Draw a rectangle, add a text label, group them.
2. Make the group a component named BtnPrimary.
3. In the States panel add three states: Hover, Pressed, Disabled.
4. Edit each state:
Hover: change fill to#3b82f6(a slightly lighter blue).Pressed: change fill to#1d4ed8and scale to 95%.Disabled: set fill to#9ca3afand text opacity to 40%.
5. In Prototype mode, set a Tap interaction from the Default state to the Pressed state, with a While Hovering trigger to Hover and a While Not Hovering trigger back to Default. Add a Tap interaction from Default to Disabled if you want to simulate a disabled flow.
6. Click the Play button to preview. The button should change appearance as you hover, click, and disable it, all without leaving the component.
Trade‑off / limitation
Deeply nested components that each contain many states can increase the file size and slow down XD’s responsiveness, especially on machines with limited RAM. Moreover, a large number of states with vague names (State 1, State 2) makes wiring interactions error‑prone. Keeping the state count moderate and using clear, consistent naming (Hover, Focus, Error) mitigates these issues.
Actionable closing
Adopt Component States for any reusable UI control you plan to prototype. Follow these steps:
- Create the component once.
- Add only the states you truly need.
- Name each state descriptively.
- Wire interactions in Prototype mode using the appropriate triggers.
- Test the prototype on a target device or screen to verify the feel of transitions.
By keeping the component hierarchy shallow and the state list tidy, you maintain a fast, organized file while gaining the flexibility to showcase rich interactions.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.