Measured entry
tripled-native-counter-up
statsminimal-flatmotion on file
A client-side React counter that animates from zero to a formatted target and supports prefixes, suffixes, decimals, labels, and reduced-motion preferences. It ships as a shadcn registry component, uses Framer Motion for both the count and entrance effect, and expects a Tailwind-aware cn utility backed by clsx and tailwind-merge.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 1 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 72.2 KB (137.7 KB build, 65.5 KB baseline) |
| Bare mode | OK |
| Provider required | NO |
| Demo used | written from the component source API |
Verdict
A focused counter that builds and mounts cleanly, with useful formatting and no provider requirement. It is easiest to justify in an app that already carries Framer Motion. Fix the demo label contrast, and review the remaining entrance movement for strict reduced-motion policies.
Use it if
- You need an on-mount count-up for dashboard totals or compact stat cards.
- Your app already uses Framer Motion, so the extra dependency cost is acceptable.
- You want locale-aware formatting plus configurable prefixes, suffixes, and decimal precision.
- You need a simple polite live-region label and basic reduced-motion handling.
Skip it if
- You need the animation to begin on viewport entry, replay on demand, or expose progress callbacks.
- You are avoiding Framer Motion for a small decorative counter.
- You require reduced motion to suppress every movement, since the entrance transition still runs.
- You need a demo that passes contrast checks without adjusting its muted label colors.
Install
| Declared dependencies | framer-motion, react, clsx, tailwind-merge |
|---|---|
| Missing on install | none |
| Bare install | builds and mounts without the shadcn-style helpers |
| Provider | no provider required in the harness |
In a non-shadcn project, copy the client component, install React and Framer Motion, and provide a cn helper using clsx with tailwind-merge. Configure Tailwind for the utility classes, including tabular numerals, bold text, and screen-reader-only content, or replace those classes with local styles.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/moumen-soliman/uitripledAlternatives
Other published entries for the stats pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- hyperui-stats-1unclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 3.4KB
- Bare
- pass
- Prov
- NO
- hyperui-app-stats-4editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 17.5KB
- Bare
- pass
- Prov
- NO
- tailark-mist-stats-2minimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 17.6KB
- Bare
- pass
- Prov
- NO
- tailark-mist-stats-4minimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 17.6KB
- Bare
- pass
- Prov
- NO
- tailark-veil-stats-1minimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 17.6KB
- Bare
- pass
- Prov
- NO
- hyperui-stats-2editorial
- Renders
- YES
- A11y
- 0
- Gzip
- 17.8KB
- Bare
- pass
- Prov
- NO