Bean Notifications v1.0

Plug-and-play toasts. Twelve editable templates. Nine screen positions.
  • ChatGPT_Image_May_31_2026_at_02_22_45_AM.png
  • 019e7b49-15d2-7ca8-bceb-6c49213070dc (1).png
  • ChatGPT_Image_May_31_2026_at_02_22_45_AM.png
  • 019e7b49-15d2-7ca8-bceb-6c49213070dc (1).png

Bean Notifications

Plug-and-play toasts. Twelve editable templates. Nine screen positions. Type-driven icons. Built right.



Most notification scripts hand you one preset, hardcoded colors, and a layout you can't touch without digging through Lua. Bean Notifications flips that — every visual lives in a real ScreenGui Frame in your ReplicatedStorage. You drag it. You recolor it. You duplicate it. The Lua side runs the pipeline; the looks are 100% yours.

It also actually ships production-ready: rate-limited, sanitized, race-free on join, mobile-aware, and tested against the kinds of edge cases free models silently break on.



✦ FEATURES

  • Twelve built-in presets — Clean, Neon, Glass, Gradient, Military, RP, Classic, Mini, VIP, Horror, eSports, Kids. Every one is a real Frame you can edit live in Studio.
  • Nine screen positions — top / middle / bottom across left / center / right. Middle row stacks outward from the vertical center for centered banners and modal-style alerts.
  • Type-driven icons — pass Type = "Success" and the configured green check icon appears, automatically tinted. Eight built-in types ship pre-tuned (Success, Error, Warning, Info, Question, Star, Heart, Lock) and you can register your own in two lines (Coin, Skull, Crown — whatever fits your game).
  • Editable templates, no code required — open ReplicatedStorage.Notify.Templates.GridPreview, drag anything around, recolor, add UICorner / UIStroke / UIGradient / custom backgrounds. Duplicate a Frame, rename it, and that name becomes a usable preset instantly.
  • Server-authoritative pipeline — Title and Body sanitized (control chars stripped, length capped), asset paths whitelisted, Color3 only accepted as a true Color3 value, per-player token-bucket rate limit (5/s + 10 burst, configurable).
  • Race-free join handshake — notifications fired during Players.PlayerAdded are buffered server-side until the client signals ready. Nothing gets dropped during the join window. (Pending queue capped at 20 per player.)
  • Hover-to-pause, progress bar, click-to-dismiss — every behavior toggleable globally in Config or per-call in options.
  • Built-in chat commands — type /notify show in chat to fire every preset across every position instantly. Plus /notify <preset>, /notify <preset> <Type>, /notify walk, /notify clear, and /notify help. Studio-only by default; configurable per-UserId or open to all.
  • Showcase API:Showcase(player) fires every preset across every position in one shot for screenshots; :ShowcaseSequential(player) fires them one at a time for walkthrough videos.
  • Optional sound per call — pass an asset id, it plays on show.
  • Stack overflow strategiesDropOldest (default) / Queue / DropNew, configurable.
  • Client-side hooksNotificationShown and NotificationHidden BindableEvents for buyer extensions (analytics, accessibility narration, sound layers, anything).
  • Mobile-aware — touch users get tap-to-close cleanly; hover-to-pause is correctly skipped instead of silently breaking.
  • Frame attributes for behaviorCompact (one-line, no body), TitleUpper (auto-uppercase) — set on the template Frame in the Properties panel, no script edits.



✦ THREE LINES TO SHIP

Code:
local Notify = require(game.ServerScriptService.NotifyServer.API)

Notify:Send(player, "Saved!", nil, "Clean", { Type = "Success" })
Notify:Broadcast("Server restart in 60s", nil, "Horror", { Type = "Warning" })

✦ EDIT THE VISUALS, NO CODE

Open ReplicatedStorage.Notify.Templates.GridPreview. Inside you'll find one Frame per preset with named children the system reads:

  • Title — TextLabel (required)
  • Body — TextLabel (optional, removed in Compact)
  • IconHolder > Icon — ImageLabel (optional, hidden when no icon)
  • CloseButton — TextButton (optional)
  • ProgressBarBackground > ProgressBar — Frames (optional)

