Motion

How to use motion to bring UI to life.

Overview

Motion brings UI to life and helps us to demonstrate cause and effect. It requires effort and thought to create a meaningful, well-designed experience.

At Octopus Deploy, we use motion to educate, improve time perception, and create emotional resonance. The diagram and table provide a high-level summary, and a more detailed explanation is below.

Motion Pyramid

Purpose

Description

Example

Education

Motion can be used as a method of teaching conceptual connections.

Select dropdown menu opening and chevron icon rotating upwards

Time Perception

Motion can improve perceived performance by reducing the user’s cognitive load by appearing seamless and responsive.

Loading, such as a Skeleton Screen

Emotional Resonance

Motion can reinforce successful user actions with subtle, rewarding feedback. It can make interfaces feel alive and responsive, helping build trust and emotional connection.

Our branded initial loading animation

Education

Motion can guide users’ attention and teach conceptual connections.

The visual feedback helps users understand the cause-and-effect relationship between actions and system responses.

Time Perception

⁠Motion can improve perceived performance by reducing the user’s cognitive load. It does this by preserving continuity, and keeping transitions smooth and responsive.

For example, a Skeleton Screen does this by hinting at the final layout during initial load to set expectations and indicate progress rather than appearing broken or stalled.

As a result, motion can help reduce user uncertainty and increase user trust and satisfaction.

Emotional Resonance

Motion can be both functional and delightful:

  • Functional motion is task-oriented and helps the user better understand the interface, which aligns with our first two reasons why we use motion: to educate and improve time perception.
  • Delightful motion focuses on user emotions, entertaining the user, and incorporating a brand’s values into a product.

What delight means at Octopus

Delight at Octopus means helping our users achieve their goals easily and efficiently, without unnecessary distractions. We do this by correctly understanding their intent and focusing on the moments that matter most.

Thoughtfully crafted motion plays a part by delivering experiences that feel effortless and complete. The smallest movements can create emotional resonance, not because they’re flashy, but because they make our product feel truly helpful.

Delightful motion can:

  • Elicit an emotive response by transforming ordinary tasks into moments of delight, such as a branded loader (see example below).
  • Make interfaces feel alive and responsive, helping build trust and emotional connection.
  • Create meaningful brand connection moments by showcasing the Octopus personality, making our brand more memorable to our users.
  • Encourage celebration by reinforcing positive moments.
Do

Our branded initial loading animation helps improve the perceived loading performance and keeps users entertained.

Other potential examples of delightful motion are:

  • Subtle animation to celebrate a successful deployment (possibly randomized instead of every deployment so that it doesn’t become tiresome, and instead is a rare moment of delight, such as Asana’s unicorn.)
  • Animated icon to support a pulsating new feature tag (see example below)

Use delight with caution

Delightful motion should never be used for critical or high-risk moments, because that will degrade the task’s severity or urgency and our customers will immediately lose trust in our product. Our customers trust us to support them during these moments.

Using motion for emotional resonance should be well-considered and used intentionally and sparingly to deliver the right impact.

Don't

Do not use delightful motion for critical or high-risk moments.

 


Motion design principles

Motion design principles are our guide for using motion at Octopus Deploy.

When our customers use our product, no matter what page they are on, every aspect of the product’s visual language should feel unmistakably Octopus. Motion is one aspect of this visual language.

Applying these principles makes sure our animations work cohesively with one another and within our broader design system. Motion is used consistently, where every movement clearly belongs together.

Motion design principle

Description

Simple

We use motion to support, not decorate. It clarifies, guides, or gives feedback. It should never be complicated or distracting.

Responsive

Motion should be fluid and timely. Elements are aware of each other, and their movements occur at the right moment, making the experience feel smooth and natural. The user should never wait longer than necessary.

Informative

Motion should be intentional. We use motion to educate our users by highlighting relationships between elements and communicating the status of actions.

Here are a few examples of our motion design principles in practice (note that some are illustrative and not yet implemented):

Do

Use motion to clarify, guide, or give feedback. It should have a clear, singular focus to highlight the current task or action effectively.

Don't

Motion should never be complicated or distracting. Avoid moving multiple main elements concurrently in different places, as this can cause ill effects for users.

Do

Motion should be fluid and timely. Elements are aware of each other and their movements occur at the right moment.

Don't

Do not use motion that causes the user to wait longer than necessary.

Do

Use motion to educate our users by highlighting relationships between elements and communicating the status of actions.

Don't

Do not use motion just for the sake of it. It should always be intentional.

 


Duration

