Odometer
ProA price or stat where every digit is a wheel: change the number and only the digits that moved spin, upward when it rises and downward when it falls.
Installation
npx shadcn add @useplanes/odometer
Unlock with Planes Pro
$99 once · 80 Pro components · lifetime updates.
<Odometer value={price} format={{ style: "currency", currency: "USD", maximumFractionDigits: 0 }} className="text-4xl font-semibold" />Examples
Direction-aware digits
The wheels spin upward when the value rises and downward when it falls, and when the digit count changes the new digits roll in while the old ones roll out.
<Odometer value={n} prefix="$" />Reduced motion
With prefers-reduced-motion nothing spins: each digit snaps to its new position and the formatted value is announced through a polite live region.
<Odometer value={12480} format={{ maximumFractionDigits: 0 }} />Use cases
Pricing toggles
Monthly/yearly switches where the price rolls instead of swapping — see PricingTable's animateNumbers prop.
Live counters
Requests served, users online, revenue today — numbers that update while the page is open.
Cart totals
A total that visibly moves when a quantity changes, so the change is impossible to miss.
Dashboard metrics
KPI tiles that update on an interval without the whole figure flickering.