Documentation
Add components
Use npx robloxui add to download component source files, install the theme package, and write files to your project.
Meet the prerequisites
Node.js 20.12+
Required to run the CLI. Check with `node --version`, or install from nodejs.org.
Roblox Studio
Required to open game.rbxl and press Play. Init generates game.rbxl when Rojo is available.
mise
The CLI bootstraps mise with the official installer when needed, then installs pinned Rojo and Wally from `mise.toml`.
A Roblox project
Run `npx robloxui init` to scaffold one, or use an existing project with rojo.json / wally.toml. Components install to src/client/ui/components/.
Existing project? You only need Node 20.12+ and a rojo.json or wally.toml — skip init and use npx robloxui add directly.
New to Roblox-TS? See the roblox-ts getting started guide.
Run the add command
No project yet? Run robloxui init first — see the add components guide. Then use npx to add any component by slug; the CLI writes files to src/client/ui/components/ (add --theme to also install the theme package).
bashnpx robloxui add <component-slug>bashnpx robloxui add primary-buttonBrowse the catalog to find a slug, or copy the exact command from each component's detail page.
Let the CLI detect your project
The CLI scans your project root for a config file and picks the right install path automatically (the theme is opt-in per command):
rojo.json + default.project.jsonTypeScript compiled to Luau via rbxtsc. Init includes @rbxts/react and TSX sample UI; the theme is opt-in.
bashnpm install robloxui # optional robloxui/theme subpathwally.toml + default.project.jsonPure Luau with Wally packages. robloxui add --theme vendors the bundled RuiTheme into Packages/.
bashrobloxui add <slug> --theme # vendors bundled RuiThemeDefault install path: src/client/ui/components/. If neither config file is found, the CLI prompts you to choose manually.
Use the component
Import the component the same way the CLI prints in its summary:
import { PrimaryButton } from "./ui/components/primary-button";