> For the complete documentation index, see [llms.txt](https://mango-5m.gitbook.io/mango5m-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mango-5m.gitbook.io/mango5m-docs/free-resources/mango-notify/reference/performance.md).

# Performance

Why Mango Notify idles at 0.00ms, and what that means in practice.

Mango Notify is built around one rule: **the game thread does nothing unless a notification is actually being sent.**

## 0.00ms idle

* **No loops, no ticks.** There is not a single `CreateThread`-with-`Wait` loop in the resource. The Lua side is purely export- and event-driven — when nothing calls it, it costs nothing. `resmon` reads 0.00ms at idle *and stays there while notifications are visible*, because display, timing, and animation all happen inside the NUI.
* **One NUI message per action.** Showing, updating, or removing a notification sends exactly one message to the UI — nothing is polled, repeated, or synced on a timer.
* **CSS animations.** Entry/exit animations and progress bars are pure CSS, running on the browser compositor — no JavaScript animation frames, no per-frame Lua.
* **No leaks.** Dismissed notifications have their DOM elements destroyed and their timers cleared. Long sessions don't accumulate anything.
* **Instant state queries.** `IsVisible` / `GetQueue` read a Lua-side mirror of the UI state — they never round-trip to the NUI.

## What it means for you

* Safe to `ensure` on any server regardless of player count — cost scales with notifications *sent*, not players online.
* Notification bursts (e.g. a dispatch storm) are absorbed by the queue: at most `Config.MaxNotifications` are rendered at once, and the rest wait at zero render cost.
* There is no database and no disk I/O — nothing to slow down as your server grows.
* **No external requests.** Fonts and icons are bundled (\~0.79 MB, cached after first load), so the UI never waits on Google Fonts or a CDN — and looks identical for players behind a restrictive network.

{% hint style="info" %}
The only measurable work happens in the browser layer while notifications animate — the same place your other NUI resources render — and it is bounded by `MaxNotifications`.
{% endhint %}
