Cloning causing lag spikes in player models

Hello! I am currently at a state where I am unknown on where to fix this bug. This is a script that clones workspace and puts in into viewport. However when a new part is added to a player model. The game starts having one lag spike per object. And I don’t know why. Any help would be appreciated!

Code:

			Model.DescendantAdded:Connect(function(Child)
				if Child:IsA("Part") or Child:IsA("MeshPart") or Child:IsA("BasePart") then
					local RenderPart = Child:Clone()
					Child.Archivable = false
					RenderPart.Parent = ViewPort
					PartUpdater = RunService.Heartbeat:Connect(function()
						if RenderPart.CFrame ~= Child.CFrame then
							RenderPart.CFrame = Child.CFrame
						end
						if RenderPart.Transparency ~= Child.Transparency then
							RenderPart.Transparency	= Child.Transparency
						end
						if RenderPart.Color ~= Child.Color then
							RenderPart.Color			= Child.Color
						end
						if RenderPart.Size ~= Child.Size then
							RenderPart.Size			= Child.Size
						end
						if RenderPart.Material ~= Child.Material then
							RenderPart.Material			= Child.Material
						end
					end)
					Model.DescendantRemoving:Connect(function(child)
						if child == Child then
							Child.Archivable = true
							RenderPart:Destroy()
							PartUpdater:Disconnect()
						end
					end)
				end
			end)

is it a lag spike? or increase in lag?

connecting to Renderstepped for each part will raise lag, but I don’t think it makes lag spikes

also, you shouldn’t connect so many functions to the same events
you could instead work with tables and have one function for each event
your current code looks like it’d make lagspikes when a descendant is removed

also, set Archivable to false before cloning

maybe your lag spikes are from Model.DescendantAdded being triggered in case you connected it more than once

well. I did set it to false before cloning however the model will not clone since the script now knows that the part cannot be cloned. also. theres no lag when cloning any other models. however when cloning something from the player model. for example. when a part grouped into the player model and then cloning it into the viewport makes a tiny lag spike. however parts with more descendants that were cloned from a player model such as a tool with decals or parts make larger lag spikes.