As a Roblox developer, it is currently too hard to have reliable ordering of UI elements when using UIListLayout / UIGridLayout.
Currently, layouts sort elements lexicographically (alphabetically), which means names containing numbers are sorted as strings. For example, “10” appears before “2”.
This creates a number of problems:
- It becomes difficult to order cloned or dynamically named UI elements (“1”, “2”, “3”, “10”)
- Developers resort to naming schemes such as “001”, “002” or prefix based naming like “A_Friends”, “B_Friends” just to achieve the correct sort order
- These workarounds reduce readability and increase maintenance overhead, especially for larger interfaces
If Roblox is able to address this issue, it would improve my development experience because it would allow UI elements to be sorted naturally by numeric value, which is the expected behavior when element names include numbers.
It would become much easier to build data driven UI lists such as inventory slots, leaderboard entries, navigation tabs, and paginated windows, all without manual string padding or per instance LayoutOrder management.
This change would also benefit developers who rely on statically designed UI layouts in studio as they could name the frames numerically without worrying about sorting inconsistencies.
Use Cases:
- Dynamic UI creation: Cloning frames for player lists, leaderboard entries or inventory slots.
- Procedural tab menus: Automatically creating tabs named “Frame1”, “Frame2”, “Frame3”, etc.
- Static designs in Studio: Designers using meaningful names for frame hierarchy without needing unorthodox methods
Example of desired behaviour:
-- UI elements named as followed:
"1", "2", "3", "10"
"Frame1", "Frame2", "Frame3", "Frame10"
-- Current behaviour (SortOrder = Name)
1, 10, 2, 3
Frame1, Frame10, Frame2, Frame3
-- Desired (SortOrder = Numeric / Natural)
1, 2, 3, 10
Frame1, Frame2, Frame3, Frame10