Seeing the same thing, here's a small reproduction:
import SwiftUI
struct ContentView: View {
@State private var text = ""
@FocusState private var isTextFocused
@Environment(\.accessibilityReduceMotion) private var reduceMotion
var body: some View {
List {
TextField("Input", text: $text)
.focused($isTextFocused)
.onSubmit {
isTextFocused.toggle()
}
Text("Focus the text field then dismiss the keyboard")
Text("Observe how the safe area doesn't change when dismissing the keyboard in iOS 26 with the below accessibility settings enabled.")
Label("Reduce Motion? \(reduceMotion ? "true": "false")", systemImage: "accessibility")
Label(
"Prefer Cross-Fade Transitions? \(UIAccessibility.prefersCrossFadeTransitions ? "true": "false")",
systemImage: "accessibility"
)
}
.scrollDismissesKeyboard(.immediately)
.textFieldStyle(.roundedBorder)
.border(.red)
.safeAreaInset(edge: .bottom) {
HStack {
Text("This is in the safe area insets")
Spacer()
Button("Close Keyboard") {
isTextFocused.toggle()
}
.buttonStyle(.borderedProminent)
}
.padding()
.border(.teal)
}
}
}
It also happens when you have a sheet open and with a focused textfield/visible keyboard and you call the DismissAction, then even the parent view gets the wrong safe area.
It's almost as if someone forgot to reset/update a value alongside the keyboard animation when the different "prefer cross-fade transitions" keyboard animation run.