Summary
On iOS 26, the navigation bar unexpectedly switches to a Light appearance during/after a view transition while the device/app is in Dark Mode. This seems correlated with applying listStyle(.plain) to a List. Removing .plain prevents the issue, but my app’s layout requires it.
Sample code:
import SwiftUI
@main
struct iOS26NavigationTitleSampleApp: App {
var body: some Scene {
WindowGroup {
NavigationStack {
ContentView()
.navigationTitle("Root")
.navigationBarTitleDisplayMode(.inline)
}
}
}
}
struct ContentView: View {
var body: some View {
VStack {
NavigationLink {
ListView()
} label: {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
}
}
.padding()
.toolbar {
ToolbarItemGroup(placement: .navigation) {
Button("Test") {
}
Button("Test2") {
}
}
}
}
}
struct ListView: View {
var items: [Int] = Array(0..<100)
var body: some View {
List {
ForEach(items.indices, id: \.self) { idx in
cell(items[idx])
}
}
.listStyle(.plain)
.toolbar {
ToolbarItemGroup(placement: .navigation) {
Button("Test") {
}
Button("Test2") {
}
}
}
.navigationTitle("TTT")
}
private func cell(_ item: Int) -> some View {
Text("\(item)")
}
}
Steps to Reproduce:
- Set the device to Dark Mode.
- Launch the sample app. → The root view’s navigation bar is in Dark appearance (as expected).
- Tap “Hello World” to navigate. → On the destination view, the navigation bar becomes Light.
- Navigate back to the root view. → The root view’s navigation bar now also remains Light.
Expected Result
The navigation bar should consistently retain the Dark appearance throughout navigation.
Notes
- Removing listStyle(.plain) stops the issue (navigation bar stays Dark).
- Simulator: Could not reproduce on iOS Simulator.
- Devices: Reproducible on physical device.
Environment
- Device: iPhone 15 Plus
- OS: iOS 26 (23A341)
- Xcode: 26.0 (17A324)