This may or may not be related, but if not, here’s a tip. As per the documentation for Instance, you shouldn’t use the parent optional field.
Performance note: When the Parent of an object is set, Luau listens to a variety of different property changes for replication, rendering and physics. Therefore, it is recommended to set the Parent property last when creating new objects. As such, you should avoid using the second argument (parent) of this function. You can read this thread on the developer forum for more information.
Once an object is attached to game , a lot of internal ROBLOX systems start listening to property changes on the object and updating various internal data structures for the change to take effect. These updates can involve queueing changes for replication, updating physics contact state, queueing rendering state changes etc.
It’s thus important that when you create the object, the initial object field assignment is correctly classified as “initial setup” as opposed to “changing state of the existing object” - and the differentiator for this is .Parent, or rather the object being a descendant of game . For this reason, .Parent assignment should go after all property assignments during the object creation. You most likely want to connect all signals after that to make sure they are not dispatched during creation - so the optimal sequence is:
A. Instance.new
B. Assign properties
C. Assign Parent
D. Connect signals