How should i make a smooth ADS transition?

The issue with your script is that you have 2 conflicting CFrame lines, one goes towards camera CFrame the other goes toward the aimCFrame which overwrite each other

This edit should be good enough to prevent overwrite.

runservice:BindToRenderStep("Viewmodel", Enum.RenderPriority.Camera.Value + 1, function(delta) --Is this how i am supposed to use it?
	if ads == true then
		viewmodel.HumanoidRootPart.CFrame = viewmodel.HumanoidRootPart.CFrame:lerp(viewmodel.HumanoidRootPart.CFrame * adsoffset, delta * 60)
	else
	viewmodel.HumanoidRootPart.CFrame = camera.CFrame

end
end)

Additionally you can also use tweenservice to lerp with a tween if you want to use tween styles