Using the name "CameraUpdate" with BindToRenderStep gets unbound immediately

This is kind of a bizarrely specific issue, but its an issue nonetheless.
Repro steps:

  • Add a LocalScript to the StarterPlayerScripts with the following:
game:GetService("RunService"):BindToRenderStep("CameraUpdate",0,function ()
	print("This is running!")
end)

wait(1)

print("Reached end of script.")

After one second, this is what the output looks like:
blob.png

As you can see, the “This is running!” string only got printed one time, after 1 second had elapsed, because UnbindFromRenderStep got called on CameraUpdate for some reason.

This happens regardless if I override the default CameraScript or not, and it can be fixed if I just add a wait() to the top of the script.

Probably used internally? Shouldn’t happen regardless.

Maybe.
But regardless, I was trying to make a custom camera, and it took me awhile to realize why my code wasn’t working, but then I realized that it was because I was using the name “CameraUpdate”.

Which is why there are conventions like __CameraUpdate, kinda surprised Roblox doesn’t use a proper naming convention </3