A comprehensive, but not exhaustive, translation of ReactJS 17.x into Luau. This is a read-only mirror.
562
stars
62
commits
Luau
primary language
Sep 2, 2026
updated
A comprehensive, but not exhaustive, translation of ReactJS 17.x into Luau.
React Luau is a declarative library for building user interfaces. It's a highly-tuned translation of ReactJS and currently based on React 17.
Learn how to use React Luau in your project.
We have several examples on the website. Here is the first one to get you started:
local React = require(Packages.React)
local ReactRoblox = require(Packages.ReactRoblox)
local e = React.createElement
local function HelloMessage(props: {
name: string,
})
return e("TextLabel", {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
AutomaticSize = Enum.AutomaticSize.XY,
Text = `Hello, {props.name}!`,
})
end
local function App()
return e("ScreenGui", {}, {
MyMessage = e(HelloMessage, {
name = "Taylor",
}),
})
end
local root = ReactRoblox.createRoot(Instance.new("Folder"))
root:render(ReactRoblox.createPortal(e(App), Players.LocalPlayer.PlayerGui))
This example will render "Hello, Taylor!" into a TextLabel on the screen.
React Luau is MIT licensed. Go do cool stuff with it!
Luau
98.9%
A comprehensive, but not exhaustive, translation of ReactJS 17.x into Luau. This is a read-only mirror.
562
stars
62
commits
Luau
primary language
Sep 2, 2026
updated
A comprehensive, but not exhaustive, translation of ReactJS 17.x into Luau.
React Luau is a declarative library for building user interfaces. It's a highly-tuned translation of ReactJS and currently based on React 17.
Learn how to use React Luau in your project.
We have several examples on the website. Here is the first one to get you started:
local React = require(Packages.React)
local ReactRoblox = require(Packages.ReactRoblox)
local e = React.createElement
local function HelloMessage(props: {
name: string,
})
return e("TextLabel", {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.fromScale(0.5, 0.5),
AutomaticSize = Enum.AutomaticSize.XY,
Text = `Hello, {props.name}!`,
})
end
local function App()
return e("ScreenGui", {}, {
MyMessage = e(HelloMessage, {
name = "Taylor",
}),
})
end
local root = ReactRoblox.createRoot(Instance.new("Folder"))
root:render(ReactRoblox.createPortal(e(App), Players.LocalPlayer.PlayerGui))
This example will render "Hello, Taylor!" into a TextLabel on the screen.
React Luau is MIT licensed. Go do cool stuff with it!
Luau
98.9%