23 min read

Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.

Model

Inherits from: PVInstance → Instance → Object

Models are container objects, meaning they group objects together. They are best used to hold collections of BaseParts and have a number of functions that extend their functionality.

Models are intended to represent geometric groupings. If your grouping has no geometric interpretation, for instance a collection of Scripts, use a Folder instead.

Models whose constituent parts are joined together with joints (so that they can move around or be destroyed via physics simulation) usually have a PrimaryPart set, as it specifies which part within the model the pivot and bounding box will "follow" as the model moves. Static models which stay in one place do not benefit from having a primary part set.

Models have a wide range of applications, including Roblox player characters. They also have a number of unique behaviors that are important to keep in mind:

As with all Instance types, the fact that a parent Model is replicated to a client does not guarantee that all its children are replicated. This is particularly important if these instances are being accessed by code running on the client, such as in a LocalScript. Using ModelStreamingMode with values such as Atomic can ensure that the entire model and all of its descendants are present if the parent model exists on the client, or you can use WaitForChild() when atomicity is not desired.

Inherits from: PVInstance

Descendants: Actor, BackpackItem, ProceduralModel, Status, WorldRoot

Memory category: BaseParts

Code samples: View on Creator Hub (Model-Instantiation).

Properties

NameType / ReturnsDescription
Model.LevelOfDetailModelLevelOfDetailSets the level of detail on the model for experiences with instance streaming enabled.
Model.ModelStreamingModeModelStreamingModeControls the model streaming behavior on Models when instance streaming is enabled.
Model.PrimaryPartBasePartThe primary part of the Model, or nil if not explicitly set.
Model.ScalefloatEditor-only property used to scale the model around its pivot. Setting this property will move the scale as though Model:ScaleTo() was called on it.
Model.WorldPivotCFrameDetermines where the pivot of a Model which does not have a set Model.PrimaryPart is located.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance.OriginCFrameEditor-only property that reads and sets the world CFrame of the PVInstance's pivot, moving the entire instance when changed from the Studio Properties window.
PVInstance.Pivot OffsetCFrameEditor-only property that displays and edits the pivot's CFrame relative to the instance, moving only the pivot and leaving the instance in place.

Inherited from Instance

NameType / ReturnsDescription
Instance.ArchivablebooleanDetermines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published.
Instance.archivableboolean
Instance.CapabilitiesSecurityCapabilitiesThe set of capabilities allowed to be used for scripts inside this container.
Instance.IsInSandboxbooleanIndicates whether the instance is inside a sandboxed container.
Instance.NamestringA non-unique identifier of the Instance.
Instance.ParentInstanceDetermines the hierarchical parent of the Instance.
Instance.PredictionModePredictionModeReflects the client-side prediction mode applied to the instance under server-authoritative physics.
Instance.RobloxLockedbooleanA deprecated property that used to protect CoreGui objects.
Instance.SandboxedbooleanWhen enabled, the instance can only access abilities in its Capabilities list.
Instance.UniqueIdUniqueIdA unique identifier for the instance.

Inherited from Object

NameType / ReturnsDescription
Object.ClassNamestringA read-only string representing the class this Object belongs to.
Object.classNamestring

Model.LevelOfDetail

Sets the level of detail on the model for experiences with instance streaming enabled. Composite or imposter meshes do not support physics, collision detection, or raycasting.

When set to StreamingMesh, a lower resolution "imposter" mesh (colored, coarse mesh that wraps around all child parts of the model) renders outside the streaming radius. Does not support textures.

When set to SLIM, a SLIM model (Scalable Lightweight Interactive Model) renders a composite of all child parts at progressively lower resolutions at distances based on the streaming radius. This greatly improves visual quality over StreamingMesh.

When set to Disabled or Automatic, lower resolution meshes will not be displayed.

FieldValue
typeModelLevelOfDetail
security{"read":"PluginSecurity","write":"PluginSecurity"}
thread safetyReadSafe
categoryAppearance
serialization{"can_load":true,"can_save":true}

Model.ModelStreamingMode

Controls how Models are streamed in and out when instance streaming is enabled. Behavior depends on the selected enum. Has no effect when streaming is not enabled.

This property should only be changed in Studio via the Properties window when streaming is enabled, or in Scripts, but never in LocalScripts (doing so can result in undefined behavior).

FieldValue
typeModelStreamingMode
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}

Model.PrimaryPart

Points to the primary part of the Model. The primary part is the BasePart that acts as the physical reference for the pivot of the model. That is, when parts within the model are moved due to physical simulation or other means, the pivot will move in sync with the primary part.

