3D on the web has a deserved reputation for slow sites. It is deserved because most 3D sites are built as demos and shipped as marketing pages. Here is what actually has to hold.
Core Web Vitals
Google measures three things that a 3D site can easily break.
LCP: how long until the largest visible element appears. If the canvas is the largest element and it waits on a model download, LCP is the model download. The fix is structural: the page's headline and copy are real HTML, rendered server-side, and they are what paints first. The 3D arrives afterwards.
INP: how quickly the page responds to interaction. A heavy scene starves the main thread and every tap feels late. Keeping the render loop honest, moving work to workers or the GPU, and not decoding a 40 MB texture during a scroll are what protect it.
CLS: how much the layout jumps. Canvases that resize after load, or a scene that pushes content down when it initialises, cause exactly this. Reserve the space before anything loads.
None of these forbid 3D. They forbid 3D that blocks the page, which is a build decision rather than a property of the medium.
Mobile GPUs
The gap between a development laptop and a mid-range Android is enormous, and it is not mainly about speed; it is memory and heat. Mobile GPU memory is limited and shared; exceed it and the browser reloads the tab silently. Sustained load causes thermal throttling, so a scene that runs at 60 fps for twenty seconds runs at 25 fps after two minutes.
The practical rules: compress textures to KTX2 so they stay compressed in GPU memory, cap resolution rather than rendering at full retina density, cap the pixel ratio, draw fewer objects rather than simpler ones, and stop the render loop entirely when the canvas scrolls out of view. That last one is a two-line change that fixes most complaints about 3D sites draining batteries.
The download
Nobody waits eight seconds. Compressed geometry, compressed textures, code-split the 3D bundle so it is never part of the initial JavaScript payload, and prefer generated visuals over downloaded models where the design allows it. A shader costs kilobytes.