Skip to content

Options

Options go at the top of a schema, before any declaration, as option Name = Value. Each may be set once, or once per profile. The Options page explains each one in full.

Option Value Default What it does
Casing Pascal, Camel or Snake Pascal Casing of the generated methods: FireAll, fireAll or fire_all.
ServerOutput path string none; required by the CLI Where the server module is written, relative to the schema.
ClientOutput path string none; required by the CLI Where the client module is written.
TypesOutput path string none Where a shared module with the schema’s types and exported Read/Write pairs is written. Not written when unset.
Typescript boolean false Also write a .d.ts beside the server and client modules. CLI only.
UsePolling boolean false Give every event the polling API (Iter), as if each were Call: Polling.
FutureLibrary Luau path string none What require loads for Yield: Future. Required by any such function.
PromiseLibrary Luau path string none What require loads for Yield: Promise. Required by any such function.
SyncValidation boolean true Warn when a Sync listener yielded, and discard the rest of the packet it held up.
WriteValidations boolean false Check types, ranges and Instance classes on send. Length bounds are checked on send regardless; a fixed-length array or exact-length string that is too long is refused with it and cut short without it.
ManualReplication boolean false Do not flush reliable traffic on Heartbeat; call StepReplication yourself.
ClientFlushRate whole number 60 The most times a second a client’s Heartbeat sends what it has gathered.
RemoteScope string "" Prefix for the remotes’ names: "PKG" gives PKG_BLINK_RELIABLE_REMOTE.
RemotesFolder string none A folder in ReplicatedStorage to hold the remotes.
ExportLimits boolean false Add a frozen Limits table of the schema’s ranges and length caps to every module.
ExportRates boolean false Add a frozen Rates table of the rate limits the server enforces to every module.
MaxPacketSize whole number 8192 Largest inbound packet the server reads, in bytes.
MaxEventsPerPacket whole number 64 Events the server decodes from one packet before dropping the rest.
MaxInstancesPerPacket whole number 256 Instance and unknown values one inbound packet may carry. May be 0, which refuses a client-sent Instance at compile time (E3031).
InboundBytesPerSecond whole number 8 * MaxPacketSize (65536) Bytes a second each player’s packets may cost the server; a packet costs at least 128.
InboundBurst whole number, at least MaxPacketSize and 128 the larger of InboundBytesPerSecond and MaxPacketSize (65536) The most inbound budget a player may bank.
OutboundBytesPerSecond whole number none Bytes a second the server sends each player before it leaves out a Priority: Low send.
OutboundBurst whole number OutboundBytesPerSecond The most outbound budget a player may bank.
MaxUnreliableSize whole number 980 Largest unreliable payload, 6 bytes per Instance included, checked at compile time and on send.
DefaultRate whole number none Events per second per player for every inbound event and function without its own Rate.
RequireRates boolean false Make an inbound event or function with no effective rate a compile error (E3020).
Predict boolean false Add Predict to every event this side listens to (not polled ones): it delivers to local listeners without a remote.
InvocationTimeout whole number 10 Seconds before an unanswered Invoke fails.
ClientConnectTimeout number above zero none; wait for ever Seconds the client waits for the remotes before it returns a module with Connected false and every entry point stubbed.
AutoStart boolean true false: the server module creates and connects nothing until the game calls Start().
TrafficStats boolean false Count bytes, events and packets sent and received, per event and per channel, behind GetTrafficStats() and ResetTrafficStats(). Emits nothing when off.
PackedBooleanReader "Auto", "Bits" or "Rows" "Auto" How a received boolean[] is unpacked: testing each bit, copying rows of eight, or whichever the module measured faster as it loaded.
UseColon boolean none Deprecated and ignored; warns W3017. Delete it.
Value Written as Example
boolean true or false option Predict = true
path string a quoted path, relative to the schema’s folder unless absolute option ServerOutput = "../src/Network/Server.luau"
Luau path string a quoted Luau expression, inserted into require(...) option PromiseLibrary = "ReplicatedStorage.Packages.Promise"
whole number a positive integer option MaxPacketSize = 16384
seconds a number above zero, fractions allowed (ClientConnectTimeout only) option ClientConnectTimeout = 2.5
casing a bare word option Casing = Camel
reader a quoted word option PackedBooleanReader = "Rows"

A number that is zero, negative or, outside ClientConnectTimeout, fractional is refused (E2003), as is an unknown option name, casing or reader. An option after the first declaration is E3016; one set twice for the same build is E3024.

None of these options changes the bytes on the wire, so none of them is part of the schema signature. A server and a client built from the same declarations with different options still talk to each other. RemoteScope is the exception in practice: it changes the remotes’ names, so a client with a different scope never finds the server’s remotes at all.