A fully type-safe, lightweight, and reusable toast notification system for React Native and Expo. It features a queue system to manage multiple notifications, customizable animations, optional haptic feedback, and a progress bar.
- 🚀 Queue-based system: Toasts wait their turn, ensuring no message is missed.
- 🎨 4 Types: Success, Error, Info, Warning.
- ⚡ Lightweight: Zero dependencies (optional
expo-haptics). - 📱 Haptic Feedback: Optional integration with
expo-haptics. - ⏳ Progress Bar: Visual indicator of remaining time.
- 🎭 Animations: Smooth fade and slide animations.
- 🔧 Type-Safe: Written in TypeScript with full type definitions.
- ⚛️ React Native & Expo: Works seamlessly with both.
npm install react-native-toast-queue
# or
yarn add react-native-toast-queueIf you want haptic feedback, install expo-haptics:
npx expo install expo-hapticsimport { ToastProvider } from "react-native-toast-queue";
export default function App() {
return (
<ToastProvider>
<YourApp />
</ToastProvider>
);
}import { useToast } from "react-native-toast-queue";
import { Button, View } from "react-native";
const MyComponent = () => {
const toast = useToast();
const handlePress = () => {
toast.show({
message: "Hello World!",
type: "success",
duration: 3000,
haptic: true,
position: "top",
});
};
return (
<View>
<Button title="Show Toast" onPress={handlePress} />
</View>
);
};Returns an object with the following methods:
show(options: ToastOptions): Adds a toast to the queue.hide(): Dismisses the current toast immediately.clear(): Clears the entire queue and dismisses the current toast.
| Property | Type | Default | Description |
|---|---|---|---|
message |
string |
Required | The message to display. |
type |
'success' | 'error' | 'info' | 'warning' |
'info' |
The visual style of the toast. |
duration |
number |
3000 |
Duration in milliseconds. |
position |
'top' | 'bottom' |
'top' |
Position on the screen. |
haptic |
boolean |
false |
Trigger haptic feedback on show (requires expo-haptics). |
showProgress |
boolean |
false |
Show a progress bar indicating remaining time. |
style |
ViewStyle |
undefined |
Custom styles for the container. |
textStyle |
TextStyle |
undefined |
Custom styles for the message text. |
onPress |
() => void |
undefined |
Callback when the toast is pressed. |
icon |
ReactNode |
undefined |
Custom icon component. |
You can customize the look and feel by providing style and textStyle props in the show method options.
toast.show({
message: "Custom Style",
style: { backgroundColor: "#333", borderRadius: 20 },
textStyle: { color: "#FFD700", fontSize: 18 },
});MIT
