It seems as though when loading up an ImmersiveView that the View itself is programatic (not using Reality Composer file), after the initial dismiss.... you can no longer load it up again? I'm honestly a bit lost here and hoping someone ran into the same and found an answer. I've confirmed this issue doesn't exist with Reality Composer file content from what I can tell.
While digging around trying to find examples of doing it properly, I realized that this Apple provided demo source (https://developer.apple.com/documentation/visionos/incorporating-real-world-surroundings-in-an-immersive-experience) has the exact same issue I'm trying to chase down if anyone wants to take a peak.
Open that project, Comment out line 32 of ContentView (dismissWindow()), and run it. You'll notice the Toggle is all wired up correctly already but the issue was hidden by dismissing the view, however after toggling off and on for a second time it will fail on "Unable to present an Immersive Space (id: 'string("CubeMeshInteraction")')"
Seems I’m not the only one hitting this, all the references I find online are unanswered however...
https://forums.developer.apple.com/forums/thread/747507
I feels like maybe it has something to do with a programmatically set ID string that persists past first open I think? So it’s opening into an id that already exists maybe? But I cannot figure out what is actually modifiable to fix this behavior and I’ve spent far too much time trying to chase something this dumb today.
I'm having a hard time believing I'm one of the first people to discover this, but resources are literally zero on this issue and I've come to a dead end.
Any help is greatly appreciated