Notifications

Toasts that stack, cap themselves, and dismiss on a timer.

The smallest notification#

Luau
win:Notify({ Text = "Saved." })

Building it up#

Luau
win:Notify({
    Title = "Configuration",
    Text = "Your settings were saved.",
    Icon = "check",
    Duration = 4,
})
OptionTypeDefaultWhat it does
TextreqstringThe body of the toast.
TitlestringA bolder first line.
IconstringAn icon shown alongside.
IconColorColor3Overrides the icon's colour — useful for errors.
DurationnumberSeconds on screen before it dismisses itself.

Signalling failure#

There is no separate error type; colour the icon:

Luau
win:Notify({
    Title = "Failed",
    Text = "Could not reach the server.",
    Icon = "triangle-alert",
    IconColor = Color3.fromRGB(232, 93, 93),
    Duration = 6,
})

Give failures a longer duration than successes. A confirmation can flash past; an error the user missed is an error they will hit again.

Spamming them is safe#

Toasts stack, and the stack is capped — five by default. When a sixth arrives, the oldest is dismissed with its normal exit animation rather than being destroyed outright, so a burst looks like a queue moving rather than the UI glitching.

Each toast also scales in as it arrives, which is what stops six simultaneous notifications reading as one solid block appearing.

Change the cap with Ember.Configure:

Luau
Ember.Configure({ Effects = { MaxToasts = 3 } })

They follow the theme#

Notifications are painted from the same palette as everything else, including their burn-in gradient and spark particles. Switching theme repaints toasts already on screen.

Notification or Status?

A notification interrupts: something happened, look now. A Status sits still: this is how things are. Reaching for a toast to show a live counter means the user gets a stack of toasts they have to watch.