Client-Object Script isnt working

Im trying to make a client sided part when a map is added to workspace, but it seems to break sometimes and seems to not be completly client sided. Here’s my script:

 local addPart = function(v)
 	if v.Name == "Client" then
 		local c = v.Parent:Clone()
 		c.Parent = v.Parent.Parent
 		v.Parent:Destroy()
 	
 	end
 end
 workspace.MapFolder.ChildAdded:Connect(function(child)
 
 	task.wait(0.3)
 	for _,d in pairs(child:GetDescendants()) do
 		
 		addPart(d)
 	end
 	end)

Here’s a video of my freinds testing, and the spinners a buging and aren’t acting client sided.

The local script is in StarterPlayerScripts, and the spinner uses a cylindrical constraint. By breaking, this is what I mean:

I’ve tried running it more then once or adding/decreasing the wait time, but it still breaks sometimes.

Is the welds breaking for the spinner or is something else happening when the part gets client sided?

This is the contents of the spinner:
image