The duration of each individual movement normally depends on an element's size and the distance it travels.

Duration values range from 100ms to 1000ms.

Micro vs Macro

Motion can be categorized as a micro- or macro-animation. The table provides a high-level guide, and a more detailed explanation is below.

Recommendations

Micro

Macro

Types of motion

Opacity (fade)

Position (move)

Position and opacity

Scale

Rotation

Color

Opacity (fade)

Position (move)

Position and opacity

Scale

Easing

All easing types, but the best default is ease-in-out

ease-out for entering and ease-in for exiting

linear for full-screen background overlays

Duration

Shorter duration

100–200ms

Longer duration

At least 200ms (100ms for background overlays)

Micro-animations take up a small amount of visual space and generally use subtle movements. They can help draw attention to individual elements or provide feedback on actions.

  • Examples include hover effects, tooltips, loading (such as a Spinner), and animated icons.
  • Smaller elements with small changes generally move faster.
  • Duration may also be influenced by the element’s purpose. For example, a Spinner and an Avatar’s hover transition both appear small, however a Spinner’s motion requires more time to communicate its intent of loading compared to a color change on hover.
  • While visually small, keep in mind that the engineering effort is not necessarily small.

Macro-animations are more pronounced and take up more visual space to move large areas of the layout, such as a Drawer or a full page transition.

In terms of duration, large and complex elements generally look better when the animation lasts longer.

Delays

Delay tokens are defined separately from duration tokens because a delay between animations is often much shorter than their duration. The animation-delay property specifies a delay for the start of an animation.

Delay values will vary depending on the use case, but will typically range from 10ms–20ms. We want to avoid long delays to ensure a snappy UI (following our Responsive design principle).

Occasionally we may require a longer delay, such as displaying a Skeleton Screen to reduce the user’s cognitive load and minimize big jumps in the page layout while loading content.

 


Easing

Easing allows us to create natural-looking motion that mimics movement in the real world. It’s all based on physics – objects accelerate when they start to move, and decelerate when they stop.

We use standard cubic-bezier easing with the following types:

  • Ease In Out
  • Ease Out
  • Ease In
  • Linear

The diagram below compares two cubic-bezier graphs. The left graph has no easing applied (linear), while the right graph is set to ease-in-out.

easing diagram

Ease In Out

Best used for elements visible from beginning to end, such as those that change color, size, or position. The most common type of easing, ease-in-out uses an accelerate/decelerate curve, so it’s a good default to use when in doubt.

Easing type

ease-in-out

Easing graph

ease-in-out

Motion comparison: Ease In Out vs Linear

Usage

Elements visible from beginning to end, such as those that change color, size, or position.

Examples

Chevron icon rotates 90 or 180 degrees

Colour changes on hover state

Tabs, where the selected underline moves upon selecting a different tab

Recommended duration

100–300ms

Ease Out

Best used for elements that start out of view and then enter the screen with movement, ease-out uses a decelerate curve.

Easing type

ease-out

Easing graph

ease-out

Motion comparison: Ease Out vs Linear

Usage

Elements that start out of view and then enter the screen with movement.

Examples

Checkbox or Radio is selected

Select dropdown menu opens

Dialog opens

Snackbar appears

Recommended duration

100–200ms

Ease In

Best used for elements that start in view and then exit the screen with movement, ease-in uses an accelerate curve.

Easing type

ease-in

Easing graph

ease-in

Motion comparison: Ease In vs Linear

Usage

Elements that start in view and then exit the screen with movement.

Determinate loaders that start as empty, then fill up until the data finishes loading.

Examples

Checkbox or Radio is deselected

Select dropdown menu closes

Progress Bar fills up (variable duration)

Recommended duration

100–200ms

Linear

Use only for changing opacity. linear uses the same speed from start to finish and is not appropriate for movement as it appears unnatural to the human eye.

Easing type

linear

Easing graph

linear

Linear motion

Usage

Elements that start in view then disappear by changing opacity.

Examples

Background overlay appears or disappears

Dialog disappears

Snackbar disappears

Recommended duration

100–200ms

Animated representations of each easing type are sourced from Easing Wizard.

 


Types of motion

These are the basic building blocks for motion. They can be used alone, or combined to create more complex animations.

Enter and exit

Used to introduce and dismiss elements.

Pattern

Description

Recommended easing type

Example

Opacity (fade)

Simplest and most subtle way to reveal or hide elements.

linear

Background overlay appears and disappears

Position (move)

Grabs attention when hiding or revealing elements.

Entry: ease-out

Exit: ease-in

Select dropdown menu opens and closes