Note that Models do not have PrimaryPart set by default. If you are creating a model that needs to be acted upon by physics, you should manually set this property in Studio or within a script. If the primary part is not set, the pivot will remain at the same location in world space, even if parts within the model are moved.

Also note that when setting this property, it must be a BasePart that is a descendant of the model. If you try to set Model.PrimaryPart to a BasePart that is not a descendant of the model, it will be set to that part but reset to nil during the next simulation step — this is legacy behavior to support scripts which assume they can temporarily set the primary part to a BasePart which isn't a descendant of the model.

The general rule for models is that:

FieldValue
typeBasePart
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryPivot
serialization{"can_load":true,"can_save":true}

Code samples: View on Creator Hub (throwing-dice).

Model.Scale

Setting this property in the Properties window will scale the model as though Model:ScaleTo() was called on it, scaling all descendant Instances in the model, such as materials, images, and the 3D geometry of parts, so that the model has the specified scale factor relative to its original size.

This property is only available in Studio and will throw an error if used in a Script or LocalScript. Model:ScaleTo() and Model:GetScale() should be used from scripts.

FieldValue
typefloat
tags["NotReplicated","NotScriptable"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryPivot
serialization{"can_load":false,"can_save":false}

Model.WorldPivot

This property determines where the pivot of a Model which does not have a set Model.PrimaryPart is located. If the Model does have a PrimaryPart, the pivot of the Model is equal to the pivot of that primary part instead, and this WorldPivot property is ignored.

For a newly created Model, its pivot will be treated as the center of the bounding box of its contents until the first time its Model.WorldPivot property is set. Once the world pivot is set for the first time, it is impossible to restore this initial behavior.

Most commonly, moving the model with the Studio tools, or with model movement functions such as PVInstance:PivotTo() and Model:MoveTo(), will set the world pivot and thus end this new model behavior.

The purpose of this behavior is to allow Luau code to get a sensible pivot simply by creating a new model and parenting objects to it, avoiding the need to explicitly set Model.WorldPivot every time you create a model in code.

FieldValue
typeCFrame
tags["NotReplicated"]
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryPivot
serialization{"can_load":false,"can_save":false}

Code samples: View on Creator Hub (reset-pivot, Model-WorldPivot).

Methods

NameType / ReturnsDescription
Model:AddPersistentPlayer()Sets this model to be persistent for the specified player. ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of addition.
Model:BreakJoints()Breaks connections between BaseParts, including surface connections with any adjacent parts, WeldConstraints and all Welds and other JointInstances.
Model:breakJoints()
Model:GetBoundingBoxTupleReturns a description of a volume that contains all parts of a Model.
Model:GetExtentsSizeVector3Returns the size of the smallest bounding box that contains all of the BaseParts in the Model, aligned with the Model.PrimaryPart if it is set.
Model:GetModelCFrameCFrameThis value historically returned the CFrame of a central position in the model.
Model:GetModelSizeVector3Returns the Vector3 size of the Model.
Model:GetPersistentPlayersListReturns all the Player objects that this model object is persistent for. Behavior varies based on whether this method is called from a Script or a LocalScript.
Model:GetPrimaryPartCFrameCFrameReturns the CFrame of the model's Model.PrimaryPart. This function will throw an error if no primary part exists for the Model.
Model:GetScalefloatReturns the canonical scale of the model, which defaults to 1 for newly created models and will change as it is scaled via Model:ScaleTo().
Model:MakeJoints()Goes through all BaseParts in the Model. If any part's side has a SurfaceType that can make a joint it will create a joint with any adjacent parts.
Model:makeJoints()
Model:move()
Model:MoveTo()Moves the PrimaryPart to the given position. If a primary part has not been specified, the root part of the model will be used.
Model:moveTo()
Model:RemovePersistentPlayer()Makes this model no longer persistent for the specified player. ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of removal.
Model:ResetOrientationToIdentity()Resets the rotation of the model's parts to the previously set identity rotation, which is done through the Model:SetIdentityOrientation() method.
Model:ScaleTo()Sets the scale factor of the model, adjusting the sizing and location of all descendant Instances such that they have that scale factor relative to their initial sizes and locations when scale factor was 1.
Model:SetIdentityOrientation()Sets the identity rotation of the given model, allowing you to reset the rotation of the entire model later, through the use of the ResetOrientationToIdentity method.
Model:SetPrimaryPartCFrame()Sets the BasePart.CFrame of the model's Model.PrimaryPart. All other parts in the model will also be moved and will maintain their orientation and offset respective to the Model.PrimaryPart.
Model:TranslateBy()Shifts a Model by the given Vector3 offset, preserving the model's orientation. If another BasePart or Terrain already exists at the new position then the Model will overlap said object.

Inherited from PVInstance

NameType / ReturnsDescription
PVInstance:GetPivotCFrameGets the pivot of a PVInstance.
PVInstance:PivotTo()Transforms the PVInstance along with all of its descendant PVInstances such that the pivot is now located at the specified CFrame.

Inherited from Instance

NameType / ReturnsDescription
Instance:AddTag()Applies a tag to the instance.
Instance:childrenInstancesReturns an array of the object's children.
Instance:ClearAllChildren()This method destroys all of an instance's children.
Instance:CloneInstanceCreate a copy of an instance and all its descendants, ignoring instances that are not Archivable.
Instance:cloneInstance
Instance:Destroy()Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections, and calls Destroy() on all children.
Instance:destroy()
Instance:FindFirstAncestorInstance?Returns the first ancestor of the Instance whose Instance.Name is equal to the given name.
Instance:FindFirstAncestorOfClassInstance?Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className.
Instance:FindFirstAncestorWhichIsAInstance?Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstChildInstance?Returns the first child of the Instance found with the given name.
Instance:findFirstChildInstance
Instance:FindFirstChildOfClassInstance?Returns the first child of the Instance whose ClassName is equal to the given class name.
Instance:FindFirstChildWhichIsAInstance?Returns the first child of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstDescendantInstance?Returns the first descendant found with the given Instance.Name.
Instance:GetActorActor?Returns the Actor associated with the Instance, if any.
Instance:GetAttributeVariantReturns the value which has been assigned to the given attribute name.
Instance:GetAttributeChangedSignalRBXScriptSignalReturns an event that fires when the given attribute changes.
Instance:GetAttributesDictionaryReturns a dictionary of the instance's attributes.
Instance:GetChildrenInstancesReturns an array containing all of the instance's children.
Instance:getChildrenInstances
Instance:GetDebugIdstringReturns a coded string of the debug ID used internally by Roblox.
Instance:GetDescendantsInstancesReturns an array containing all of the descendants of the instance.
Instance:GetFullNamestringReturns a string describing the instance's ancestry.
Instance:GetStyledVariantReturns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified.
Instance:GetStyledPropertyChangedSignalRBXScriptSignalReturns an event that fires when the given style property changes on the instance.
Instance:GetTagsArrayGets an array of all tags applied to the instance.
Instance:HasTagbooleanCheck whether the instance has a given tag.
Instance:IsAncestorOfbooleanReturns true if an Instance is an ancestor of the given descendant.
Instance:IsDescendantOfbooleanReturns true if an Instance is a descendant of the given ancestor.
Instance:isDescendantOfboolean
Instance:IsPropertyModifiedbooleanReturns true if the value stored in the specified property is not equal to the code-instantiated default.
Instance:QueryDescendantsInstancesReturns an array containing all descendants of the instance that match the selector string.
Instance:Remove()Sets the object's Parent to nil, and does the same for all its descendants.
Instance:remove()
Instance:RemoveTag()Removes a tag from the instance.
Instance:ResetPropertyToDefault()Resets a property to its default value.
Instance:SetAttribute()Sets the attribute with the given name to the given value.
Instance:WaitForChildInstanceReturns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does.

Inherited from Object

NameType / ReturnsDescription
Object:GetPropertyChangedSignalRBXScriptSignalGet an event that fires when a given property of the object changes.
Object:IsAbooleanReturns true if an object's class matches or inherits from a given class.
Object:isAboolean

Model:AddPersistentPlayer

Sets this model to be persistent for the specified player. Persistent models stay present for the player regardless of streaming settings or conditions.

ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of addition.

Parameters

NameTypeDefaultDescription
playerInstancePlayernilThe Player to make this model persistent for.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe

Model:BreakJoints

Deprecated.

Breaks connections between BaseParts, including surface connections with any adjacent parts, WeldConstraints, and all Welds and other JointInstances.

When BreakJoints is used on a Player character Model, the character's Humanoid will die as it relies on the Neck joint.

Note that although joints produced by surface connections with adjacent Parts can technically be recreated using Model:MakeJoints(), this will only recreate joints produced by surfaces. Developers should not rely on this as following the joints being broken parts may no longer be in contact with each other.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-BreakJoints, Manual-Joint-Creation).

