Applying motion

Practical guidance for applying motion to components and experiences.

Using motion tokens

Use semantic motion tokens whenever you’re working with components that have similar behaviours and functions to the semantic categories defined in the system.

Start by identifying what the component is doing, then map that behaviour to the closest semantic motion category. Once you’ve found a match, apply the corresponding semantic token rather than creating something new. This keeps motion consistent across components that behave similarly and reduces the need for bespoke timing or easing decisions.

Diagram showing token structure, going from a Popup component to its state after an enter bottom transition.

These tokens map specific motion behaviors to component contexts, grouped by category.

Interactions

TokenComponent
motion.avatar.hoveredAvatar
motion.avatar.pressed

Transitions

TokenComponent
motion.flag.repositionFlag
motion.avatar.enterAvatar group
motion.avatar.exit
motion.blanket.enterModal
motion.blanket.exit
motion.flag.enterFlag
motion.flag.exit
motion.modal.enterModal
motion.modal.exit
motion.popup.enter.topPopup, Dropdown, Inline message
motion.popup.enter.bottom
motion.popup.enter.left
motion.popup.enter.right
motion.popup.exit.top
motion.popup.exit.bottom
motion.popup.exit.left
motion.popup.exit.right
motion.spotlight.enterSpotlight
motion.spotlight.exit

Composing custom motion

When making custom motion decisions, use durations, easing curves, and properties to build clear, human interactions that feel like Atlassian. Reach for semantic motion tokens first and check whether an existing token could work before composing something custom.

Interactions

List item hover, easing out practical, 50ms

Choosing duration

When interacting, users expect responsive, tactile results.

TokenValueUse for
motion.duration.instant0msInstant feedback (e.g. focus state)
motion.duration.xxshort50msHigh-frequency interactions (e.g. list item hover)
motion.duration.xshort100msSubtle pressed states, quick exits
motion.duration.short150msInteractive highlight (e.g. emphasised hover and pressed states)

Choosing an easing curve

At interaction-scale durations, easing differences are subtle but still matter. Use practical curves as they provide natural deceleration without the dramatic character of bold curves.

Use motion.easing.out.practical (cubic-bezier(0.4, 1, 0.6, 1))

Animating different properties

Interactions should use the simplest properties that communicate the state change. At the interaction level, simplicity reads as speed.

Color

The most common interaction property. Used for hover backgrounds, selected states, and active indicators.

Fade

Useful for showing and hiding state changes.

TokenValueUse for
motion.keyframe.fade.in0-100%Hover reveal
motion.keyframe.fade.out100-0%Hover exit

Transitions

Entrances and exits

Entrances and exits are not symmetrical. Entrances orient the user to new content and establish context, while exits confirm a dismissal and clear the way for what's next.

A Spotlight scaling down and to the right from the direction of its trigger on the top right.

Do

Open and exit elements from where they belong. A Dropdown should open from its trigger, and a dismissed panel should exit in the direction it entered.

A Spotlight scaling up and to the left from the direction of its trigger on the top right.

Don’t

Don't have elements appear or disappear from disconnected locations. It breaks the user's sense of where things came from.

Two navigational panels sliding in horizontally from the edge of the UI.

Do

Use the same entrance and exit pattern for similar components. Consistency helps users build a mental model and reduces cognitive load.

Two navigational panels, one sliding in horizontally from the left edge of the UI, one sliding in vertically from the top of the UI.

Don’t

Don't use different entrance or exit motion for components that play the same role. It forces users to relearn each interaction.

Entrances demand attention

Use a bold easing curve with a duration that gives the eye time to track the element.

Flag entrance, easing out bold, 250ms

Exits should be implied

Exits should be shorter, faster, and less dramatic. Use a practical easing curve and reduce the duration by 50ms or 100ms compared to the entrance.

Flag exit, easing in practical, 200ms
ComponentExit tokensEntry tokensDifference
Dropdown
motion.duration.shortmotion.easing.out.bold
motion.duration.xshortmotion.easing.in.practical
Entrance orients the user to options, exit follows their selection
Flag
motion.duration.longmotion.easing.out.bold
motion.duration.mediummotion.easing.in.practical
Needs to appear quickly and dismiss without lingering
Modal
motion.duration.longmotion.easing.inout.bold
motion.duration.mediummotion.easing.in.practical
Entrance establishes context, exit is a user-initiated dismissal