Position and opacity

Calls more attention to an entering element than just opacity alone, and is less harsh than position alone.

Position: ease-out

Opacity: linear

Dialog opens

Scale and opacity

Creates more interest for an entering element than just opacity alone.

Scale: ease-out (entry) or ease-in (exit)

Opacity: linear

Help panel in Onboarding Dialog

Transform

Allows elements to move and change.

Pattern

Description

Recommended easing type

Example

Position (move)

Elements move to accommodate changes in content.

ease-in-out

Filter tags move left to fill the space after one is dismissed

Rotation

Shows change in direction.

ease-in-out

Chevron icon rotates

Scale

Elements change size along the x and/or y axis, to accommodate more or less content or adjust to a new layout.

ease-in-out

Showing or hiding filters in a new column, which pushes other content to the side

Color

Communicates a hover, focus, or active state.

linear

Button color changes on hover

 


CSS Transition vs Animation

Motion can be defined in CSS in two different ways:

  • CSS transitions are generally best for simple from-to movements. They use the transition property to change property values smoothly over a given duration.
  • CSS animations are for more complex series of movements. They use the animation property to let an element gradually change from one style to another.

Here's a brief overview of their differences:

CSS Transitions

CSS Animations

Best for creating a simple change from one state to another

Best for creating a complex series of movements

Can only move from initial to final state - no intermediate steps

Can move from initial to final state, with intermediate steps in between

Can only run once

Can loop infinitely with the animation-iteration-count property

Require a trigger to run (like mouse hover)

Can be triggered but can also run automatically

Run forwards when triggered and in reverse when trigger is removed

Can run forwards, in reverse, or alternate directions

Easier to trigger from JavaScript with simple state changes

More setup required with JavaScript, but better for multi-step or looping motion

 


Accessibility And Reduced Motion

Accessibility

Many types of animated effects are likely problematic for people with motion sensitivity. For some, motion can trigger physical reactions like seizures, migraines, nausea, and dizziness. It can also negatively affect cognition and concentration.

The following guidelines help us design motion that is safe for our audience and won’t cause unintended harm.

Minimize flashing

Flashing can cause seizures in those who are photosensitive. Avoid flashing colors and use appropriate transition patterns instead of instant jump cuts.

Avoid autoplay

Non-essential animations shouldn't play or loop for longer than five seconds without controls to pause, stop, or hide them. Avoid auto-scrolling carousels and auto-playing videos.

Other best practices

  • Avoid bouncing animations
  • Avoid animations that move an object across a large space, such as a full-screen wipe transition covering the entire screen. The physical screen size matters less than the size of the motion relative to the screen space available.
  • Avoid horizontal scroll while users are scrolling vertically
  • Avoid moving elements at different speeds, such as the parallax effect
  • Make sure animations don't interfere with screen magnifiers

Reduced motion

Reduced motion involves removing all heavy motion effects from the product to accommodate users who suffer from motion sensitivity. The prefers-reduced-motion media query can be used to replace motion effects.

Larger movements

Large page transitions, or movements such as a Snackbar or Dialog sliding in, should be replaced with a simple 200 ms opacity fade.

Automatic scrolling

Smooth scrolling effects should be replaced with the default browser anchor link behaviour.

Non-essential animated illustrations

A non-essential animated brand illustration should be replaced with a static version.

 


Performance and loading times

One of the core reasons we use motion is because it can improve perceived performance, as mentioned above in Time Perception. Perceived performance refers to how fast or responsive a website or app feels compared to how fast or responsive it is, as reported by metrics.

However, the excessive use of animations or complex motion can potentially impact performance and loading times. It may lead to slower interactions and increased resource consumption, negatively affecting the overall user experience.

Spinning fans, hot battery, and a blank or unresponsive page are all hallmarks of the browser struggling to render a requested page. When things go awfully wrong like this, our brand perception, as well as our customers’ trust in our product, are already negatively impacted.

Ways to manage performance when using motion

  • Use caution when using motion for actions that people perform most frequently. Users especially notice delays when performing routine, quick tasks.
  • JavaScript is the most resource intensive asset; the less we use it, the more we limit potential speed and UX issues.
  • Reduce and optimize script resources to prevent the signs of intensive processing and reduce the possibility of delays. We can use Interaction to Next Paint and Total Blocking Time to quantify and track these efforts.
  • Minimize layout and repaints. Modern browsers can animate four things really cheaply: position, scale, rotation, and opacity.
  • Use tools to identify animation performance issues.

 


Other documentation that will help guide your thinking when working with this UI pattern.