The WebGLRenderer will compile materials only when they hit the frustrum, which can cause jank. This component precompiles the scene using gl.compile which makes sure that your app is responsive from the get go.

By default gl.compile will only preload visible objects, if you supply the all prop, it will circumvent that. With the scene and camera props you could also use it in portals.

If you have async models you can drop it into the same suspense boundary in concurrent mode.

<Canvas concurrent>
  <Suspense fallback={null}>
    <Model />
    <Preload all />