AuthPickerView sheet loses AuthService environment on Mac Catalyst
@demolaf is already working on this.
Since Sep 18, 2026.
Assessment
This issue has not been assessed yet.
Description
Environment
- Swift, using
FirebaseAuthSwiftUI,FirebaseAppleSwiftUI, andFirebaseGoogleSwiftUIthrough 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.
- Dominant language
- Swift
- Stars
- 1.6k
- Forks
- 495
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 5
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Similar issues
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
type: docs
Difficulty 1/5 Under an hour Newbie friendliness 95/100
googleapis/google-cloud-swift#971 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bitcoindevkit/bdk-ffi#1125 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
mozilla-mobile/firefox-ios#35743 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
manaflow-ai/cmux#13417 ·