If an off-screen WKView is brought on screen bounded by endDeferringViewInWindowChangesSync, we expect the view to be fully ready (unless we hit the 250 ms watchdog and give up) to display when endDeferringViewInWindowChangesSync returns. However, the WebProcess’ implicit transaction can still be pending, meaning that the tiles/root compositing layer can be not-yet-parented.
To avoid this flash, we can [CATransaction flush] whenever endDeferringViewInWindowChangesSync tells the WebProcess that its view-in-window state changed.
Created attachment 207672 [details]
Created attachment 207675 [details]