chore: update example app on how to embed SwiftUI auth in UIKit#1329
chore: update example app on how to embed SwiftUI auth in UIKit#1329russellwheatley wants to merge 1 commit intomainfrom
Conversation
russellwheatley
commented
Mar 20, 2026
- Updated example app to demonstrate how to embed FirebaseUI Swift into UIKit app.
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a valuable example to the sample application, illustrating how to effectively integrate SwiftUI-based Firebase authentication flows into existing UIKit view hierarchies. This enhancement provides developers with a flexible approach to leverage modern SwiftUI authentication components while maintaining their established UIKit application structure, facilitating a smoother transition and adoption of new frameworks. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request adds a helpful example demonstrating how to embed Firebase's SwiftUI authentication views within a UIKit application. The implementation is generally well-structured, using UIViewControllerRepresentable to bridge between SwiftUI and UIKit. I've identified a couple of areas for improvement to enhance the clarity and correctness of the example code. Specifically, I've suggested simplifying the makeUIViewController method and refining the logic for presenting the authentication sheet to provide a more intuitive user experience. Overall, this is a valuable addition to the sample app.
| func makeUIViewController(context: Context) -> EmbeddedAuthViewController { | ||
| let viewController = EmbeddedAuthViewController() | ||
| viewController.update(authService: authService) | ||
| return viewController | ||
| } |
There was a problem hiding this comment.
The call to viewController.update(authService: authService) is redundant because updateUIViewController(_:context:) is called by the system immediately after makeUIViewController(context:). All view controller configuration and data passing from SwiftUI should be done in updateUIViewController for clarity and to follow best practices. This also avoids performing the update work twice.
func makeUIViewController(context: Context) -> EmbeddedAuthViewController {
return EmbeddedAuthViewController()
}| .onChange(of: authService.authenticationState) { _, newValue in | ||
| if newValue != .authenticating { | ||
| authService.isPresented = newValue == .unauthenticated | ||
| } | ||
| } |
There was a problem hiding this comment.
This onChange modifier automatically presents the authentication sheet whenever the user is not authenticated. This behavior can be confusing for a user, as the sheet will appear immediately upon signing out, and it makes the "Authenticate" button in your UI redundant. For an example demonstrating an embedded view, it would be clearer to allow the user to manually trigger the authentication flow via the button. I recommend removing this automatic presentation logic.