Prepared Docs

Prepared Docs

⌘K

    Loading navigation…

User

  1. Primitives
  2. Animated Number
  3. Accessibility

Animated Number

Accessibility

Role and semantics

AnimatedNumber renders as an inline span with numeric typography. It is not a heading and must not replace semantic structure provided by parent components such as MetricCard. The NumberFlow visual custom element and the static non-finite visual string are hidden from assistive technology; the formatted screen-reader layer is the single semantic source.

Motion

When the user prefers reduced motion, values snap to the target with no NumberFlow transition. Do not bypass this by forcing non-zero durations in product code.

Locale or format-option changes also snap to the newly formatted target on that render. Digits must not spin from a stale display value through the new format.

Live regions

liveBehavior
OffNo live region; visual change only.
PoliteAnnounces the localized announcement after NumberFlow animations finish. Skips first paint and entrance animations.

Delta magnitudes on MetricCard must not use polite live; direction semantics belong in the delta label exposed to assistive technology.

Visual fades

NumberFlow applies a persistent parent-edge alpha mask during digit motion. Settled glyphs remain fully visible; moving digits fade at the edges. The mask does not replace contrast requirements for settled punctuation or static glyphs.

Keyboard and focus

AnimatedNumber is not interactive. Clickable KPI tiles use MetricCard with a native action target instead of wrapping the animated value.

Testing checklist

  • Verify static fallback matches formatted output when the lazy chunk fails to load.
  • Verify polite announcements fire only after NumberFlow settlement, not on mount.
  • Verify reduced-motion snap in Storybook and unit tests.

Previous

Animated Number / API and Development

Next

Box / Usage

On this page

Role and semantics
Motion
Live regions
Visual fades
Keyboard and focus
Testing checklist