Recolor them. Resize them. Drop in custom backgrounds. Add accent bars, shadows, gradients. Move things around entirely. Duplicate a Frame, rename it "MyCustomPreset", and your next Notify:Send(..., "MyCustomPreset") uses it.



✦ TYPE-DRIVEN ICONS

Pass a Type with your notification and the system uses the configured icon asset and tint color from Config.IconTypes:

Code:
Notify:Send(player, "Saved!",     nil,                  "Clean",   { Type = "Success" })
Notify:Send(player, "Banned",     "Cheating detected.", "Horror",  { Type = "Error"   })
Notify:Send(player, "Locked",     "VIP only.",          "VIP",     { Type = "Lock"    })

Built-in types ship with colors pre-tuned (green Success, red Error, yellow Warning, blue Info, etc.) and blank Asset slots so you drop in icons that match your game's art style — Material, Phosphor, Outlined, your own commission. To configure:

Code:
Config.IconTypes = {
    Success  = { Asset = "rbxassetid://12345", Color = Color3.fromRGB( 80, 220, 130) },
    Error    = { Asset = "rbxassetid://12346", Color = Color3.fromRGB(230,  80,  80) },
    Warning  = { Asset = "rbxassetid://12347", Color = Color3.fromRGB(255, 200,  60) },
    -- ...

    -- Add your own types in two lines:
    Coin     = { Asset = "rbxassetid://12348", Color = Color3.fromRGB(255, 200,  70) },
    Skull    = { Asset = "rbxassetid://12349", Color = Color3.fromRGB(220, 220, 220) },
}



✦ OPTIONS REFERENCE

Code:
Preset    string    visual style (defaults to Config.DefaultPreset)
Position  string    one of nine — TopLeft / TopCenter / TopRight / MiddleLeft /
                    MiddleCenter / MiddleRight / BottomLeft / BottomCenter / BottomRight
Duration  number    seconds before auto-dismiss (0.5 to 600)
Type      string    semantic icon type — uses Config.IconTypes for asset + tint
Icon      string    rbxassetid:// or numeric id (overrides Type's asset)
Color     Color3    overrides the title text color
Sound     string    rbxassetid:// or numeric id, plays on show
Volume    number    0 to 5



✦ FULL API

Serverrequire(game.ServerScriptService.NotifyServer.API)

Code:
:Send(player, title, body?, preset?, options?)         -> bool
:Broadcast(title, body?, preset?, options?)            -> bool
:Clear(player)                                         -> bool
:ClearAll()                                            -> bool
:Showcase(player, options?)                            -> bool
:ShowcaseSequential(player, interval?, options?)       -> bool
:GetPresetNames()                                      -> { string }
:GetPositions()                                        -> { string }
:GetTypes()                                            -> { string }

Clientrequire(game.StarterPlayer.StarterPlayerScripts.NotifyClient.API)

Code:
:Show(title, body?, preset?, options?)                 -> id?
:Dismiss(id)                                           -> bool
:DismissAll()                                          -> bool
:Showcase(options?)                                    -> bool
:ShowcaseSequential(interval?, options?)               -> bool
:GetPresetNames()                                      -> { string }
:GetPositions()                                        -> { string }
:GetTypes()                                            -> { string }
.NotificationShown                                     -> RBXScriptSignal
.NotificationHidden                                    -> RBXScriptSignal

Server API is also exposed at _G.BeanDevNotifyAPI and shared.BeanDevNotifyAPI for tooling that prefers globals.



✦ INSTANT TESTING — CHAT COMMANDS

Drag the install package in, hit Play, type /notify show in the chat box. Every preset fires across every position in one go. Done. No test scripts to write, no config to wire up.

Code:
/notify                       fire a default test toast
/notify <preset>              test a specific preset       (e.g. /notify Horror)
/notify <preset> <Type>       preset + Type icon            (e.g. /notify Clean Success)
/notify show                  fire every preset across every position
/notify walk                  walk through every preset, one at a time
/notify clear                 clear all current notifications
/notify help                  show the command list as a notification