Choosing duration

Duration should match the interaction's frequency and the element's visual weight.

TokenValueUse for
motion.duration.xshort100msSubtle pressed states, quick exits (e.g. Popup exit)
motion.duration.short150msInteractive emphasis, small entrances (e.g. Popup enter)
motion.duration.medium200msMedium exit transitions (e.g. Modal exit, Flag exit)
motion.duration.long250msMedium entrance transitions (e.g. Modal enter, Flag enter)
motion.duration.xlong400msLarge transitions (e.g. page-level transitions)
motion.duration.xxlong600msLarge transitions (e.g. onboarding steps, full-screen overlays)
A focus on the first list item appearing immediately on the trigger of a lozenge dropdown.

Do

Move focus and trigger screen-reader announcements at the start of the animation so assistive technology users aren't left behind.

No focus on the first list item appearing immediately on the trigger of a lozenge dropdown.

Don’t

Don't land focus or announcements only after motion finishes. It creates a lag between visual and assistive feedback.

Validation text appearing without delay when password requirements aren’t met in a text field.

Do

Show errors, confirmations, and focus indicators without delay so users always know the system has responded.

Validation text fading in with delay when password requirements aren’t met in a text field.

Don’t

Don't gate critical feedback such as errors or focus states behind a slow entrance. It can leave users uncertain whether their action worked.

Choosing an easing curve

Easing gives motion feeling. Choose a curve that matches the element's intent.

TokenUse for
motion.easing.out.boldUse (decelerate in) to grab attention with a fast start and controlled landing
motion.easing.in.practicalUse (accelerate out) to get out of the user's way quickly
motion.easing.inout.boldUse for repositioning or scaling to maintain a sense of intentional energy

As a general rule, entering elements use ease-out (decelerate in), exiting elements use ease-in (accelerate out). For elements that transform in place, such as those that have transitions with repositioning or scale, use ease-in-out.

Animating different properties

Different visual properties communicate different meanings. Choose the property that best reinforces function and context.

Fade

Appearing or disappearing without spatial movement (for example, tooltips, skeleton-to-content swaps).

TokenValueUse for
motion.keyframe.fade.in0-100%Element appearing (e.g. Tooltip)
motion.keyframe.fade.out100-0%Element disappearing (e.g. dismissed message)
Slide

Directional entrance or exit (for example, Flag slide-in, Dropdown open).

Scale

Growing emphasis or shrinking dismissal (for example, Modal or Spotlight entrance).

TokenValueUse for
motion.keyframe.scale.in.small95-100%Modal or Spotlight entrance
motion.keyframe.scale.out.small100-95%Modal or Spotlight exit
Color

State change or selection feedback (for example, lozenge change).

Combining properties

Combine properties sparingly. Typically, aim for one or two properties per transition.

A success Flag sliding in with a fade, showing combined opacity and translation.

Do

Fade and slide for directional transitions. Combining opacity with translation creates a clear spatial relationship, like a Flag sliding in or a Dropdown opening.

A success Flag animating with multiple properties at once, creating visual noise.

Don’t

Don't animate too many properties at once as it creates visual chaos. Stick to one or two properties per transition to maintain clarity.

A side panel sliding out via transform, leaving the layout intact

Do

Animate transform and opacity. Use GPU-composited properties like transform and opacity so motion stays smooth on low-end devices.

A panel resizing via width animation, forcing layout reflow on each frame

Don’t

Don't animate layout-triggering properties. Avoid animating width, height, or top. They trigger layout work on every frame and cause stuttering on older hardware.

Tooling

Figma

Use Figma for simple flows and basic prototyping. ADS components do not yet support motion in Figma. Figma supports basic prototyping (flows, transitions), however, it does not yet support motion variables.

Replit

Use Replit to see representative component behaviour, complex motion, multi-step interactions, performance checks, and custom behaviour that is hard to validate in Figma. Atlassians can use internal motion tools to experiment with token values, compare options, and validate behavior beyond what's possible in Figma.

Experimental references

You can use north-star tokens as experimental references for your work. These are not official system tokens but represent explored guidelines.

Was this page helpful?
We use this feedback to improve our documentation.
  • Design system
    • What's new
    • Get started
    • Foundations
    • Components
    • Patterns
    • Tools
    • Release phases
    • Contact us
© 2026 AtlassianTrademark, (opens new window)Privacy, (opens new window)License