Motion

motion-image

Motion should make Firefox feel faster, clearer, and more human. These principles help teams guide attention, preserve continuity, communicate system status, and add personality without compromising usability.

Motion brings clarity, continuity, and character to Firefox. Used well, it helps people understand what changed, where things came from, and what’s happening next.

 

Principle 1

Directional

Motion is primarily a navigational tool. It should help users understand where things come from, where they go, what changed, and how interfaces relate across states.

Guidance

  • Navigation transitions should preserve spatial relationships, such as panels sliding from their origin.
  • Button interactions should reinforce input -> response: press, feedback, result.
  • Feature callouts should animate from the UI element they reference, not arbitrarily appear.
  • Avoid motion that competes with primary tasks or distracts from content.

Stress test

  • Direction: Is the origin, path, and destination clear?
  • Continuity: Does the transition stay coherent between states, even when interrupted?
  • Purpose: Does the motion support the task rather than feel purely decorative?
  • Attention: Does it guide focus without competing with nearby activity?

 

Principle 2

Fast

Firefox is a tool for getting things done. Motion should never slow users down, distract from content, or add friction. Motion should feel immediate and efficient.

Guidance

  • Keep durations short and consistent, especially for frequent actions like opening, closing, and switching tabs, which should feel snappy and lightweight.
  • Prioritize perceived performance with instant feedback, even when work continues asynchronously.
  • Avoid layered or chained animations, and limit most interactions to one meaningful animated change at a time.
  • Make motion responsive to interruptions, rapid input, and repeated actions.
  • Use motion to clearly communicate system status, including loading, processing, and completed states.

Stress test

  • Responsiveness: Does motion respond immediately to input?
  • Efficiency: Does animation stay lightweight during repeated use?
  • Simplicity: Does motion let users act right away, without adding unnecessary steps, delays, or layers?
  • Resilience: Does animation remain responsive during rapid interaction?
  • Feedback: Is feedback communicated quickly, even when processing continues asynchronously?
Loading indicators

Visual cues showing content is loading or processing.

  • Consider a spinner animation affordance on anything that may run over 200ms.
  • Set a minimum time for loading indicator display times so that animations won't look like a quick confusing flash in case timing runs slightly over 200ms. We recommend 400ms minimum display time.

Don't show a spinner animation if the wait time for the action will be less than 200ms. Any animation under 200ms can be seen as a quick flash and potentially confuse users.

 

Principle 3

Personality

Motion should express Firefox's personality. It should feel fluid and quietly playful without compromising usability.

Motion should show up in subtle ways, in low-risk, low-frequency moments that reward interaction and make the product feel alive. When motion is used in this way, it’s called expressive motion.

Guidance

  • Use expressive motion in onboarding, empty states, and success states.
  • Icon and illustration animations can carry more personality than core UI transitions.
  • Custom easing curves may be used for icon and onboarding animations when appropriate to the animation's intent and context.
  • Loading states can introduce subtle liveliness, but should never feel slow or blocking.
  • Avoid overuse so delight doesn’t become distracting or annoying.

Stress test

  • Personality: Does motion add character without slowing the interaction?
  • Intentionality: Is expressive motion used selectively and purposefully?
  • Durability: Will the animation still feel appropriate after repeated exposure?
  • Refinement: Does the motion feel fluid and polished rather than attention-seeking?
  • Delight: Is delight expressed through subtle timing, easing, or choreography instead of excess movement?

 

Principle 4

Consistence

Motion should behave consistently across Firefox, using a shared system of timing, easing, and interaction patterns. A consistent motion language builds predictability, learnability, trust, and polish.

Guidance

  • Define a standard set of durations, such as fast, standard, and slow tiers.
  • Use consistent easing curves to similar interaction types. Reusable components should share motion curves where possible, while icon and onboarding animations may use custom context-specific motion.
  • Similar components should animate the same way across surfaces.
  • Establish patterns for enter and exit transitions, state changes, and feedback animations.
  • Avoid one-off animations unless they serve a clear, intentional purpose or offer opportunities of delight (e.g., a grid of cards with a bounce animation every time you reload the page would be an unnecessary one-off animation).
  • Motion may adapt to platform conventions and input methods while preserving core Firefox behaviors.

Stress test

  • Consistency: Does the motion behave consistently across similar Firefox interactions?
  • Timing: Are timing and easing aligned with established motion patterns?
  • System: Does the animation feel like part of the same motion system?
  • Necessity: Is new motion behavior introduced only when necessary?
  • Adaptability: Does the motion adapt appropriately across platforms while preserving familiar Firefox behavior?

Primary chrome easing curves

Firefox desktop chrome uses the Standard and Emphasized easing curves for most layout and interaction motion, including standardized UI components such as panels, hover states, and menu transitions.

These curves are intended for functional UI motion, not expressive animations. Custom icon and onboarding animations should use motion tailored to their specific context and purpose.

Motion timing by component type

When motion cannot reuse a standard component's timing, map the interaction to the closest family below for duration and easing. Each Duration cell lists an acceptable range in milliseconds.

Component family

Typical pace

Duration

Easing

Practice

Large spatial panels

Expressive open; slightly quicker close

Strip 160–200 ms; panels 190–230 ms; content fade 120–150 ms

Emphasized

Sidebar chrome, wide attached surfaces. Motion should explain where space came from; avoid snapping.

Small panels & menus

Medium-fast; exit can be a touch snappier than enter

