WaitForTargetFPS happening with unlimited TargetFrameRate in iOS

We have a huge problem with the iOS game when we use settings to run it on 30fps, the game is extremely jittery. But 60fps works flawlessly, something is very wrong. The game looks like it is running on 5-15fps, but it is showing stable 30fps.

To get 30fps we use:
targetframerate = -1 (locks game to 30fps)
vsynccount = 2 (not relevant, same behavior with any vsync due to iOS)
multithreaded rendering = off (because we found that it breaks vsync rendering on android)
Result:
On Unity 2017.4.32f1 and Unity 2017.4.40f1 jittery and unplayable.
On Unity 2019.4.13f1 works without any issues, normal users will hardly notice a difference between 30 and 60fps.

To get 60fps we use:
targetframerate = 60 (only way to get 60fps, -1 and vsync 1 gives 30fps)
vsynccount = 1 (not relevant, same behavior with any vsync due to iOS)
multithreaded rendering = off (because we found that it breaks vsync rendering on android)
Result:
On Unity 2017.4.32f1 and Unity 2017.4.40f1 works as it should, fluid.
On Unity 2019.4.13f1 drops every few seconds to 57-59fps.

We would move our project to 2019LTS, but there is a bug with terrain tree billboard rotation so that breaks all out vegetation.

Btw, we are not talking about very small screen tear/jitter that happens every few seconds and it is reported on numbers threads, for example, on this one: Time.deltaTime Not Constant: VSync CameraFollow and Jitter page-7