Add Achievement System to your Roblox project in one command. Requires Node 18+ and a Roblox project — run robloxui init first if you don't have one yet. See the docs.
bashnpx robloxui add achievement-systemFirst time? Start with the documentation.
import { Achievement System } from "./src/client/ui/components/achievement-system";local AchievementService = require(script.Parent.AchievementService)
local svc = AchievementService.new({
{ id = "kills100", name = "Slayer", description = "Defeat 100 enemies", criteria = { stat = "kills", threshold = 100 } },
})
svc.onUnlock = function(def) print("Unlocked:", def.name) end
svc:RegisterStat("kills", 100)Rule-driven unlock engine. AchievementService holds definitions with a criteria {stat, threshold}; RegisterStat checks all matching achievements and fires onUnlock + emits when crossed. AchievementToast slides in a gold-bordered card (🏆 + name) via Back easing and auto-slides out after 4s. Wire any gameplay stat to unlock achievements.
by RobloxUI Team
| Author | RobloxUI Team |
| Framework | Roblox-TS + React-Luau |
| Category | Systems |
| Dependencies | @rbxts/react |
| Theme Tokens |
| colors.primary, colors.primaryLight, colors.primaryDark, colors.secondary, colors.secondaryLight, colors.secondaryDark, colors.accent, colors.accentLight, colors.accentDark, colors.bg, colors.bgSecondary, colors.bgTertiary, colors.surface, colors.border, colors.borderLight, colors.glow, colors.text, colors.textPrimary, colors.textSecondary, colors.textMuted, colors.success, colors.successLight, colors.error, colors.errorLight, colors.warning, colors.info, colors.gold, colors.goldLight, gradients.primary, gradients.gold, gradients.health, gradients.mana, gradients.purple, gradients.card, gradients.surface, gradients.surfaceLight, spacing.3xs, spacing.2xs, spacing.xs, spacing.sm, spacing.md, spacing.lg, spacing.xl, radius.sm, radius.md, radius.lg, radius.xl |
| Last Updated | July 31, 2026 |