useWebNotification
The Web Notification interface of the Notifications API is used to configure and display desktop notifications to the user.
useWebNotification wraps the Notifications API to display native desktop/mobile notifications. It returns an object with isSupported, a show function (accepting a title and NotificationOptions), a close function, an ensurePermissions function, and a permissionGranted ref. Pass true to auto-request notification permission on mount.
When to Use
- Alerting users about new messages, updates, or events even when the browser tab is not focused
- Sending reminders for scheduled tasks, timers, or calendar events
- Notifying users about completed background operations (uploads, downloads, builds)
Notes
- SSR-safe: Returns
isSupported: falseand no-op functions during server-side rendering. NoNotificationconstructor or permission requests occur on the server. - Permissions: Notifications require explicit user permission. Use
ensurePermissions()or passrequestPermissions: trueto prompt the user. ThepermissionGrantedref tracks the current permission state. - Related hooks: Use alongside
usePermissionwith"notifications"to proactively check notification permission status without triggering a prompt.
Usage
Live Editor
function Demo() { const { isSupported, show, close } = useWebNotification(true); return ( <div> <p>Supported: {JSON.stringify(isSupported)}</p> {isSupported ? ( <div> <button onClick={() => { show("Hello, world from ReactUse!"); }} > Show Notification </button> <button onClick={close}>Close</button> </div> ) : ( <div>The Notification Web API is not supported in your browser.</div> )} </div> ); };
Result
API
useWebNotification
Returns
UseWebNotificationReturn
Arguments
| Argument | Description | Type | DefaultValue |
|---|---|---|---|
| requestPermissions | auto request permission | boolean | undefined | - |
UseWebNotificationReturn
| Property | Description | Type | DefaultValue |
|---|---|---|---|
| isSupported | whether browser support | boolean (Required) | - |
| show | show function | UseWebNotificationShow (Required) | - |
| close | close function | () => void (Required) | - |
| ensurePermissions | request permissions function | () => Promise<boolean | undefined> (Required) | - |
| permissionGranted | permission status | React.MutableRefObject<boolean> (Required) | - |
UseWebNotificationShow
Returns
Notification | undefined
Arguments
| Argument | Description | Type | DefaultValue |
|---|---|---|---|
| title | notification title | string (Required) | - |
| options | options passed to NotificationOptions | NotificationOptions | undefined | - |