Typed Roblox UI library for GTA-style interaction and pause menus.
GTA Fast UI is a module-only Luau library that recreates the core GTA menu semantics in Roblox:
- compact interaction-menu layout
- strong active-row highlight
- inline
list,slider, andtogglemutations - nested submenu stacks
- keyboard, gamepad, and touch input
- movement lock while the menu is open
- strict Luau typing across the public API
The library is packaged for ReplicatedStorage and can be created directly from a LocalScript.
src/ReplicatedStorage/GTAFastUI: library modulesexamples/local-script-example.luau: minimal inline example
Import the repo with Rojo using default.project.json, or copy the modules under src/ReplicatedStorage/GTAFastUI into ReplicatedStorage.GTAFastUI.
--!strict
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local GTAFastUI = require(ReplicatedStorage.GTAFastUI.Main)
local Types = GTAFastUI.Types
type Config = Types.Config
type Menu = Types.Menu
type ItemContext = Types.ItemContext
local rootMenu: Menu = {
id = "interaction-menu",
title = "Interaction Menu",
subtitle = "Interaction Menu",
description = "Select to place your waypoint at a set location.",
items = {
{
kind = "list",
id = "quick-gps",
label = "Quick GPS",
description = "Cycle destinations with left and right, confirm with Enter / A.",
options = { "Eclipse Towers, 40", "Ammu-Nation", "Agency" },
index = 1,
onActivated = function(_, value: string, context: ItemContext)
warn(string.format("[GTA Fast UI] Quick GPS -> %s (%s)", value, table.concat(context.getMenuPath(), " > ")))
end,
},
},
}
local config: Config = {
title = "Interaction Menu",
variant = "interaction",
accentColor = Color3.fromRGB(46, 112, 191),
rootMenu = rootMenu,
toggleKeybind = Enum.KeyCode.M,
gamepadToggleKeybind = Enum.KeyCode.ButtonStart,
showTouchControls = true,
startsOpen = false,
}
local menu = GTAFastUI.new(config)Mopens and closes the interaction menu by defaultStarttoggles the menu on gamepad- arrow keys and D-pad move through rows
- left/right adjust
listandsliderrows Enter/ButtonAconfirms the current rowSpaceis ignored while the menu is openEsc/Backspace/ButtonBgoes back
When the menu is open, character movement is disabled and the menu consumes directional navigation input.
Entry module: ReplicatedStorage.GTAFastUI.Main
GTAFastUI.new(config)GTAFastUI.create(config)GTAFastUI.mount(config)GTAFastUI.Types
Typed item kinds:
actiontogglelistslidersubmenudivider
list and slider rows support both mutation callbacks and confirm callbacks:
onChangedonActivated
- The library uses built-in Roblox fonts, so it approximates GTA typography rather than matching Rockstar's exact font files.
- The interaction-menu shell is tuned against GTA Online interaction-menu references and Los Santos Customs menu structure.
- The current touch support is intentionally pragmatic; the design remains controller-first and keyboard-first.