React Lua
Project scope & language (Lua vs Luau)
- Multiple commenters find it unclear whether the project targets standard Lua or Luau.
- Thread points out it is a fork of
roblox/react-lua, explicitly meant as a community-driven React implementation for both Roblox and the wider Lua ecosystem. - Clarified that it actually uses Luau, Roblox’s Lua-derived language with gradual typing and its own compiler/VM. It does not compile down to standard Lua.
Luau vs standard Lua and upstreaming questions
- Background: Roblox started from Lua 5.1 and evolved Luau with sandboxing, type annotations, and numerous tweaks.
- Discussion about why changes weren’t upstreamed to “PUC Lua”:
- One side argues closed/centralized development and a small core team at PUC-Rio make upstreaming unrealistic.
- Another side insists companies can always reach out and at least try.
- Later comments note strong technical divergence: Luau is C++ vs Lua’s C, based on 5.1 while upstream is at 5.4, and has a different VM and semantics. This makes meaningful upstreaming effectively a hard fork situation.
React in Roblox and what “React in Lua” means
- Some confusion about why Roblox needs React at all and whether it’s only a scripting environment.
- Clarified that Roblox is a full game engine with UIs (windows, buttons, text boxes), and React-Lua is used to build those interfaces.
- Roblox reportedly uses React-Lua for Roblox Studio, the main client app, and many plugins.
- One concern: parity list suggests missing features, raising the question of when it is “React enough.”
Typing and alternative tooling
- Interest in Lua typing leads to mentions of:
- Teal, a typed dialect that transpiles to Lua (likened to TypeScript for JS).
- TypeScript-to-Lua transpilers used with Love2D, with quirks due to Lua tables vs TS types and documented caveats.
- Community type definition projects for standard Lua and specific frameworks (e.g., LÖVE).
React performance & state management debate
- One claim: React has terrible performance.
- Counterpoints:
- Poor performance is usually due to misuse or lack of understanding; well-written React can be fast enough.
- Its ease of use attracts many beginners, increasing the amount of suboptimal code.
- Discussion frames React as:
- A state-driven, declarative UI model, similar to long-standing game/simulation patterns.
- Or primarily a declarative UI tool that necessarily manages state, with disagreement on which aspect is more “essential.”
- Shared state management:
- Some say React isn’t great at changing global/shared state and needs tools like Context or external libraries.
- Others explain the roles of Context (dependency injection / “props at a distance”) vs global state libraries (e.g., Redux), noting evolving patterns and tooling to reduce boilerplate.
Sentiment, enthusiasm, and skepticism
- Enthusiastic notes:
- More options to bring modern UI paradigms into existing ecosystems are seen as positive.
- Separate tools allow writing nearly “real” React/TSX for Roblox via TypeScript→Lua workflows, with high iteration speed and comparisons favoring this experience over some other engines.
- Some see potential for edge/front-end runtimes using Lua/Luau (e.g., with Nginx).
- Skeptical/negative reactions:
- Complaints about missing or weak examples in the library’s docs.
- Personal dislike for writing React in general, and the idea of React-in-Lua being “unholy” or “cursed.”
- Critiques that React is “eating the world” in a harmful way, and preference for alternatives like Svelte or htmx-style approaches in Lua.
- A critical jab referencing broader concerns around Roblox and labor practices, without detailed discussion.