⚛️ React Loadly - Modern React loader, spinner, and skeleton loader components. High-performance loading indicators for React apps with TypeScript support, Next.js compatibility, accessibility, and 30+ customizable animations. Perfect for dashboards, form
npm install react-loadly

React Loadly is a modern, high-performance React loader, spinner, and skeleton loader components library with 30+ customizable loading animations. Built with TypeScript, optimized for Next.js and SSR, and designed with accessibility (ARIA) and developer experience in mind.
Perfect for building React applications, React dashboards, forms, and data-driven UIs where you need smooth, customizable loading states and skeleton screens. Includes AutoSkeletonLoader for automatically generating skeleton loaders based on your component structure.
🔍 Search-friendly features: React loading spinner | React loader components | React skeleton loader | React loading indicator | Next.js loader | TypeScript loader | Accessible React loader | React loading animation
🏠 Home Page: https://Mostafashadow1.github.io/react-loadly-showCases/



- High Performance: Uses hardware-accelerated CSS transforms and animations.
- Accessibility First: Full ARIA support, screen reader compatibility, and keyboard navigation.
- TypeScript Ready: Comprehensive type definitions for a seamless dev experience.
- Highly Customizable: Adjust appearance with CSS variables or component props.
- Tree-Shakable: Supports modern bundlers to only include what you use.
- Reduced Motion: Respects the user's prefers-reduced-motion settings.
- SSR Compatible: Works out-of-the-box with frameworks like Next.js.
- Fullscreen Support: Display loaders in fullscreen mode with customizable backgrounds.
- AutoSkeletonLoader Support: Automatically generates skeleton loaders based on your component structure.
---
We've added 7 exciting new loaders to expand your loading animation options:
1. OrbitLoader - Beautiful orbiting elements around a central point
2. PlaneLoader - 3D rotating cube with perspective transforms
3. RippleLoader - Expanding ripple rings from a central point
4. SquaresLoader - Multiple rotating squares with dynamic grid effect
5. StairLoader - Cascading stair steps with progress-like effect
6. HashtagLoader - Animated hashtag with progressive drawing
7. SnakeLoader - Snake-like slithering animation with flowing segments
All new loaders support:
- ✅ Customizable colors with secondaryColor prop
- ✅ Adjustable element count (where applicable)
- ✅ Fullscreen mode support
- ✅ Accessibility features (ARIA labels, reduced motion)
- ✅ Performance optimizations with hardware acceleration
---
Install the package using your preferred package manager.
``bash`
npm install react-loadlyor
yarn add react-loadlyor
pnpm i react-loadly
React Loadly is optimized for minimal bundle size and supports tree shaking:
- Zero Side Effects: Set "sideEffects": false in your bundler config for optimal tree shaking
- Individual Imports: Import only the components you need
- Separate CSS: Import styles separately to avoid bundling unused styles
`jsx
// ✅ Recommended: Import only what you need
import { SpinLoader } from "react-loadly";
import "react-loadly/styles.css";
// ✅ Alternative: Import from specific paths (if supported by your bundler)
import { SpinLoader } from "react-loadly/components";
import { useLoaderState } from "react-loadly/hooks";
`
Import the components you need along with the base styles, then use them in your React application.
`jsx
import { SpinLoader, PulseLoader } from "react-loadly";
import "react-loadly/styles.css"; // Essential for base styles
function App() {
return (
{/ A customized loader /}
---
🎨 Component Showcase
$3
| Component | Description |
| --------------- | ---------------------------------------------------------------------------- |
|
SpinLoader | A classic spinner with a minimalist design. |
| PulseLoader | A dynamic animation of pulsing dots. |
| WaveLoader | A series of bars creating a wave-like effect. |
| GridLoader | A grid of squares that animate in sequence. |
| RingLoader | A sophisticated ring spinner with dual rotation. |
| BarsLoader | Animated bars with staggered timing. |
| BounceLoader | Bouncing dots with elastic animation. |
| RotateLoader | 3D rotating elements with depth. |
| OrbitLoader | Orbiting elements around a central point with customizable count and colors. |
| PlaneLoader | 3D rotating cube with perspective transforms. |
| SquaresLoader | Multiple rotating squares with varying delays and scales. |
| StairLoader | Cascading stair steps creating a progress effect. |
| HashtagLoader | Animated hashtag symbol with progressive drawing effect. |
| SnakeLoader | Snake-like slithering animation with flowing segments. |
| RippleLoader | Expanding ripple rings from a central point. |---
$3
| Component | Description |
| -------------------- | ---------------------------------------------------------------------------------------------- |
|
SkeletonLoader | Modern skeleton placeholders with shimmer effects. with Sophisticated shimmer wave animations. |
| AutoSkeletonLoader | Automatically generates skeleton loaders based on your component structure. |$3
| Component | Description |
| -------------- | --------------------------------------------------- |
|
BlobLoader | A liquid-like loader with a smooth, organic feel. |
| TypingLoader | A loader that simulates typing or processing text. |
| DotsLoader | The familiar three-dot animation, perfect for text. |
| LiquidLoader | Fluid, morphing shapes with organic movement. |
| FlowLoader | Flowing particles with smooth transitions. |$3
| Component | Description |
| -------------------- | ------------------------------------------------------------------------------------ | --- |
|
ElementLoader | A flexible loader that can display any React element with various animation effects. |
| FallbackLoader | Error handling and retry functionality with customizable UI. |
| LogoSpinLoader | Specialized loader for logos and brand elements. |
| ProgressRingLoader | Accessible progress ring with optional determinate mode. |
| MorphLoader | Smooth morphing SVG shapes that interpolate between paths. |
| SpinDotsLoader | Circular orbit of dots; perfect for inline text. |
| HeatmapLoader | Grid of pulses with staggered timing; useful for dashboards. | |$3
The
ProgressRingLoader is an accessible progress ring component that supports both determinate and indeterminate modes. In determinate mode, it shows the exact progress percentage, while in indeterminate mode, it provides a continuous spinning animation.#### Basic Usage
`jsx
import { ProgressRingLoader } from "react-loadly";function App() {
return (
{/ Indeterminate mode (default) /}
{/ Determinate mode /}
{/ Custom size and color /}
);
}
`#### ProgressRingLoader Props
| Prop | Type | Default | Description |
| ----------- | ---------------- | --------- | ------------------------------------------------ |
|
progress | number \| null | null | Progress value (0-100) or null for indeterminate |
| thickness | number | 4 | Thickness of the ring |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Color of the progress ring |All other props are inherited from
IBaseLoaderProps.---
$3
The
MorphLoader creates smooth morphing SVG shapes that interpolate between different paths. It supports three variants: blob, soft, and sharp.#### Basic Usage
`jsx
import { MorphLoader } from "react-loadly";function App() {
return (
{/ Default blob variant /}
{/ Soft variant /}
{/ Sharp variant /}
{/ Custom size and color /}
);
}
`#### MorphLoader Props
| Prop | Type | Default | Description |
| --------- | --------------------------- | --------- | --------------------------- |
|
variant | "blob" \| "soft" \| "sharp" | "blob" | Morph variant type |
| speed | number | 1 | Animation speed multiplier |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Color of the morphing shape |All other props are inherited from
IBaseLoaderProps.---
$3
The
SpinDotsLoader creates a circular orbit of dots, perfect for inline text loading indicators.#### Basic Usage
`jsx
import { SpinDotsLoader } from "react-loadly";function App() {
return (
{/ Default 3 dots /}
{/ Custom number of dots /}
{/ Custom size and color /}
);
}
`#### SpinDotsLoader Props
| Prop | Type | Default | Description |
| ------- | ---------------- | --------- | -------------------------- |
|
dots | number | 3 | Number of dots in orbit |
| gap | number | 8 | Gap between dots |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Color of the dots |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
HeatmapLoader displays a grid of pulses with staggered timing, useful for dashboard data placeholders.#### Basic Usage
`jsx
import { HeatmapLoader } from "react-loadly";function App() {
return (
{/ Default 3x5 grid /}
{/ Custom grid size /}
{/ Custom size and color /}
);
}
`#### HeatmapLoader Props
| Prop | Type | Default | Description |
| ------- | ---------------- | --------- | -------------------------- |
|
rows | number | 3 | Number of rows in grid |
| cols | number | 5 | Number of columns in grid |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Color of the cells |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
ClockLoader animates like a traditional clock with hour, minute, and second hands.#### Basic Usage
`jsx
import { ClockLoader } from "react-loadly";function App() {
return (
{/ Default clock /}
{/ Custom size /}
{/ Custom tick speed /}
);
}
`#### ClockLoader Props
| Prop | Type | Default | Description |
| ----------- | ---------------- | --------- | ------------------------ |
|
size | number \| string | 40 | Size of the clock |
| tickSpeed | number | 1 | Speed of clock animation |
| color | string | "#6366f1" | Color of the clock hands |All other props are inherited from
IBaseLoaderProps.---
$3
The
NeumorphicLoader creates a soft neumorphic pill/dots loader for modern UI designs.#### Basic Usage
`jsx
import { NeumorphicLoader } from "react-loadly";function App() {
return (
{/ Default elevation /}
{/ Custom elevation /}
{/ Custom size and color /}
);
}
`#### NeumorphicLoader Props
| Prop | Type | Default | Description |
| ----------- | ---------------- | --------- | -------------------------- |
|
elevation | number | 5 | Elevation level (1-10) |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Color of the loader |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
OrbitLoader creates a beautiful orbital animation with elements rotating around a central point, similar to planets orbiting a star.#### Basic Usage
`jsx
import { OrbitLoader } from "react-loadly";function App() {
return (
{/ Default with 3 orbiting elements /}
{/ Custom number of orbiting elements /}
{/ With secondary color /}
);
}
`#### OrbitLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | ---------------------------------------- |
|
count | number | 3 | Number of orbiting elements |
| secondaryColor | string | undefined | Secondary color for alternating elements |
| size | number \| string | 60 | Size of the loader |
| color | string | "#6366f1" | Primary color of the orbit elements |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
PlaneLoader displays a 3D rotating cube with perspective transforms, creating a modern 3D loading experience.#### Basic Usage
`jsx
import { PlaneLoader } from "react-loadly";function App() {
return (
{/ Default cube /}
{/ Custom size and color /}
{/ With secondary color for cube faces /}
);
}
`#### PlaneLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | ----------------------------------- |
|
secondaryColor | string | undefined | Color for the cube face backgrounds |
| size | number \| string | 50 | Size of the loader |
| color | string | "#6366f1" | Primary color of the cube edges |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
RippleLoader creates expanding ripple rings from a central point, similar to water ripples.#### Basic Usage
`jsx
import { RippleLoader } from "react-loadly";function App() {
return (
{/ Default with 3 ripples /}
{/ Custom number of ripples /}
{/ With secondary color and custom border width /}
);
}
`#### RippleLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | --------------------------------------- |
|
count | number | 3 | Number of ripple rings |
| secondaryColor | string | undefined | Secondary color for alternating ripples |
| borderWidth | number | 2 | Width of the ripple border |
| size | number \| string | 50 | Size of the loader |
| color | string | "#6366f1" | Primary color of the ripples |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
SquaresLoader displays multiple rotating squares with varying delays and scales for a dynamic grid effect.#### Basic Usage
`jsx
import { SquaresLoader } from "react-loadly";function App() {
return (
{/ Default with 4 squares /}
{/ Custom number of squares /}
{/ With secondary color /}
);
}
`#### SquaresLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | --------------------------------------- |
|
count | number | 4 | Number of squares |
| secondaryColor | string | undefined | Secondary color for alternating squares |
| size | number \| string | 40 | Size of the loader |
| color | string | "#6366f1" | Primary color of the squares |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
StairLoader creates cascading stair steps that animate in sequence, creating a progress-like effect.#### Basic Usage
`jsx
import { StairLoader } from "react-loadly";function App() {
return (
{/ Default with 5 steps /}
{/ Custom number of steps /}
{/ With secondary color /}
);
}
`#### StairLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | ------------------------------------- |
|
count | number | 5 | Number of stair steps |
| secondaryColor | string | undefined | Secondary color for alternating steps |
| size | number \| string | 35 | Size of the loader |
| color | string | "#6366f1" | Primary color of the steps |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
HashtagLoader animates a hashtag symbol with a progressive drawing effect.#### Basic Usage
`jsx
import { HashtagLoader } from "react-loadly";function App() {
return (
{/ Default hashtag /}
{/ Custom size and color /}
{/ With secondary color /}
);
}
`#### HashtagLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | --------------------------------------------- |
|
secondaryColor | string | undefined | Secondary color for alternating path segments |
| size | number \| string | 50 | Size of the loader |
| color | string | "#6366f1" | Primary color of the hashtag stroke |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
$3
The
SnakeLoader creates a snake-like animation with flowing segments that move in a wave pattern.#### Basic Usage
`jsx
import { SnakeLoader } from "react-loadly";function App() {
return (
{/ Default with 6 segments /}
{/ Custom number of segments /}
{/ With secondary color /}
);
}
`#### SnakeLoader Props
| Prop | Type | Default | Description |
| ---------------- | ---------------- | --------- | ---------------------------------------- |
|
count | number | 6 | Number of snake segments |
| secondaryColor | string | undefined | Secondary color for alternating segments |
| size | number \| string | 60 | Size of the loader |
| color | string | "#6366f1" | Primary color of the snake segments |
| speed | number | 1 | Animation speed multiplier |All other props are inherited from
IBaseLoaderProps.---
🦴 SkeletonLoader Component
The
SkeletonLoader is perfect for modern loading states, creating placeholder content that mimics the actual content structure.$3
`jsx
import { SkeletonLoader } from "react-loadly";function App() {
return (
{/ Basic skeleton line /}
{/ Multiple skeleton lines /}
{/ Card skeleton /}
{/ Avatar skeleton /}
);
}
`$3
The SkeletonLoader supports multiple variants to match different content types:
`jsx
// Line skeleton (default) - for text content
// Card skeleton - for image cards or content blocks
// Avatar skeleton - for profile images
// Text skeleton - for single line text
// Custom skeleton - for any custom shape
variant="custom"
width={200}
height={100}
borderRadius="8px"
/>
`$3
| Variant | Use Case | Default Dimensions | Default Border Radius |
| -------- | ---------------------------------- | --------------------------- | --------------------- |
|
line | Paragraphs, lists, general content | width: 100%, height: 16px | 4px |
| card | Images, cards, content blocks | width: 300px, height: 200px | 8px |
| avatar | Profile pictures, user icons | width: 40px, height: 40px | 50% (circular) |
| text | Single line text elements | width: 100%, height: 16px | 4px |
| custom | Any custom shape or element | width: 100%, height: 16px | 4px (customizable) |$3
`jsx
lines={3}
color="#f0f0f0"
highlightColor="#e0e0e0"
shimmerColor="rgba(255, 255, 255, 0.6)"
spacing="12px"
shimmer={true}
waveWidth="200px"
waveDirection="left-to-right"
speed={1.5}
/>
`$3
| Prop | Type | Default | Description |
| ---------------- | ------------------------------------------------------------------------ | ----------------------- | ----------------------------------- |
|
lines | number | 1 | Number of skeleton lines to display |
| variant | "line" \| "card" \| "avatar" \| "text" \| "custom" | "line" | Variant of skeleton to display |
| width | number \| string | varies by variant | Width of skeleton elements |
| height | number \| string | varies by variant | Height of skeleton elements |
| borderRadius | number \| string | varies by variant | Border radius of skeleton elements |
| spacing | number \| string | "8px" | Spacing between skeleton lines |
| shimmer | boolean | true | Whether to show shimmer animation |
| shimmerColor | string | "rgba(255,255,255,0.6)" | Shimmer effect color |
| highlightColor | string | "#f1f5f9" | Highlight color for shimmer effect |
| waveWidth | number \| string | "200px" | Shimmer wave width |
| waveDirection | "left-to-right" \| "right-to-left" \| "top-to-bottom" \| "bottom-to-top" | "left-to-right" | Direction of shimmer animation |---
🤖 AutoSkeletonLoader Component
The
AutoSkeletonLoader is an advanced component that automatically generates skeleton loaders based on the structure of your actual components. It analyzes your component's JSX tree and creates matching skeleton placeholders.$3
- Automatic Generation: Scans the JSX tree of your component and replaces each element with a matching skeleton placeholder
- Smart Dimension Estimation: Automatically estimates skeleton dimensions based on element types and content
- Style Inheritance: Optionally inherits inline styles and props directly from the original element
- Customizable Class Names: Override styles per element type for fine-grained control
- Variant Support: Automatically selects appropriate skeleton variants (rect, circle, text) based on element type
- Consistent Animations: Shimmer effect support that's consistent with SkeletonLoader
- Smooth Transitions: Built-in fade-in/out animations between skeleton and real component
- Accessibility: Full ARIA support and screen reader compatibility
- Performance Optimized: Uses React.memo and useMemo for optimal re-rendering
$3
`jsx
import { AutoSkeletonLoader } from "react-loadly";function UserProfile({ user, loading }) {
return } />;
}
function UserProfileCard({ user }) {
return (

{user.name}
{user.bio}
);
}
`$3
#### Style Inheritance
`jsx
// Inherits styles from original elements for more accurate skeletons
} inheritStyles={true} />
`#### Custom Class Names
`jsx
// Customize skeleton appearance per element type
loading={loading}
component={ }
styless={{
p: { height: "0.8em", width: "80%" },
h3: { height: "1.2em", width: "60%", borderRadius: "8px" },
img: { borderRadius: "12px" },
button: { width: "150px", height: "50px" },
}}
/>
`#### With Shimmer Effects
`jsx
// Enable shimmer animations for a more polished look
loading={loading}
component={ }
shimmer={true}
shimmerColor="rgba(255, 255, 255, 0.8)"
highlightColor="#f8fafc"
/>
`#### Complex Component Example
`jsx
function DashboardCard({ title, metrics, loading }) {
return (
loading={loading}
component={
{title}
{metrics.map((metric, index) => (
{metric.value}
{metric.label}
))}
}
inheritStyles={true}
shimmer={true}
/>
);
}
`$3
| Prop | Type | Default | Description |
| ---------------- | ------------------------------------------------------------------------ | ----------------------- | ------------------------------------------------ |
|
component | ReactElement | - | The component to render or analyze for skeletons |
| inheritStyles | boolean | false | Whether to inherit styles from original elements |
| styless | object | {} | Custom styles for different element types |
| shimmer | boolean | true | Whether to show shimmer animation |
| shimmerColor | string | "rgba(255,255,255,0.6)" | Shimmer effect color |
| highlightColor | string | "#f1f5f9" | Highlight color for shimmer effect |
| waveWidth | number \| string | "200px" | Shimmer wave width |
| waveDirection | "left-to-right" \| "right-to-left" \| "top-to-bottom" \| "bottom-to-top" | "left-to-right" | Direction of shimmer animation |All other props are inherited from
IBaseLoaderProps.---
🎨 New Loaders Feature Guide
$3
Here's how to combine the new loaders for amazing visual effects:
`jsx
import { OrbitLoader, PlaneLoader, RippleLoader, SquaresLoader, StairLoader, HashtagLoader, SnakeLoader } from "react-loadly";function MultiLoaderShowcase() {
return (
{/ Orbital system animation /}
OrbitLoader - Space Theme
{/ 3D cube for tech products /}
PlaneLoader - 3D Effect
{/ Ripple for notifications /}
RippleLoader - Pulse Effect
{/ Dynamic grid /}
SquaresLoader - Grid Animation
{/ Progress stairs /}
StairLoader - Step Effect
{/ Social media hashtag /}
HashtagLoader - Social Media
{/ Flowing snake /}
SnakeLoader - Organic Motion
);
}
`$3
All new loaders support
secondaryColor for beautiful gradient and alternating color effects:`jsx
// Ocean theme
// Fire theme
// Purple theme
// Social media theme
// Twitter blue
// Instagram pink
`---
⚡ Performance & Best Practices
$3
React Loadly is built with performance in mind:
- Hardware Acceleration: All animations use CSS transforms and
will-change for optimal performance
- Reduced Motion Support: Automatically respects user's motion preferences
- Tree Shaking: Import only the components you need
- Memoization: Components use React.memo and useMemo for optimal re-rendering
- CSS-in-JS: Minimal runtime overhead with CSS variables$3
`jsx
// ✅ Good: Import only what you need
import { SpinLoader, SkeletonLoader } from "react-loadly";// ❌ Avoid: Importing everything
import \* as Loaders from "react-loadly";
// ✅ Good: Use appropriate loader for context
function UserProfile({ user, loading }) {
if (loading) {
return (
);
}
return {/_ User content _/};
}// ✅ Good: Conditional rendering
function DataComponent({ data, loading }) {
return
{loading ? : {data}};
}// ✅ Good: Use fullscreen for page-level loading
function App() {
const [isLoading, setIsLoading] = useState(true);
return (
{isLoading && }
{/_ App content _/}
);
}`$3
jsx
// ✅ Tree-shakable imports
import { SpinLoader } from "react-loadly";// ✅ CSS imports (only import what you need)
import "react-loadly/styles.css";
// ✅ For Next.js, use dynamic imports for code splitting
import dynamic from "next/dynamic";
const SkeletonLoader = dynamic(() => import("react-loadly").then((mod) => ({ default: mod.SkeletonLoader })));
`---
♿ Accessibility
Accessibility is a core feature, not an afterthought. All loaders include:
- ARIA attributes (
role="status", aria-label) for screen readers.
- Support for Reduced Motion.
- High contrast and semantic HTML.jsx
// Accessible by default
// Custom accessible text
`---
🛠️ Customization
$3
Customize the entire loader library globally with CSS variables.
`css
:root {
--loader-color: #3b82f6;
--loader-size: 40px;
--loader-speed: 1s;
--loader-text-color: #6b7280;
}
`$3
Each loader component accepts a common set of props for fine-grained control.
`typescript
interface BaseLoaderProps {
size?: number | string;
color?: string;
speed?: number;
loading?: boolean;
className?: string;
style?: React.CSSProperties;
showText?: boolean;
loadingText?: string;
// Fullscreen props
fullscreen?: boolean;
screenWidth?: number | string;
screenHeight?: number | string;
loaderCenter?: boolean;
screenBackground?: string;
}
`$3
React Loadly provides comprehensive TypeScript definitions for all components and hooks. You can import types and interfaces directly from the library:
tsx
// ✅ Correct way to import shared interfaces
import type { IBaseLoaderProps, ISkeletonLoaderProps } from "react-loadly";// For component-specific props
import type {
IOrbitLoaderProps,
IPlaneLoaderProps,
IRippleLoaderProps,
ISquaresLoaderProps,
IStairLoaderProps,
IHashtagLoaderProps,
ISnakeLoaderProps
} from "react-loadly";
// For hook return types
import type { IUseLoaderStateReturn } from "react-loadly/hooks";
// For animation types
import type { AnimationDirectionType } from "react-loadly";
``All types are properly exported and can be used in your TypeScript projects for better type safety and autocompletion.
Available Interface Exports:
-
IBaseLoaderProps - Base props for all loaders
- IGeometricLoaderProps - Base props for geometric loaders (includes count, secondaryColor, etc.)
- IOrbitLoaderProps, IPlaneLoaderProps, IRippleLoaderProps, etc. - Specific loader props
- ISkeletonLoaderProps, IProgressRingLoaderProps, IMorphLoaderProps - Specialized loader propsAvoid importing directly from internal paths like
react-loadly/types or react-loadly/interfaces as these are not part of the public API and may change.$3
Display any loader in fullscreen mode with customizable dimensions and background:
`jsx
// Fullscreen loader covering entire viewport
fullscreen={true}
loaderCenter={true}
screenBackground="#f0f0f0"
/>// Fullscreen loader with custom dimensions
fullscreen={true}
screenWidth={800}
screenHeight={600}
loaderCenter={true}
screenBackground="rgba(0, 0, 0, 0.5)"
/>
`---
🎯 Real-World Examples
$3
jsx
import { SkeletonLoader, SpinLoader, PulseLoader } from "react-loadly";function ContentLoader() {
return (
{/_ Blog post loading Dashboard loading _/}
{/ Button loading /}
{/ Inline loading /}
Loading data
);
}
`$3
jsx
function FormWithLoading() {
const [isSubmitting, setIsSubmitting] = useState(false); return (
);
}
`$3
jsx
function DataTable({ data, loading }) {
if (loading) {
return (
{/_ Header skeleton _/}
{Array.from({ length: 5 }).map((\_, i) => (
))}
{/ Row skeletons /}
{Array.from({ length: 10 }).map((_, i) => (
{Array.from({ length: 5 }).map((_, j) => (
))}
))}
); }
return
{/_ Actual table content _/};
}`$3
jsx
function ImageGallery({ images, loading }) {
if (loading) {
return (
{Array.from({ length: 6 }).map((_, i) => (
key={i}
variant="card"
width={200}
height={200}
borderRadius="8px"
shimmer
shimmerColor="#f0f0f0"
waveDirection="left-to-right"
/>
))}
);
} return (
{images.map((image, i) => (

))}
);
}
`$3
jsx
function SocialFeed({ posts, loading }) {
if (loading) {
return (
{Array.from({ length: 5 }).map((_, i) => (
Processing...
))}
);
} return
{posts.map(renderPost)};
}
`$3
jsx
function GameLoader() {
return (
{/ Futuristic game loading /}
{/ Social media hashtag /}
{/ Snake game effect /}
);
}
`$3
jsx
function ModernDashboardLoader() {
return (
{/ 3D rotating cube for tech products /}
{/ Ripple effect for notifications /}
{/ Staircase for progress indication /}
);
}---
🧩 Advanced Usage
$3
Manage loading, error, and retry states for your data fetching with this convenient hook.
`jsx
import { useLoaderState, SpinLoader } from "react-loadly";function DataComponent() {
const { state, setLoading, setError, retry } = useLoaderState({
timeout: 10000,
maxRetries: 3,
});
const loadData = async () => {
setLoading(true);
try {
await fetch("/api/data");
setLoading(false);
} catch (error) {
setError(error.message);
}
};
if (state.error) {
return (
Error: {state.error}
);
} return (
);
}
`---
🤝 Contributing
We welcome contributions from the community! Whether you're fixing bugs, adding new features, or improving documentation, your contributions help make React Loadly better for everyone.
$3
1. Fork the repository on GitHub
2. Clone your fork locally:
`bash
git clone https://github.com/your-username/react-loadly.git
cd react-loadly
`
3. Create a new branch for your changes:
`bash
git checkout -b feature/your-feature-name
`
4. Install dependencies:
`bash
pnpm install
`
5. Make your changes and ensure tests pass:
`bash
pnpm test
pnpm build
`
6. Commit your changes:
`bash
git commit -m "feat: add your awesome feature"
`
7. Push to your fork:
`bash
git push origin feature/your-feature-name
`
8. Open a Pull Request with a clear description of your changes$3
- 🐛 Bug fixes - Help us squash bugs
- ✨ New loader components - Add new loading animations
- 📚 Documentation - Improve examples and guides
- 🎨 Design improvements - Enhance existing components
- 🧪 Tests - Add test coverage
- 🌐 Internationalization - Help with translations
- 📦 Build improvements - Optimize bundle size and build process
$3
- Follow the existing code style and patterns
- Add tests for new features
- Update documentation for API changes
- Ensure accessibility standards are met
- Keep bundle size impact minimal
$3
- 💬 Join our discussions in GitHub Discussions
- 🐛 Report bugs in GitHub Issues
- 💡 Suggest features in GitHub Issues
- 📖 Read our contributing guide for detailed information
---
👥 Contributors
Thank you to all the amazing people who have contributed to React Loadly:
$3
- @Mostafashadow1 - Creator and maintainer
- _Your name could be here!_ - Contribute today
$3
We recognize contributors in several ways:
- 🏆 Contributor badges in pull requests
- 📝 Contributor recognition in release notes
- 🌟 Hall of fame in this README
- 🎉 Special thanks in our changelog
---
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
---
🙏 Acknowledgments
- Thanks to the React community for inspiration and feedback
- Special thanks to all contributors who help make this project better
- Built with ❤️ for developers who value great UX
---
Made with ❤️ by the React Loadly community
```