RemoteGCTableProxy
Live, lazy view onto a remote Roblox Luau table exposed by RemoteGCObject.Value when the underlying GC type is LUA_TTABLE. Every operation re-reads the remote table from process memory; nothing is cached. Use it like an ordinary Lua table:
- Indexing (
proxy[key]) reads the value out of the remote table. When the value is itself a table, indexing yields anotherRemoteGCTableProxyopened on demand (nested tables are resolved lazily, one level at a time, never eagerly). - Assignment (
proxy[key] = value) writes back into the remote table. Only keys that already exist in the remote table are written; assigning a new key is a silent no-op (there is no way to grow the remote table from Luau). The new value must be wire-compatible with the existing slot's type: - Number/integer slots accept any Luau number; integer slots truncate.
- Boolean and string slots require matching types (string writes are capped to the existing remote string's allocated length).
- Table slots accept Luau tables: the assignment recurses into the remote nested table and overwrites every key supplied that already exists there. Keys absent from the remote nested table are skipped. This makes nested proxies fully modifiable through their parent (
proxy.sub = {x = 1, y = 2}updatesproxy.sub.xandproxy.sub.yin place), and equivalent in effect to walking the nested proxy yourself (proxy.sub.x = 1; proxy.sub.y = 2). - Iteration (
for k, v in proxy do ... end) takes a one-shot snapshot of the remote contents at the moment the loop begins; subsequent remote mutations are not observed mid-loop. Snapshot reads are eager and can be expensive for large tables. tostring(proxy)walks the proxy with__iterand emits a Roblox-Studio-style pretty-printed dump of its keys and values, with nested proxies expanded recursively (cycle-safe, depth-limited).
Proxies are opaque tables - they have no fields you can inspect directly; the metatable does all the work. They are safe to keep around: holding a proxy does NOT pin the remote object, so if the remote table is collected by the remote VM's GC, subsequent reads return nil and writes become no-ops.
Fields
| Name | Type | Description |
|---|---|---|
| ContainsKey | (self: RemoteGCTableProxy, key: any) -> boolean | Returns |
| ContainsValue | (self: RemoteGCTableProxy, value: any) -> boolean | Returns |