Reference API Roblox

Engine API

Website

Related

Reference API Roblox

IncrementalPatchBuilder

Builds signed incremental patches for hot-reloading a running client from script changes detected by a separate file watcher.

This class is not replicated. Its interface does not cross the network boundary.
This class is not creatable. Instances of this class cannot be created with Instance.new.
This class is a service. It is a singleton that may be acquired with GetService.
Tags: [NotCreatable, Service, NotReplicated]

Member index 6

HistoryMember
731AddPathsToBundle: bool
731BuildDebouncePeriod: double
731HighCompression: bool
731SerializePatch: bool
731UseFileLevelCompressionInsteadOfChunk: bool
731ZstdCompression: bool
inherited from Instance
731Archivable: bool
731Capabilities: SecurityCapabilities
731IsInSandbox: bool
731Name: string
731Parent: Instance
731PredictionMode: PredictionMode
731Sandboxed: bool
731UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
707GetDescendants(): Instances
486GetFullName(): string
706GetStyled(name: string, selector: string?): Variant
657GetStyledPropertyChangedSignal(property: string): RBXScriptSignal
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
664IsPropertyModified(property: string): bool
698QueryDescendants(selector: string): Instances
573Remove(): null
576RemoveTag(tag: string): null
664ResetPropertyToDefault(property: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
731children(): Instances
731clone(): Instance
731destroy(): null
731findFirstChild(name: string, recursive: bool = false): Instance
731getChildren(): Instances
731isDescendantOf(ancestor: Instance): bool
731remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
657StyledPropertiesChanged()
731childAdded(child: Instance)
inherited from Object
731ClassName: string
731className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
731isA(className: string): bool
647Changed(property: string)

Description

Internal tooling service, not for creator game scripts. A separate file-watcher system detects changes in a mapped subtree of scripts; this service rebuilds an in-memory patch tree and serializes that tree into a signed binary patch that can be delivered to a running client for hot-reload.

Builds are debounced so rapid successive edits coalesce into a single patch build. When SerializePatch is true, the resulting patch is delivered through AssetDeliveryProxy and written to the configured output path.

History 23

Members 6

AddPathsToBundle

TypeDefault
boolfalse

Defaults to false. When true, and the builder is running alongside a CoreScriptSyncService, each script instance added to the patch is given a FilePath attribute set to the on-disk path of the file it was synced from. When false, no path attributes are written.

History 5

BuildDebouncePeriod

TypeDefault
double0.10000000000000000555

Defaults to 0.1 (100 milliseconds). When the separate file watcher reports a script change, the builder waits this interval before rebuilding, and any additional changes that arrive during the window are batched into the same build. Larger values reduce redundant rebuilds during bursts of edits, at the cost of added latency before the patch updates.

History 3

HighCompression

TypeDefault
boolfalse

Defaults to false. When true, the builder writes the binary patch with high-compression settings, trading additional build time for a smaller patch.

History 4

SerializePatch

TypeDefault
booltrue

Defaults to true. When true, each successful build is serialized into a signed binary patch, delivered through AssetDeliveryProxy, and written to the configured output path. When false, the builder still produces the in-memory patch tree but skips serialization, so no patch file is emitted.

History 3

UseFileLevelCompressionInsteadOfChunk

TypeDefault
boolfalse

Defaults to false. When true, the builder disables the serializer's per-chunk compression, storing the patch's chunks uncompressed so that compression can be applied at the file level instead. This property takes precedence over ZstdCompression: when it is true, the Zstandard setting has no effect.

History 3

ZstdCompression

TypeDefault
boolfalse

Defaults to false. When true, the builder compresses the patch's chunks with the Zstandard algorithm. This applies only while UseFileLevelCompressionInsteadOfChunk is at its default of false, because that property takes precedence and disables per-chunk compression entirely.

History 4

Settings