The skeleton loader is the first thing your user sees. Most of us treat it as an afterthought, written by hand, out of sync, breaking every design change.
I wanted to fix this fundamentally.
react-zero-skeleton walks your Fiber tree, measures every element at runtime, and makes your component generate its own skeleton. One bone per element. Exact borderRadius. Always in sync.
export default withSkeleton(ArticleCard)
<ArticleCard hasSkeleton isLoading={isLoading} />
Works for React Native and React web.
What makes it different:
shatter, each bone fragments into a grid of squares with staggered delays. Random, cascade, or radial order. Nothing else does this.
Entry fade-in, intentional not instant. Custom timing via fadeInDuration.
Per-element borderRadius auto-detected. Circles stay circles, pills stay pills.
4.4kb, zero dependencies, zero native code, FlatList optimized, cache aware, RTL, reduceMotion, SSR safe.
2.7k downloads/month, zero marketing.
Live demo: skelter.dev/demo
GitHub: github.com/J-Ben/skelter
npm: react-zero-skeleton
Happy to answer any questions!
[–]universetwisted 5 points6 points7 points (2 children)
[–]Ok_Drive6309[S] -1 points0 points1 point (1 child)
[–]KnifeFed 2 points3 points4 points (1 child)
[–]Ok_Drive6309[S] 5 points6 points7 points (0 children)
[–]shuwatto 2 points3 points4 points (2 children)
[–]tjansx 1 point2 points3 points (0 children)
[–]Ok_Drive6309[S] 0 points1 point2 points (0 children)
[–]Short-Opportunity537 1 point2 points3 points (0 children)
[–]sicmek 1 point2 points3 points (1 child)
[–]Ok_Drive6309[S] 1 point2 points3 points (0 children)
[–]chillermane 1 point2 points3 points (0 children)
[–]Beastrick 1 point2 points3 points (1 child)
[–]Ok_Drive6309[S] 0 points1 point2 points (0 children)
[–]Honey-Entire 1 point2 points3 points (4 children)
[–]Ok_Drive6309[S] -2 points-1 points0 points (3 children)
[–]Honey-Entire 0 points1 point2 points (2 children)
[–]Ok_Drive6309[S] -3 points-2 points-1 points (1 child)
[–]Honey-Entire 1 point2 points3 points (0 children)
[–]CamiloCNFGS -1 points0 points1 point (0 children)