A highly customizable and performant toast notification library for React Native. Featuring smooth animations, swipe gestures, and flexible styling options.
- Single-root container: Mount once at the app root.
- Imperative API: Use
useToasthook anywhere in your app. - Light/Dark Theme: System-aware with optional forced theme.
- Promise Helper: Show loading, success, and error states.
- Customizable: Add custom content, styles, and emojis.
Install the package using npm or yarn:
npm install rn-toastifyOr:
yarn add rn-toastifyEnsure the following peer dependencies are installed:
reactreact-nativereact-native-reanimated(v2+)lottie-react-native
For iOS, run:
cd ios && pod installAdd the ToastContainer to your app's root component (e.g., App.js):
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import MainNavigator from './src/navigation';
import { ToastContainer } from 'rn-toastify';
export default function App() {
return (
<>
<NavigationContainer>
<MainNavigator />
</NavigationContainer>
<ToastContainer theme="dark" /> {/* Optional: Force theme */}
</>
);
}Call toast methods anywhere in your app:
import React from 'react';
import { View, Button } from 'react-native';
import useToast from 'rn-toastify';
export default function HomeScreen() {
const { success, error } = useToast();
return (
<View>
<Button title="Show Success" onPress={() => success('Operation successful!')} />
<Button title="Show Error" onPress={() => error('Something went wrong.', { position: 'top' })} />
</View>
);
}The useToast hook provides the following methods:
| Method | Description |
|---|---|
show |
Display a custom toast. |
success |
Show a success toast. |
error |
Show an error toast. |
custom |
Render a custom React element. |
emoji |
Display a toast with an emoji. |
promise |
Handle promise states with toasts. |
| Option | Type | Description |
|---|---|---|
duration |
number |
Duration in milliseconds. |
position |
string |
`'top' |
style |
object |
Custom styles for the toast wrapper. |
| Option | Type | Description |
|---|---|---|
loading |
string |
Message during loading. |
success |
string |
Message on success. |
error |
string |
Message on error. |
const { success } = useToast();
success('Operation successful!', { duration: 1500, position: 'top' });const { promise } = useToast();
const myPromise = fetch('/api/save');
promise(myPromise, {
loading: 'Savingβ¦',
success: 'Saved successfully!',
error: 'Save failed.',
});const { custom } = useToast();
custom(<MyCustomComponent />, { duration: 2000 });const { emoji } = useToast();
emoji('Great job!', 'π', { duration: 1300 });- Automatic: Detects system theme (light/dark).
- Forced: Pass
theme="light"ortheme="dark"toToastContainer.
If the system theme is unavailable, the default is light.
- Toasts not showing: Ensure
ToastContaineris mounted at the app root. - Reanimated errors: Add the Reanimated Babel plugin and rebuild.
- Lottie issues on iOS: Run
cd ios && pod install.
MIT License. See LICENSE for details.
