Just want to mentioned that I did consider to suggest high-performance as a default but it is actually not recommended by the WebGL spec.
high-performance: Indicates a request for a GPU configuration that prioritizes rendering performance over power consumption. Developers are encouraged to only specify this value if they believe it is absolutely necessary, since it may significantly decrease battery life on mobile devices. Implementations may decide to initially respect this request and, after some time, lose the context and restore a new context ignoring the request. Applications that request high-performance should test and maintain robust context loss handling, as User Agents are very likely to decide to lose background high-performance contexts.
So three.js uses default which means some devices/browsers might decide to not use the dedicated GPU.
I think that’s appropriate, in that I think the current macOS/Safari/WebKit behavior is clearly a bug: the system should not use the iGPU for WebGL when the dGPU is being used for the monitors, as it clearly leads to bad performance; and I would expect it to use more power overall.
I wonder if you should put a browser detection banner on ThreeJS examples “Hey, we see you are using Safari verion X thru Y which has a bug… you may see worse performance” ?