When building with the iOS 26 SDK (currently beta 4) and using the .fullScreenCover
modifier in conjunction with a TabView
, content from the background view bleeds through the .fullScreenCover
making the UI fairly illegible.
How to reproduce
The gifs below show the bleed through in iOS 26 and the previous behavior of the same code in iOS 18.
Code
The code below was used to demonstrate the issue seen in the gifs above.
import SwiftUI
struct FullScreenCoverBleed: View {
@State private var isPresentingRegistration = false
var body: some View {
NavigationStack {
TabView {
Tab("Home", systemImage: "house") {
Button("Create Account") { isPresentingRegistration = true }
.buttonStyle(.borderedProminent)
.fullScreenCover(isPresented: $isPresentingRegistration) {
RegistrationWizard()
}
List {
ForEach(1 ..< 11) { index in
Text("Article \(index)")
}
}
.listStyle(.plain)
}
Tab("Settings", systemImage: "gear") {}
}
}
}
}
struct RegistrationWizard: View {
var body: some View {
// A page-style wizard
TabView {
// Page 1
VStack {
Text("Page 1").font(.largeTitle)
Text("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
Spacer()
}
// Page 2
Form {
TextField("Username", text: .constant(""))
// Fields for password, email, and so on ...
}
// Page 3 and so on...
}
.tabViewStyle(.page(indexDisplayMode: .automatic))
}
}
Where bleed-through occurs
.sheet doesn't have this problem
Interestingly, if you use a .sheet
instead of a .fullScreenCover
, everything works as expected. As shown below, there's no bleed-through when using a .sheet
:
Next steps?
Is there a recommended way to prevent this bleed-through? Or is this perhaps a known bug in iOS 26 beta 4?