Skip to main content
ProgressCircle
@coinbase/cds-web@8.56.1
A circular visual indicator of completion progress. Supports both determinate progress (0–100%) and an indeterminate variant for loading states.
import { ProgressCircle } from '@coinbase/cds-web/visualizations/ProgressCircle'
Peer dependencies
  • framer-motion: ^10.18.0

Default

Loading...

Indeterminate

Use the indeterminate prop when progress is unknown (e.g. loading). The circle shows a spinning partial arc with no percentage text. This is the recommended replacement for the deprecated Spinner in loading contexts such as IconButton or button loading states.

When indeterminate is true, the default color is fgMuted; you can override color as needed. Always provide accessibilityLabel so screen readers announce the loading state.

Thickness (weight)

By default, the indeterminate variant uses a stroke width of 11% of the circle size—so thickness scales with size and matches the legacy Spinner look. To use a fixed stroke width instead, pass the weight prop: "thin" (2px), "normal" (4px), "semiheavy" (8px), or "heavy" (12px).

Loading...

Progress (arc length)

When indeterminate is true, the progress prop controls the length of the visible arc (how much of the circle is drawn), not a completion percentage. It defaults to 0.75 (a 270° arc). Override it to change the arc length—e.g. 0.5 for a half circle or 0.25 for a shorter arc.

Loading...

Sizes and color

Loading...

Thin

Loading...

Semiheavy

Loading...

Heavy

Loading...

No Text

Loading...

Disabled

Loading...

Colors

Loading...

Fill Parent

The progress circle can be dynamically sized to fit its parent. If you drag the browser window smaller or larger then the ProgressCircle will resize accordingly.

Loading...

Content Node Customization

You can override the default content node to display a custom node. Note that the content node is clipped to the circle.

With Asset

You can provide an image, such as an asset, as the content node.

Loading...

Custom Text Color

The progress circle's default content can be customized to display a custom text color.

Loading...

Custom Styles

The progress circle can be customized with styles and class names.

Loading...

Interactive Demo

This is for demo purposes. ProgressContainerWithButtons isn't designed for production usage.

Loading...

Animation

By default, ProgressCircle animates progress changes. Use disableAnimateOnMount to skip the initial animation while still animating subsequent changes.

Loading...

Callbacks

You can use the onAnimationStart and onAnimationEnd callbacks to track the progress of the animation.

Loading...

Is this page useful?

Coinbase Design is an open-source, adaptable system of guidelines, components, and tools that aid the best practices of user interface design for crypto products.