Environment
- Swift, using
FirebaseAuthSwiftUI, FirebaseAppleSwiftUI, and FirebaseGoogleSwiftUI through Swift Package Manager
- FirebaseUI 16.1.0
- Firebase 11.12.0; GoogleSignIn 7.1.0
- Mac Catalyst on macOS 26.6.2, Xcode 26.6 (17F113), SDK 26.5, Swift 6.3.3
- Comparison run: iPhone 17 Pro Simulator, iOS 26.5
Reproduction
In a UIKit-hosted SwiftUI view, use the documented stock picker pattern:
AuthPickerView {
Text("Minimal FirebaseUI host")
}
.environment(authService)
Configure authService with Apple and Google providers, attach the hosting controller to a window, then set authService.isPresented = true.
Our hosted XCTest reproduces a fatal error on Catalyst while presenting the sheet:
No Observable object of type AuthService found.
A View.environmentObject(_:) for AuthService may be missing as an ancestor of this view.
The same stock-picker presentation test passes on iOS Simulator. The Catalyst failure also reproduces with a plain SwiftUI sheet containing an @Environment(AuthService.self) reader, suggesting a sheet environment propagation problem rather than provider configuration. Waiting until the presenting content is rendered did not avoid the crash.
Proposed fix
Explicitly inject .environment(authService) into AuthPickerView's primary sheet content, after .mfaHandler(). The nested legacy recovery sheet already injects it explicitly.
Both a temporary prototype and the actual patched package passed presentation, dismissal, and simulated successful-authentication handling on iOS Simulator and Catalyst. The consuming app ran six focused hosted tests per platform with zero failures. Real Apple/Google OAuth and the FirebaseUI repository's full test suites were not exercised. I am submitting the corresponding patch.
Environment
FirebaseAuthSwiftUI,FirebaseAppleSwiftUI, andFirebaseGoogleSwiftUIthrough Swift Package ManagerReproduction
In a UIKit-hosted SwiftUI view, use the documented stock picker pattern:
Configure
authServicewith Apple and Google providers, attach the hosting controller to a window, then setauthService.isPresented = true.Our hosted XCTest reproduces a fatal error on Catalyst while presenting the sheet:
The same stock-picker presentation test passes on iOS Simulator. The Catalyst failure also reproduces with a plain SwiftUI sheet containing an
@Environment(AuthService.self)reader, suggesting a sheet environment propagation problem rather than provider configuration. Waiting until the presenting content is rendered did not avoid the crash.Proposed fix
Explicitly inject
.environment(authService)intoAuthPickerView's primary sheet content, after.mfaHandler(). The nested legacy recovery sheet already injects it explicitly.Both a temporary prototype and the actual patched package passed presentation, dismissal, and simulated successful-authentication handling on iOS Simulator and Catalyst. The consuming app ran six focused hosted tests per platform with zero failures. Real Apple/Google OAuth and the FirebaseUI repository's full test suites were not exercised. I am submitting the corresponding patch.