Model:breakJoints

Deprecated. This deprecated function is a variant of Model:BreakJoints() which should be used instead.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:GetBoundingBox

This function returns a description of a volume that contains all BasePart children within a Model. The volume's orientation is based on the orientation of the PrimaryPart, and matches the selection box rendered in Studio when the model is selected. Mirroring the behavior of Terrain:FillBlock(), it returns a CFrame representing the center of that bounding box and a Vector3 representing its size. The size may be inaccurate at runtime if physics constraints are acting upon the parts within the Model.

The orientation of the bounding box matches the orientation of the Pivot - either the pivot of the PrimaryPart (if present) or the WorldPivot of the model.

Returns

TypeDescription
TupleA CFrame representing the orientation of the volume followed by a Vector3 representing the size of the volume.
FieldValue
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-GetBoundingBox).

Model:GetExtentsSize

Returns the size of the smallest bounding box that contains all of the BaseParts in the Model. The orientation matches the orientation of the Pivot - either the pivot of the PrimaryPart (if present) or the WorldPivot of the model.

Note this function only returns the size of the smallest bounding box, and the developer must employ their own method to obtain the position of the bounding box.

Returns

TypeDescription
Vector3The Vector3 extents size of the Model.
FieldValue
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-GetExtentsSize2).

Model:GetModelCFrame

