Lumin Suite - The next generation of tooling by Lumin

Next Gen Tooling - It’s Here

Lumin is bringing developers the next generation of tooling for Roblox, with no cost associated. We believe that it is important that everyone has quality tooling; whether you’re a beginner or designing the top experiences, it’s our promise to provide you with quality tooling. :smiley:

The Vast Lineup

lumin/framework (stable) :green_circle:

Lumin Framework is the ultimate game framework for Luau games. It comes packed with advanced dependency management systems and of course its own ease of use! It’s also the most lightweight framework, beating almost all available ones relative to features and size.

GitHub GitHub

lumin/ui (rc) :yellow_circle:

Lumin UI is an unrivaled and new UI framework for Roblox. It features a combination of all of the greatest parts of every popular UI framework; it’s based off of Fusion and React. It combines Fusion’s ease of use, React’s excellent developer API to make something very beginner friendly and performant. It’s also one of the most lightweight UI libraries just like Framework, yet it still features the essential parts of a UI framework and even more.

GitHub GitHub

What’s Next

Lumin is hard at work creating some :sparkles: amazing plugins to improve your workflow. Now, you’re probably asking yourself: “What could they be working on?” The answer to this is two plugins that speed up some of the most important parts of game development. These will come later in Q2 2025, and you can view progress on our GitHub or Discord server.

lumin/creative (unreleased) :red_circle:

Lumin Creative is a creative suite for Roblox Studio (soon). It features a character creation dashboard, a skybox library with hundreds of professional skyboxes, a lighting editor, and a VFX library.

lumin/previewer (unreleased) :red_circle:

Lumin Previewer is a dashboard to preview any asset, data, or physics simulation without ever even starting a game. See physics using a play/pause UI with a timeline, read and edit datastore data, and preview assets such as decals and more.

Extra Resources

Made with :heart: by the developers and contributors at Lumin Labs

Discord GitHub Sponsor

7 Likes

I honestly don’t get what alot of this could be useful for…

lumin/ui is basically just Fusion

and I don’t really get what the lifecycles in lumin/framework are useful for? RBXScriptConnections work perfectly fine

Overall just alot of talk and alot less to show for it (atleast at a glance)…

1 Like

the main difference is the code internally. fusion and lumin UI might look similar on the surface level and both achieve the same thing, but Lumin UI fixes some pain points in Fusion. Lumin UI typically also has improved performance and it’s also a lot smaller.

Lifecycles are a QOL feature, I know a lot of cases where they can make or break people’s workflows.

You can check the github for more… the description included should be enough for someone to be intrigued

If you’re not interested, that’s fine, but it’s not worth reiterating on these points if I give you the answer.

1 Like

Can you show us some example code?
I am extremely curious on what the syntax is like.

And is it declarative like SwiftUI?

var body: some View {
   VStack { // Vertically stack all UI in the box.
      Text("This is a TextLabel for example.")
   }
}
1 Like

This is some code from the github example:

local PlayerService = game:GetService("Players")
local Player = PlayerService.LocalPlayer

local UI = require(path.to.UI)
local New = UI.New
local Event = UI.Event

New "ScreenGui" {
    Name = "SampleGUI",
    IgnoreGuiInset = true,
    Parent = Player:WaitForChild("PlayerGui"),

    New "TextButton" {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = UDim2.fromScale(0.5, 0.5),
        Size = UDim2.fromOffset(100, 100),
        ZIndex = 1,
        Event("Activated", function()
            print("Button clicked!")
        end),
    }
}

I’m not sure how Swift UI works, but these look quite similar. If you’re open to giving feedback on how I could make the workflow above better I’d love to hear it

1 Like

wait this looks kinda fire… I might need to try this out!!!

1 Like

The dream UI framework on Roblox for me is one that functions similar to SwiftUI.

One of my biggest complaints with UI frameworks on Roblox is that you have to Parent everything, and also do everything manually.

Here is a SwiftUI syntax that I could see working on Roblox based on your example.

local PlayerService = game:GetService("Players")
local Player = PlayerService.LocalPlayer

local UI = require(path.to.UI)
local New = UI.New
local Event = UI.Event

UI.newView { -- Creates a ScreenGUI.
    UI.TextButton("Click Here") -- This immediately sets the text. You could also add a state variable in here.
        .cornerRadius(12) -- Create a UICorner with a corner radius of 12
        .onClick(function()
             print("Button Clicked")
        )
        .size(UDim2.fromOffset(100, 100))

-- My idea was instead of Positioning, what if it all was vertical? Starting from the center of the screen!
}
.parent() -- If you insist on manually setting the parent, you can set it here.
.name("SampleGUI") -- If you insist on setting the name.
.ignoreGuiInset() -- Defaults to true, but you won't need a parameter. Idk if this is possible tho.
1 Like

I’d say Lumin UI is already quite similar to this, but I probably will be adding the newView shortcut. I’ll have to check out the Swift docs later

1 Like

Well instead of setting everything (like Parent, Position, etc…) manually, and creating new objects like UICorner manually, I was thinking what if you declare it with one line of code. Turning this:

New "ScreenGui" {
    Name = "SampleGUI",
    IgnoreGuiInset = true,
    Parent = Player:WaitForChild("PlayerGui"),

    New "TextButton" {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = UDim2.fromScale(0.5, 0.5),
        Size = UDim2.fromOffset(100, 100),
        ZIndex = 1,
        Text = "Click Here"
        Event("Activated", function()
            print("Button clicked!")
        end),
    }

    New "UICorner" {
        CornerRadius = UDim.new(0, 12)
        Parent = -- Text Button
    }
}

Into the code I gave you earlier.

Hey everyone! I’ve been hard at work on the website and it got a huge overhaul. See it here:

Changes

lumin/ui - v0.4.4

Added

  • Added ability to pass states & computes to Springs, along with a regular value
  • Listen to compute

Full Changelog: Comparing v0.4.3...v0.4.4 · lumin-org/ui · GitHub


More Coming Soon

We’re introducing a new upcoming plugin, Lumin Teams. Teams will allow you to better manage your team, and see what they are doing in live time while in Studio.