Foundations · stable · MIT

Spinner

A compact named loading indicator with reduced-motion state.

Install editable source

Add Spinner

Base UI / canonicalnpx shadcn@latest add https://gummyui.dev/r/gummy-spinner.json

No package dependency beyond React. Shared Gummy material is resolved automatically.

Behavior contract

Semantics before surface

Semantics

Status semantics are opt-in through the visible or accessible label.

Keyboard

No component-specific keys.

System support

Light and dark themes, logical RTL layout, reduced motion, responsive content, and forwarded public refs.

Source-derived reference

Anatomy and public API

Exported anatomy

These public React parts are read directly from the canonical source during the documentation build.

  • GummySpinner

Prop contracts

GummySpinnerProps

Composes React.HTMLAttributes<HTMLSpanElement> & { label?: string; size?: "small" | "medium" | "large"; tone?: "raspberry" | "grape" | "aqua" | "current"; }

Troubleshooting

Check behavior before surface.

Implementation decisions

When to use Spinner

Use a spinner for a short indeterminate operation when no honest completion fraction exists. Pair it with text that says what is being attempted and update that status when the operation succeeds, fails, or can be retried. Disable only the controls that truly conflict. Test instant completion, long waits, cancellation, reduced motion, screen-reader announcements, and route changes so loading feedback never traps a customer.

Live product source

Inspect the canonical states

The Component Lab exercises real source across default, focus, disabled, responsive, dark, reduced-motion, and RTL contexts.

Open the live Component Lab

Interactive inspection

Try Spinner in context

Load the real component preview when you are ready to interact with its responsive, theme, and direction controls.

Editable source

Read before you install

Canonical Base UI or native source

The registry payload stays off the initial page request.