Deprecated. This function has been deprecated as it did not provide reliable results. You can instead use Model:GetPrimaryPartCFrame() to retrieve the CFrame of the model's primary part.

This value historically returned the CFrame of a central position in the model.

Returns

TypeDescription
CFrameA CFrame representing a central position in the model.
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:GetModelSize

Deprecated. This item is deprecated. Do not use it for new work. Developers can instead use Model.GetExtentsSize.

The GetModelSize function returns the Vector3 size of the Model.

Returns

TypeDescription
Vector3The Vector3 size of the Model.
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-GetModelSize1).

Model:GetPersistentPlayers

When this method is called from a Script, it returns all the Player objects that this model is persistent for. When called from a LocalScript, this method only checks if this model is persistent for the LocalPlayer.

Returns

TypeDescription
ListA table with all the Player objects that this model object is persistent for.
FieldValue
securityNone
thread safetyUnsafe

Model:GetPrimaryPartCFrame

Deprecated.

This function has been superseded by PVInstance:GetPivot() which acts as a replacement and does not change your code's behavior. Use PVInstance:GetPivot() for new work and migrate your existing Model:GetPrimaryPartCFrame() calls when convenient.

Returns the CFrame of the model's Model.PrimaryPart.

This function is equivalent to the following.

Model.PrimaryPart.CFrame

Note this function will throw an error if no primary part exists for the Model. If this behavior is not desired developers can do the following, which will be equal to nil if there is no primary part.

local cFrame = Model.PrimaryPart and Model.PrimaryPart.CFrame

Returns

TypeDescription
CFrameThe CFrame of the model's Model.PrimaryPart.
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-GetPrimaryPartCFrame).

Model:GetScale

Models contain a persistent canonical scale factor, which starts out at 1 for newly created models and changes as the model is scaled by calling Model:ScaleTo(). This function returns the current canonical scale factor of the model.

The current scale factor does not directly impact the size of Instances under the model. It is used for content authoring and scripting purposes to remember how the model has been scaled relative to its original size.

Within a given session, the model will cache the precise original size information of the descendant Instances after the first Model:ScaleTo() call. This means that calling ScaleTo(x) followed by ScaleTo(1) will get you back exactly the original configuration of the model with no floating point drift. Avoiding floating point drift is the motivation for having a ScaleTo function instead of a ScaleBy function.

The scale factor does impact engine behavior in one way: The scale factor of a model will be applied to joint offsets of Animations played on an AnimationController under that model, so that animated rigs will correctly play back animations even when scaled.

Returns

TypeDescription
floatThe current canonical scale factor of the model.
FieldValue
securityNone
thread safetyUnsafe
simulationAccesstrue

Code samples: View on Creator Hub (Model-Substitute-Using-GetScale).

Model:MakeJoints

Deprecated. This joint type has been deprecated. Don't use it for new work. Use WeldConstraints and HingeConstraints instead.

SurfaceType based joining is deprecated. Don't use MakeJoints for new projects. Use WeldConstraints and HingeConstraints instead.

Goes through all Parts in the Model and creates joints between the specified Parts and any planar touching surfaces, depending on the parts' surfaces.

This function doesn't work if the Part is not a descendant of Workspace. Therefore, you must first ensure the Model is parented to Workspace before using MakeJoints.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-MakeJoints, Simple-Joint-Creation).

Model:makeJoints

Deprecated. This deprecated function is a variant of Model:MakeJoints() which should be used instead.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:move

