Apparently Safari limits framerate (of requestAnimationFrame, setInterval, etc.) to 30 fps for any iframe that the user has not explicitly interacted with. [After user interaction, requestAnimationFrame jumps to 60 fps, and other loops go to whatever speed the machine can handle.]
See the comments at:
Or experiment with (e.g. compare before/after clicking the ‘restart’ button):
Does anyone have ideas for working around this, maybe something that could be done at platform level?
The simplest notebook-author workaround is to make sure that anyone who is going to look at an animation in a notebook that needs to be very smooth should first click a button or drag a slider or something. But there are a lot of notebooks out there which include animations but no user interaction per se, and I suspect most authors won’t even consider that Safari viewers are getting limited to 30 fps.