Wirestrap is still in active development

This project is pre-1.0 and may introduce breaking changes at any time without prior notice.

Counter

Animated numeric display that transitions smoothly from its current value to a new target using requestAnimationFrame. Pass a numeric value and the counter re-animates on every Livewire morph that changes it. Pass a JS expression (e.g. count="$wire.total") to bind directly to a Livewire property in Alpine context.

Basic usage

Pass a value with :count. The counter animates from zero to the target on mount, and from its current value to the new one on each DOM update.

Visitors
Signups
Countries
<x-wirestrap::counter :count="142300" />
<x-wirestrap::counter :count="142300" :duration="2000" />

Decimals

Set :decimals to keep decimal places visible throughout the animation. Without it, values are rounded to the nearest integer.

Uptime (%)
Rating
<x-wirestrap::counter :count="4.87" :decimals="2" />

Reactive

Pass a JS expression: the component detects it's not a numeric literal and evaluates it in Alpine context via x-effect. The counter re-animates each time the expression's value changes. Each animation always runs for the full configured duration.

<x-wirestrap::counter count="$wire.total" />

Props

Global configuration

Most prop defaults can be overridden globally via config/wirestrap.php.

x-wirestrap::counter

Prop Type Default Description
count int|float|string 0 Target value. Use :count with a PHP value for a static counter, or omit the colon and pass a JS expression (e.g. $wire.total) for reactive mode.
decimals int config Number of decimal places displayed during and after animation.
duration int config Animation duration in ms.
No results found