Hi everyone,
I've noticed a significant change in the visual behavior of List section headers between iOS 18 and iOS 26 beta that I'd like to clarify.
Current Behavior:
- iOS 18 and earlier: Section headers with
.listStyle(.plain)
display with a translucent material background (regular material with blur effect) when pinned to the top during scrolling - iOS 26 beta: Section headers with
.listStyle(.plain)
appear with a transparent/clear background even when pinned to the top
Sample Code:
struct ContentView: View {
var body: some View {
NavigationStack {
List(1 ..< 5) { headerIndex in
Section {
ForEach(1...5, id: \.self) { rowIndex in
HStack {
Text("Row \(rowIndex)")
.frame(height: 40)
.padding(.horizontal)
.background(Color.blue)
Spacer()
Image(systemName: "chevron.right")
.foregroundStyle(.secondary)
.font(.title3)
}
}
} header: {
Text("Header \(headerIndex)")
.frame(height: 44)
}
.listRowSeparator(.hidden)
}
.listStyle(.plain)
.clipped()
}
}
}
Questions:
- Is this change in header background behavior for
.plain
list style intentional in iOS 26? - If so, what's the recommended way to maintain the previous material background appearance when headers are pinned?
- Should this be filed as feedback if it's unintended behavior?
Testing Environment:
- Xcode 26.0 beta 3 (17A5276g)
- iOS 26 beta (23A5287g) vs iOS 18.5
- Tested on simulator
The translucent header background when pinned was quite useful for maintaining readability over scrolling content, so I'm hoping to understand if this is the new expected behavior or if there's a way to preserve the previous appearance.
Any insights would be greatly appreciated!
iOS 18.5
iOS 26 Beta