visionOS development — hide bottom indicator under the windows for shared space apps

Eddie Li
2 min readFeb 19, 2024

--

Recently I’ve been working on a visionOS app called Frameit, which adds beautiful picture frames to photos. The goal was to make photos look more artistic and engaging. However, I ran into a small issue that made the app feel less immersive: the bottom indicator that appears under every window in shared space apps.

This bottom bar is important for moving and resizing the window, but it was getting in the way of the immersive experience. Since visionOS is pretty new, finding a solution wasn’t easy. After some digging into Apple’s documentation, I found something helpful: the persistentSystemOverlays(_:) modifier.

This modifier lets you control the visibility of system overlays on your app. I found out you can add it to the root view inside the WindowGroup or directly to specific views. Adding it to the WindowGroup makes the bottom bar automatically hide after a few seconds of not interacting with the window.

WindowGroup {
ContentView()
.persistentSystemOverlays(.hidden)
}

Here is the result how it looks, much more immersive now!

hide all controls
when controls are visible

After applying this fix, Frameit became much more immersive. The photos and frames now take center stage without the distraction of the bottom indicator. It was a simple change, but it made a big difference in how the app feels.

--

--