Yep, the screen transition is a shader. I put it on a separate CanvasLayer and have two ColorRects with the shader material, one for fading in and for fading out. The next scene is loaded asynchronously and the fade in is played once the scene is done loading.
This particular shader I learned from an article here: https://ddrkirby.com/articles/shader-based-transitions/shader-based-transitions..... They also have a good reference to a bunch of screen transitions shaders here: https://gl-transitions.com/gallery
Hope that helps!