Alternate FPS causing procedural animations to break

I make procedural camera bobbing and sway and stuff using RunService.Heartbeat but it desyncs when the framerate isn’t 60. The aproximate structure is below:

Runservice.Heartbeat:Connect(function()
   camera.CFrame *= CFrame.Angles(math.sin(tick())*magnitude,0,math.cos(tick())*magnitude)
end)

I saw posts saying I could use delta time but I couldn’t figure out an effective way of implementing it since I got at least 30 of these and it’s really hard to find all of them not speaking of all the lerp functions. Are there any simpler ways of fixing this, or at least an example of what I could possibly do? Help would be appreciated.

I believe you could do something like this

Runservice:BindToRenderStep("CameraBob", Enum.RenderPriority.Camera.Value + 1, function()
	-- Put code here... Also, you can change the "CameraBob" name if you want
end)