A specification of component interaction behaviour
An interaction spec is the documented behaviour of a component: its states, its transitions, its motion timing, its keyboard support, its focus handling. It captures what a button or a menu does, as distinct from what it looks like. The tension it resolves is the gap a static mockup leaves open. A pixel-perfect design says nothing about what happens on hover, how long the menu takes to open, which key closes it, or where focus lands afterwards, and an engineer who is not told will guess. The spec is the contract that closes that gap before it becomes a bugBugProduct SpecificationA defect or unexpected behaviourView reference →.
The needNeedUserA user need, pain, desire, or constraintView reference → grew with the design-to-engineering handoff. As design systemsDesign SystemDesign SystemThe root design system entityView reference → matured, teams found that handing over visuals was not enough; the behavioural detail had to travel too. Mature systems now document each component's full state set, default, hover, focus, active, disabled, error, plus the transitions between them and the motion values that govern them, timing and easing, so an animation is specified as "200ms ease-out" rather than left to feel.
The accessibility dimension turned this from good practice into a requirement. The W3C's ARIA Authoring Practices Guide enumerates, for each common widget, the keyboard commands and focus behaviour expected of it, because browsers give ARIA widgets no keyboard support for free; authors must build it. A combo box or a dialog has a defined set of key bindings and a defined focus order, and the interaction spec is where a team records which pattern a component follows and how it meets it.
A team specs a dropdown menu. The spec states it: opens on click or Enter, closes on Escape, moves the highlight with the arrow keys, wraps at the ends, and returns focus to the trigger on close. Motion is 150ms ease-out on open, 100ms on close. The focus ring is the system focus token, never suppressed. An engineer builds against this without asking, and a tester checks against it without inventing pass criteria. When a later redesign tries to swap the open animation for a 400ms bounce, the spec is the record that says the agreed value was 150ms, so the change is a decisionDecisionStrategyA recorded decision with context, rationale, and consequencesView reference → rather than a drift.
In the Unified Product Graph, an interaction spec sits in the Experience, Design & Brand region as a leaf attached to its component by a Design Componentspecified byInteraction Spechierarchy edge. Holding behaviour in a node of its own, rather than burying it in a component's free-text description, makes the design-to-engineering contract explicit and checkable: a component with a populated visual definition but no linked spec is an object whose look is agreed and whose behaviour is not, which is exactly the gap that produces guessed transitions and missing keyboard support downstream.design_component_specified_by_interaction_spec
Type-specific fields on BaseNode
triggerstringTriggering event
animation_typestringAnimation or transition kind
duration_msnumberDuration in ms
easingstringEasing (e.g. "ease-in-out", "spring")
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases — initial: draft · template: PUBLISHING
1 edge type connected to this entity.
design_component_specified_by_interaction_spec