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.