Using aspect ratio with progressive immersive style
Starting in visionOS 26, we can select an aspect ratio for progressive immersive spaces.
Overview
For a refresher on immersive space styles, see Explore immersive styles for spaces in visionOS.
When using progressive immersion prior to visionOS 26, the content portal ways always presented as a landscape rectangle. This was easiest to notice the immersive level was low.

In visionOS 26 and later we can specify an aspect ratio. If you don’t change anything, .landscape continues to be default. If you space makes more sense as a .portrait ratio here is how to use it. Declare a binding for ImmersionStyle. This could be a @State var in your app file or a property in an `@Observable` class.
// set in @Observable class AppModel
var progressiveGardenAlt: ImmersionStyle = .progressive(
0.2...0.8,
initialAmount: 0.3,
aspectRatio: .portrait
)Then update the scene in the app file
ImmersiveSpace(id: "GardenSceneProgressiveAlt") {
ImmersiveViewProgressiveAlt()
.environment(appModel)
}
.immersionStyle(selection: $appModel.progressiveGardenAlt, in: .progressive)That’s it! This small change could make a big difference when using low levels of progressive immersion.
Video Demo
Example Code
Sample code is available in Garden14 in the Step Into Example Projects repo. To learn more about working with immersion spaces, see our entire series on the topic. We have everything you need to get started, including some advanced concepts like hiding and restoring a window when using spaces.
Support our work so we can continue to bring you new examples and articles.
Download the Xcode project with this and many more examples from Step Into Vision.
Some examples are provided as standalone Xcode projects. You can find those here.

Follow Step Into Vision