Deprecated. This item has been superseded by Model:MoveTo() which should be used in all new work

Parameters

NameTypeDefaultDescription
locationVector3

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:MoveTo

Moves the PrimaryPart to the given position. If a primary part has not been specified, the root part of the model will be used, but the root part is not deterministic and it is recommended that you always set a primary part when using MoveTo().

If there are any obstructions where the model is to be moved, such as Terrain or other BaseParts, the model will be moved vertically upward until there is nothing in the way. If this behavior is not desired, PVInstance:PivotTo() should be used instead.

Note that rotation is not preserved when moving a model with MoveTo(). It is recommended to use either TranslateBy() or PVInstance:PivotTo() if the current rotation of the model needs to be preserved.

Parameters

NameTypeDefaultDescription
positionVector3The Vector3 the Model is moved to.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-MoveTo).

Model:moveTo

Deprecated. This deprecated function is a variant of Model:MoveTo() which should be used instead.

Parameters

NameTypeDefaultDescription
locationVector3

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:RemovePersistentPlayer

Makes this model no longer persistent for the specified player. This does not guarantee the model will immediately be removed for the player; after calling this method, the model will be treated as Atomic for that player and will remain present as long as it is within the target streaming radius.

ModelStreamingMode must be set to PersistentPerPlayer for behavior to be changed as a result of removal.

Parameters

NameTypeDefaultDescription
playerInstancePlayernilThe Player to make this model no longer persistent for.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe

Model:ResetOrientationToIdentity

Deprecated. This function has been deprecated; it remains to prevent legacy scripts from throwing errors, but it does nothing when called.

Resets the rotation of the model's parts to the previously set identity rotation, which is done through the Model:SetIdentityOrientation() method.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:ScaleTo

Models contain a persistent canonical scale factor, which starts out at 1 for newly created models. This function scales the model, around the pivot location, relative to how it would look at a scale factor of 1. To accomplish this it does two things:

The scaling of locations is done around the pivot location.

All "geometric" properties of descendant Instances will be scaled. That obviously includes the sizes of parts, but here are some other examples of properties which are scaled:

Parameters

NameTypeDefaultDescription
newScaleFactorfloatThe new scale factor for the model, which must be a positive non-zero number. A value of 1 represents the model's original size.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe

Model:SetIdentityOrientation

Deprecated. This function has been deprecated; it remains to prevent legacy scripts from throwing errors, but it does nothing when called.

Sets the identity rotation of the given model, allowing you to reset the rotation of the entire model later, through the use of the ResetOrientationToIdentity method.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:SetPrimaryPartCFrame

Deprecated.

This function has been superseded by PVInstance:PivotTo() which acts as a more performant replacement and does not change your code's behavior. Use PVInstance:PivotTo() for new work and migrate your existing Model:SetPrimaryPartCFrame() calls when convenient.

Sets the BasePart.CFrame of the model's Model.PrimaryPart. All other parts in the model will also be moved and will maintain their orientation and offset respective to the Model.PrimaryPart.

Note, this function will throw an error if no Model.PrimaryPart exists for the model. This can cause issues if, for example, the primary part was never set or has been destroyed.

Parameters

NameTypeDefaultDescription
cframeCFrameThe CFrame to be set.

Returns

TypeDescription
()
FieldValue
tags["Deprecated"]
securityNone
thread safetyUnsafe

Model:TranslateBy

Shifts a Model by the given Vector3 offset, preserving the model's orientation. If another BasePart or Terrain already exists at the new position then the Model will overlap said object.

The translation is applied in world space rather than object space, meaning even if the model's parts are orientated differently it will still move along the standard axis.

Parameters

NameTypeDefaultDescription
deltaVector3The Vector3 to translate the Model by.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe

Code samples: View on Creator Hub (Model-TranslateBy).

Events

Inherited from Instance

NameType / ReturnsDescription
Instance.AncestryChangedFires when the Instance.Parent property of this object or one of its ancestors is changed.
Instance.AttributeChangedFires whenever an attribute is changed on the Instance.
Instance.ChildAddedFires after an object is parented to this Instance.
Instance.childAdded
Instance.ChildRemovedFires after a child is removed from this Instance.
Instance.DescendantAddedFires after a descendant is added to the Instance.
Instance.DescendantRemovingFires immediately before a descendant of the Instance is removed.
Instance.DestroyingFires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy().
Instance.StyledPropertiesChangedFires whenever any style property is changed on the instance, including when a property is set to nil.

Inherited from Object

NameType / ReturnsDescription
Object.ChangedFires immediately after a property of the object changes, with some limitations.