.bottomBar toolbar item missing after rotation in NavigationSplitView on iOS 26 (Regular width / compact height)

A ToolbarItem(placement: .bottomBar) inside a NavigationSplitView detail/destination view is missing after a device rotation on iOS 26. The bottom toolbar is missing until the view has been presented in both orientations, after which it renders correctly from then on. The issue does not reproduce on iOS 18.

Environment

  • iOS 26 only — does not reproduce on iOS 18
  • iPhone 17 Pro Max and iPhone 17 Air (i.e. devices that expose the landscape size class Regular width / compact height)
  • SwiftUI NavigationSplitView with .balanced style

Steps to reproduce

  1. Run the sample below on an iPhone 17 Pro Max or Air (or a simulator of either).
  2. Open the detail view (which contains a .bottomBar toolbar item) while the device is in either orientation.
  3. Rotate the device.
  4. Observe that the bottom toolbar is now missing.

Expected behavior

The .bottomBar button remains visible across rotation, regardless of which orientation the view was first presented in.

Actual behavior

  • On first presentation, rotating the device causes the bottom toolbar to disappear.
  • Once the view has been presented in both landscape and portrait (roughly the third presentation), the bottom bar renders correctly and continues to behave correctly afterward.
  • The behavior is inconsistent


import SwiftUI

@main
struct MinimumReproducibleEventApp: App {
    var body: some Scene {
        WindowGroup {
            NavigationSplitView(columnVisibility: .constant(.all)) {
                NavigationLink("Primary") {
                    ContentView()
                }
            } detail: {
                Text("Hello")
            }
            .navigationSplitViewStyle(.balanced)
           
        }
    }
}


ContentView


import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
        }
        .toolbar {
            ToolbarItem(placement: .bottomBar) {
                Button("Hello") {
                    print("hello")
                }
            }
        }
    }
}

Thanks for the post, are you using Xcode 26.5? I just copy and paste your code and I don't see what you are seeing:

Instead of relying on the native .bottomBar placement (which is susceptible to these navigation bridging bugs), you can build a custom bottom bar using .safeAreaInset. This guarantees the bar stays pinned and visible across all rotations, and you can style it to look identical to the native bottom bar.

Even thought for iOS I use just that:

#if os(iOS)
            ToolbarItem(placement: .bottomBar) {
                Button("Hello") {
                    print("hello")
                }
            }
#elseif os(macOS)
            ToolbarItem(placement: .automatic) {
                Button("Hello") {
                    print("hello")
                }
            }
#endif

But you can always do:

 .safeAreaInset(edge: .bottom) {
            HStack {
                Spacer()
                Button("Hello") {
                    print("hello")
                }
                Spacer()
            }
            .padding()
}

I'm more interested in knowing what Xcode are you reproducing that.

Thanks

Albert
  Worldwide Developer Relations.

I see what about when you set the toolbar to be visible?

.toolbar {
            ToolbarItem(placement: .bottomBar) {
                Button("Hello") {
                    print("hello")
                }
            }

        }.toolbar(.visible, for: .bottomBar)

Albert
  Worldwide Developer Relations.

.bottomBar toolbar item missing after rotation in NavigationSplitView on iOS 26 (Regular width / compact height)
 
 
Q