When is it actually beneficial to use LOD in Three.js for performance?

That said, there’s nothing magic about THREE.BatchedMesh. You could instead build your own batching solution using a large THREE.Mesh

This is somewhat true - the BatchedMesh class uses the “multiDraw” API which allows for submitting a list of ordered draw requests at once (though I agree it’s not magic :grin:). This means that it supports per-geometry sorting, frustum culling, visibility toggling, and instancing so you can avoid geometry duplication in memory. None of these things are really possible if you just merge all your geometry into one mesh. If you just want to cut down on draw calls, though, and your geometry is unique and doesn’t need to be toggled or culled then merging into one big static mesh could be a fine solution.

The one caveat is that there seems to be a performance bottleneck with multidraw in WebGL that will hopefully be fixed soon. See this Chromium issue (and +1 if it’s affecting your work!).