Simple, beautiful toast-style alert system for React. Easy to use. Easy to love.
SnackAlert provides a flexible, lightweight, and customizable way to show toast/snackbar-style notifications in your React app using a modern hook-based API.
npm install snackalert
# or
yarn add snackalertSnackAlert gives you two powerful ways to get started instantly — automatic injection or app wrapping — with no extra setup.
Prefer manual control over your root app? Wrap it cleanly with the
withSnackAlerthelper.
// main.tsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import { App } from './App';
import 'snack-alert/css';
import { withSnackAlert } from 'snack-alert';
const AppWithAlerts = withSnackAlert(App);
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<AppWithAlerts />
</React.StrictMode>
);Perfect for static apps, SPAs, or dashboards — SnackAlert mounts itself globally.
import 'snack-alert/css';
import { mountSnackAlert } from 'snack-alert';
// Mount the alert system into the DOM (usually called once at app start)
mountSnackAlert();Now you can trigger alerts anywhere using the useAlert hook:
import { useAlert, AlertType } from 'snack-alert';
const MyComponent = () => {
const { showAlert } = useAlert();
return (
<button
onClick={() => showAlert({
type: AlertType.INFO,
message: "🥪 SNACK ALERT!!! Have you had a snack today?"
})
}
>
Show Alert
</button>
);
};// snackalert package
export { useAlert } from 'snack-alert';
export { AlertType, mountSnackAlert, withSnackAlert } from 'snack-alert';import { useAlert, AlertType } from 'snack-alert';
const MyComponent = () => {
const { showAlert } = useAlert();
const handleClick = () => {
showAlert({
type: AlertType.INFO,
message: "🥪 SNACK ALERT!!! Have you had a snack today?"
});
};
return (
<button onClick={handleClick}>
Show SnackAlert
</button>
);
};Hook that provides alert functionality in your component.
showAlert(options: ShowAlertOptions): void
| Option | Type | Required | Description |
|---|---|---|---|
type |
AlertType |
✅ | Type of alert: INFO, SUCCESS, WARNING, ERROR |
message |
string |
✅ | Text to display in the alert |
duration |
number |
❌ | Time in milliseconds before dismiss (default: 3000ms) |
enum AlertType {
INFO = 'info',
SUCCESS = 'success',
WARNING = 'warning',
ERROR = 'error'
}// index.ts
export { AlertType } from './main.tsx';
export { useAlert } from './core/hooks/provider.ts';- ⚡ One-line usage with
useAlert() - 💅 Clean, auto-dismiss toasts with type styling
- 🔁 Option to customize duration and styles
- 🧱 Zero dependencies, built with modern React
- 🧪 Ready for unit & integration testing
- Theming (light/dark/custom)
- Custom icons per alert type
- Toast positioning
- Global config
showAlert({
type: AlertType.SUCCESS,
message: "✅ Order placed successfully!",
duration: 5000
});snackalert/
├── core/
│ └── hooks/
│ └── provider.ts
├── main.tsx
└── index.tsFeel free to open issues or PRs for features, bugs, or enhancements. We'd love your input to make SnackAlert the best toast solution out there.
MIT License © 2025 Emmanuel Bankole
For questions or feedback, reach out via GitHub Issues or email