Locked to Roblox Studio playtest by default — live-game players cannot run them. Open access to specific UserIds, the game owner only, or all players by changing Config.ChatCommands.Permission. Disable entirely with Enabled = false or by deleting the ChatCommands Script (it's fully modular).

Works on both TextChatService (modern Roblox chat) and LegacyChatService — detected automatically at server start, no buyer config needed.



✦ SECURITY

  • Title (1-80 chars) and Body (up to 240 chars) sanitized — control characters stripped, leading/trailing whitespace trimmed, length capped
  • Icon and Sound restricted to rbxassetid:// and rbxasset:// formats only
  • Type whitelisted against Config.IconTypes; unknown types are dropped silently
  • Position whitelisted server-side (32 char cap, alphanumeric + underscore only)
  • Color3 only accepted as a true Color3 value, never coerced from strings
  • Duration clamped to 0.5-60s server-side, 0.5-600s client-side
  • Per-player rate limit — token bucket, 5/s + 10 burst, all configurable
  • Chat commands gated server-side (Studio-only by default) — players cannot trigger test floods in live games
  • Rich text disabled by default; enable Config.Display.AllowRichText only if every Title and Body comes from a trusted source



✦ INSTALL

One minute. Drag-and-drop. The install package lives in ServerStorage so it's out of the way of your live game.

  1. Open BeanNotifications_INSTALL_PACKAGE in ServerStorage
  2. Drag the children of 1_ReplicatedStorage into ReplicatedStorage
  3. Drag the children of 2_ServerScriptService into ServerScriptService
  4. Drag the children of 3_StarterPlayerScripts into StarterPlayer.StarterPlayerScripts
  5. Delete the install package — system runs on play
  6. Hit Play, type /notify show in chat to verify everything works

No webhooks. No obfuscation. No external dependencies. Full source.



✦ PAIRS WELL WITH

  • Bean Tags — overhead nameplate ranks
  • Bean Chat Tags — in-chat rank prefixes
  • Bean Loading — animated loading screen

All by Bean Development. Bundle pricing on the way.




Lifetime updates ✦ Discord support ✦ Full source

Buy a license now
$10.00
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
1 year
Share and earn
Refer this resource and earn a 10% commission.
41 Views
0 Purchases
1 Downloads
Jun 3, 2026 Published
N/A Updated
Not yet rated
48.4 KB File size
Open source
  1. Yes
DRM-free
  1. No
Unobfuscated
  1. Yes
Type
  1. System
  1. Menu & UI
Genre
  1. Party & casual
  1. Survival
  1. Open world
Supported languages
  1. English
Creator
Recommended for you
Turn your first impression into a polished, branded experience.
Not yet rated
0 purchases
350+ command admin panel with cross-server moderation, Ban API, ranks & a mobile-ready UI
5.00 star(s) 9 ratings
605 purchases
Overhead UI System asset, perfect for adding player information displays to your Roblox game.
4.50 star(s) 6 ratings
547 purchases
Handcuff System asset, ideal for adding functional arrest mechanics to your Roblox game.
5.00 star(s) 6 ratings
389 purchases
Bruisers Gun Engine | Showcases Below
5.00 star(s) 16 ratings
319 purchases
Share and earn
Refer this resource and earn a 10% commission.
41 Views
0 Purchases
1 Downloads
Jun 3, 2026 Published
N/A Updated
Not yet rated
48.4 KB File size
Open source
  1. Yes
DRM-free
  1. No
Unobfuscated
  1. Yes
Type
  1. System
  1. Menu & UI
Genre
  1. Party & casual
  1. Survival
  1. Open world
Supported languages
  1. English
Creator
Recommended for you
Turn your first impression into a polished, branded experience.
Not yet rated
0 purchases
350+ command admin panel with cross-server moderation, Ban API, ranks & a mobile-ready UI
5.00 star(s) 9 ratings
605 purchases
Overhead UI System asset, perfect for adding player information displays to your Roblox game.
4.50 star(s) 6 ratings
547 purchases
Handcuff System asset, ideal for adding functional arrest mechanics to your Roblox game.
5.00 star(s) 6 ratings
389 purchases
Bruisers Gun Engine | Showcases Below
5.00 star(s) 16 ratings
319 purchases
Top