Thank you for such a detailed write-up. It was really helpful to read, because I've been seeing exactly the same behavior and wasn't sure whether I was missing something.
I can confirm your results independently on macOS 27.0.1 with Xcode 27 beta (27A266a). I used the Gaussian splats on visionOS sample's own PLY parsing code, with the sample plant.ply file (12 MB, 51,352 splats). Like you, I get a valid GaussianSplatComponent at runtime. After write(to:), the .reality file is only ~4.5 KB (4,619 bytes in one of my runs too, the same size as yours). Looking inside the archive, it only contains assets/Scene_0.compiledscene, assetMap.json and header.json, with no buffer or splat asset. After reloading, the GaussianSplatComponent is missing, just as you describe.
In case it helps narrow things down, a few other variations I tried all gave the same result:
write(to:options: [.preferFastExport])
the static Entity.write(_:to:), as you also tried
putting the splat entity under a parent entity and writing the parent
rendering the splat for a few frames in a RealityRenderer before writing
I'd also love to hear from the Apple team whether persisting a BufferResource-backed GaussianSplatComponent in a .reality file is expected to work, or whether it's a current limitation of the beta.
Thanks again to both of you for looking into this.
Topic:
Spatial Computing
SubTopic:
Reality Composer Pro