Notification
License: LGPL-3.0 (GNU Lesser General Public License v3.0)
This resource is based on ox_lib which is licensed under LGPL-3.0.
⚠️ This redesign is a paid product. Only verified purchasers are eligible for support and updates. Unverified users will not receive any assistance under any circumstances.
Overview
3 notification designs available via the ox:notify convar. Additional convars control notification limits and queue behavior.
# config.cfg
set ox:notify 0
set ox:notifyLimit 1
set ox:maxNotifications 3
Designs
| Value | Name | Description |
|---|---|---|
0 |
Default | Icon box + title/description card with type label |
1 |
Quest Tracker | Dark quest-style card with document icon, title, progress timer, and description below divider |
2 |
Agent Card | Glass card with icon, title, type badge (Error/Success/Warning/Info), description, and bottom progress bar |
Design 0 — Default

Design 1 — Quest Tracker

Design 2 — Agent Card

Usage
Client-side
lib.notify({
title = 'Notification Title',
description = 'This is the notification body text.',
type = 'success',
duration = 5000,
})
Server-side
TriggerClientEvent('ox_lib:notify', source, {
title = 'Server Notification',
description = 'Sent from the server.',
type = 'info',
})
Parameters
| Field | Type | Default | Description |
|---|---|---|---|
id |
string? |
auto | Unique ID (prevents duplicates, allows updates) |
title |
string? |
— | Notification title |
description |
string? |
— | Body text (supports Markdown) |
duration |
number? |
4000 |
Display duration in ms |
type |
string? |
'info' |
Type: 'info', 'success', 'warning', 'error' |
position |
string? |
'top-left' |
Screen position |
icon |
string? |
auto | FontAwesome icon name |
iconColor |
string? |
auto | Icon color override |
iconAnimation |
string? |
— | 'spin', 'pulse', 'beat', 'fade', 'bounce', 'shake' |
image |
string? |
— | Image URL (replaces icon) |
sound |
table? |
— | Play game audio |
alignIcon |
string? |
— | 'top' or 'center' |
sound
| Field | Type | Description |
|---|---|---|
bank |
string? |
Audio bank |
set |
string |
Sound set name |
name |
string |
Sound name |
Type Colors
| Type | Color | Auto Icon |
|---|---|---|
info |
Blue #3b82f6 |
circle-info |
success |
Green #10b981 |
circle-check |
warning |
Yellow #f59e0b |
circle-exclamation |
error |
Red #ef4444 |
circle-xmark |
Notification Limit
When ox:notifyLimit is 1, notifications exceeding ox:maxNotifications are queued and shown after active ones expire.
set ox:notifyLimit 1 # Enable queue limit
set ox:maxNotifications 3 # Max 3 visible at once
Set ox:notifyLimit 0 for unlimited simultaneous notifications.
Position Options
| Value | Location |
|---|---|
top |
Top center |
top-right |
Top right |
top-left |
Top left (default) |
bottom |
Bottom center |
bottom-right |
Bottom right |
bottom-left |
Bottom left |
center-right |
Middle right |
center-left |
Middle left |
Examples
Success notification
lib.notify({
title = 'Purchase Complete',
description = 'You bought **Repair Kit** x1',
type = 'success',
duration = 3000,
})
Error with custom icon
lib.notify({
title = 'Access Denied',
description = 'You do not have the required key.',
type = 'error',
icon = 'lock',
duration = 5000,
})
With sound effect
lib.notify({
title = 'New Message',
description = 'You have a new phone message.',
type = 'info',
sound = {
set = 'Phone_SoundSet_Default',
name = 'Text_Arrive_Tone',
},
})
Update existing notification
-- First notification
lib.notify({
id = 'download-progress',
title = 'Downloading...',
description = 'Progress: 50%',
type = 'info',
duration = 10000,
})
-- Update it
lib.notify({
id = 'download-progress',
title = 'Downloading...',
description = 'Progress: 100%',
type = 'success',
duration = 3000,
})
Last updated: 2026-02-18