Panel travel 120–150 ms enter / 100–130 ms exit; content fade 100–130 ms

Emphasized, with opacity

Dropdowns, app menu surfaces. Combine position or scale with opacity so content does not pop in unreadably.

Inline expansions

Short spatial pass; keep the chrome lightweight

90–110 ms (exit ~10–20 ms faster than enter)

Emphasized

Address bar results and similar strips. Structure and labeling matter more than the slide — never rely on motion alone for meaning.

Drill & layered navigation

Stagger enter/exit so parent and child stay legible

Slide in 185 ms; out 130 ms (sub), 150 ms (parent); fade 85–110 ms (faster than slide)

Emphasized (slide), Standard (fade)

Submenus and drill-ins. Fade the parent and child quickly; keep the slide slightly longer so the stack stays readable.

Toolbar & chrome hover

Fast; reads as immediate feedback

80–120 ms

Standard

Background fills on icons and controls following the pointer. Should not read as a separate “scene change.”

Dense list rows

Fastest hovers in the system

40–60 ms

Standard

Synced tabs, long result lists. Shorter than toolbar hover so rows do not smear while scrolling.

Icon press & micro-scale

Press ends sooner than release

Press 60 ms; release 100 ms

Standard

Reinforces click without lingering. Keep travel tiny.

Icon & illustrative motion

Long enough to read as delight; still bounded

Per phase 150–400 ms typical; expressive sweeps up to ~950 ms when bounded and non-blocking

Custom (see bookmark star)

Success feedback, micro-celebrations, and other icon-sized flourishes. Keep motion confined to a small region, skippable or non-blocking, and never the only signal for important state.

Confirmation toast

Wait for intent, then a light reveal

Delay 400–600 ms; reveal 100–150 ms

Standard

Confirmation toasts (e.g. bookmark saved) use a subtle, anchored reveal. Tab preview hover shares the same Standard easing and delay/reveal ranges.

 

Principle 5

Accessible

Motion should be inclusive by default, designed from the start to reduce discomfort and disorientation rather than relying on fallback settings like reduced motion.

Guidance

  • Avoid large-scale parallax, excessive zooming, sudden spatial shifts, or persistent ambient motion.
  • Favor opacity and subtle position changes over dramatic movement.
  • Keep motion predictable and tied to user actions.
  • Ensure essential information is available without motion.
  • Respect reduced motion preferences, but don’t rely on them as the only safeguard.
  • Test with a range of sensitivities and real-world scenarios.

Stress test

  • Comfort: Does the motion avoid sudden, excessive, or disorienting movement?
  • Predictability: Is the animation anchored to a clear user action?
  • Focus: Does the motion avoid sustained or competing visual activity?
  • Endurance: Does the movement remain comfortable during extended use?
  • Adaptability: Does the animation degrade gracefully when reduced motion is enabled?

WCAG criteria for animation and motion

WCAG success criterion for different animation criteria (from W3C.org):

Guideline 2.2 Enough Time

Provide users enough time to read and use content.

SC 2.2.2 Pause, stop, hide Learn more

For moving, blinking, scrolling, or auto-updating information, all the following are true:

Moving, blinking, scrolling

For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential.

Auto-updating

For any auto-updating information that (1) starts automatically and (2) is presented in parallel with other content, there is a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential.

Guideline 2.3 Seizures and Physical Reactions

Do not design content in a way that is known to cause seizures or physical reactions.

SC 2.3.1 Three Flashes or Below Threshold Learn more

Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds.

SC 2.3.3 Animation from interactions Learn more

Motion animation triggered by interaction can be disabled, unless the animation is essential to the functionality or the information being conveyed.

prefers-reduced-motion

Animated content can cause motion sickness and also be distracting. Users should be able to minimize animations. prefers-reduced-motion is a CSS media feature that can detect if a user has “reduced motion” settings enabled on their device so that developers can provide them an alternative CSS animation with reduced down motion. See Guideline 2.3 Seizures and Physical Reactions to learn more.

In Firefox, this setting is honored if (from MDN):

  • In GTK/GNOME: Settings > Accessibility > Seeing > Reduced animation is turned on.
    • In older versions of GNOME, GNOME Tweaks > General tab (or Appearance, depending on version) > Animations is turned off.
    • Alternatively, add gtk-enable-animations = false to the [Settings] block of the GTK 3 configuration file.
  • In Plasma/KDE: System Settings > Workspace Behavior -> General Behavior > "Animation speed" is set all the way to right to "Instant".
  • In Windows 10: Settings > Ease of Access > Display > Show animations in Windows.
  • In Windows 11: Settings > Accessibility > Visual Effects > Animation Effects
  • In macOS: System Preferences > Accessibility > Display > Reduce motion.
  • In iOS: Settings > Accessibility > Motion.
  • In Android 9+: Settings > Accessibility > Remove animations.
  • In Firefox about:config: Add a number preference called ui.prefersReducedMotion and set its value to either 0 for full animation or to 1 to indicate a preference for reduced motion. Changes to this preference take effect immediately.

Tools

Photosensitive Epilepsy Analysis Tool (PEAT)

A tool that helps to measure the effect of an animation on users with photosensitive epilepsy - PEAT. The Trace Center’s Photosensitive Epilepsy Analysis Tool (PEAT) is a free, downloadable resource for developers to identify seizure risks in their web content and software. It is especially helpful for borderline cases where an animation is larger/faster.