Simple, lightweight React SVG spinner components
Perfect for async operations and loading states
npm install react-loader-spinner
Or using yarn:
yarn add react-loader-spinner
import { Audio } from 'react-loader-spinner'
function App() {
return (
<Audio
height="80"
width="80"
color="#4fa94d"
ariaLabel="audio-loading"
wrapperStyle={{}}
wrapperClass="wrapper-class"
visible={true}
/>
)
}
Visit our complete documentation for:
import { Oval } from 'react-loader-spinner'
;<Oval
height={80}
width={80}
color="#4fa94d"
visible={true}
ariaLabel="oval-loading"
secondaryColor="#4fa94d"
strokeWidth={2}
strokeWidthSecondary={2}
/>
import { ThreeDots } from 'react-loader-spinner'
;<ThreeDots
height="80"
width="80"
radius="9"
color="#4fa94d"
ariaLabel="three-dots-loading"
wrapperStyle={{ margin: '20px' }}
wrapperClass="custom-loader"
visible={true}
/>
import { TailSpin } from 'react-loader-spinner'
function MyComponent() {
const [loading, setLoading] = useState(true)
return (
<div>
<TailSpin
height="80"
width="80"
color="#4fa94d"
ariaLabel="tail-spin-loading"
visible={loading}
/>
</div>
)
}
For optimal bundle size, import components directly:
// Direct import (better for tree-shaking)
import { Audio } from 'react-loader-spinner/dist/esm/loader/audio'
// Or use named imports (also tree-shakeable)
import { Audio, Oval, ThreeDots } from 'react-loader-spinner'
All spinner components accept these common props:
| Prop | Type | Default | Description |
| -------------- | ------------------ | ------------------ | ------------------------- |
| height | string \| number | "100" | Height of the spinner |
| width | string \| number | "100" | Width of the spinner |
| color | string | "#4fa94d" | Primary color |
| visible | boolean | true | Show/hide the spinner |
| ariaLabel | string | Component-specific | Accessibility label |
| wrapperStyle | CSSProperties | {} | Inline styles for wrapper |
| wrapperClass | string | "" | CSS class for wrapper |
Note: Individual components may have additional specific props. Check the documentation for each component.
This package includes TypeScript definitions out of the box:
import { Audio } from 'react-loader-spinner'
import type { CSSProperties } from 'react'
const wrapperStyle: CSSProperties = {
display: 'flex',
justifyContent: 'center',
}
;<Audio height="80" width="80" color="blue" wrapperStyle={wrapperStyle} />
We welcome contributions! Please see our Contributing Guide for details.
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)MIT © Mohan Upadhyay
Thanks goes to these wonderful people:
⭐ Star us on GitHub — it helps!