Cross-platform UX components for React & React Native — zero-config, same API across platforms.
npm install @syraui/core| Platform | Import |
|---|---|
| React | @syraui/core |
| Next.js | @syraui/core |
| Vite | @syraui/core |
| React Native | @syraui/core/native |
| Expo | @syraui/core/native |
<Skeleton>— Auto-generates shimmer from any component's shape
Wrap any component. Get its skeleton. Zero config.
import { Skeleton } from "@syraui/core";
<Skeleton loading={isLoading}>
<ProfileCard user={user} />
</Skeleton>;Wrap elements you want shimmer'd with <SkeletonItem>. It reads dimensions directly from the child's style — no duplication needed.
import { Skeleton, SkeletonItem } from "@syraui/core/native";
<Skeleton loading={isLoading}>
<View style={s.card}>
<SkeletonItem>
<Image source={{ uri: user.avatar }} style={s.avatar} />
</SkeletonItem>
<SkeletonItem>
<Text style={s.name}>{user.name}</Text>
</SkeletonItem>
<SkeletonItem>
<Text style={s.bio}>{user.bio}</Text>
</SkeletonItem>
<Button title="Follow" />
</View>
</Skeleton>;Expo — requires
expo prebuildor bare workflow. Does not run in Expo Go.
| Prop | Type | Default | Description |
|---|---|---|---|
loading |
boolean |
— | Toggle between shimmer and real content |
children |
ReactNode |
— | Your real component |
animation |
"shimmer" | "pulse" | "none" |
"shimmer" |
Animation style |
baseColor |
string |
"#EAECF0" |
Background color of skeleton blocks |
highlightColor |
string |
"#F8F9FB" |
Shimmer highlight color |
speed |
number |
1.8 |
Animation speed in seconds. Higher = slower |
borderRadius |
string | number |
auto | Override border radius on all blocks |
direction |
"ltr" | "rtl" |
"ltr" |
Shimmer sweep direction |
fadeDuration |
number |
250 |
Fade-in duration (ms) when loading ends. Web only |
className |
string |
— | CSS class on wrapper. Web only |
style |
CSSProperties | ViewStyle |
— | Inline styles |
| Prop | Type | Default | Description |
|---|---|---|---|
children |
ReactElement |
— | The element to shimmer |
borderRadius |
number |
auto | Override border radius for this block |
// Dark mode
<Skeleton loading={isLoading} baseColor="#1E293B" highlightColor="#334155">
<Card />
</Skeleton>
// Pulse animation
<Skeleton loading={isLoading} animation="pulse" speed={1.5}>
<Card />
</Skeleton>
// RTL
<Skeleton loading={isLoading} direction="rtl">
<Card />
</Skeleton>MIT © SyraUI