Releases: chuckfinca/ASimpleAuthKit
ASimpleAuthKit v0.2.0: Architectural Refactor & Client-Controlled Biometrics
This is a major update to ASimpleAuthKit, focusing on architectural purity, testability, and developer flexibility. The library has been refactored to decouple it from Firebase singletons and the automatic biometric system has been replaced with a more powerful, client-controlled flow.
Note: This version contains breaking changes from v0.1.0, primarily related to the biometrics implementation and the signOut method. Please review the migration guide below.
🚨 BREAKING CHANGES & Migration Guide
Biometrics System Overhaul: The previous automatic biometric flow (.requiresBiometrics on subsequent launches) has been removed. Biometrics are now explicitly managed by the app developer for a more controlled user experience.
Migration: You must now use the new BiometricController to offer, enable, and require biometric authentication. The old behavior will no longer work. Please see the new BIOMETRIC.md documentation for a complete implementation guide.
signOut() is now async: The signOut() method on AuthServiceProtocol is now an async function to better reflect its underlying asynchronous nature.
Migration: Update all calls from authService.signOut() to await authService.signOut().
✨ New Features
Decoupled & Testable Architecture: Core services are now decoupled from the static Auth.auth() singleton via protocols (FirebaseAuthClientProtocol). This makes the library significantly more robust and allows for comprehensive, reliable unit testing without relying on the Firebase emulator.
Client-Controlled Biometrics: A new BiometricController and BiometricPreferenceManager give you full control over the biometrics lifecycle. You decide when to offer setup and when to require authentication.
Improved Error Handling: Added new, more helpful error cases like .helpfulInvalidCredential, .helpfulUserNotFound, and .emailAlreadyInUseDuringCreation to provide clearer user feedback.
Email Verification: Added a sendVerificationEmail() method to AuthService.
New State emailInUseSuggestSignIn: A dedicated state for when a user tries to create an account with an existing email, allowing for a better UX.
📚 Documentation
New BIOMETRIC.md: A comprehensive guide on how to implement the new client-controlled biometric authentication flow.
Updated README.md: The main documentation has been overhauled to reflect the new architecture, updated APIs, and improved testing strategy.
Initial Release: ASimpleAuthKit v0.1.0
ASimpleAuthKit v0.1.0
Initial release of ASimpleAuthKit, a Swift package that streamlines Firebase Authentication integration with SwiftUI.
Features
- FirebaseUI integration with support for multiple auth providers
- SwiftUI-friendly ObservableObject with clear authentication states
- Biometric authentication support for returning users
- Account linking and merge conflict resolution
- Secure keychain storage with optional access group sharing
- Comprehensive error handling with AuthError enum
- Fully tested with Firebase Auth Emulator
Requirements
- iOS 16.0+
- Swift 5.8+
- Firebase/FirebaseUI dependencies
This initial release provides a solid foundation for authentication flows in SwiftUI applications while maintaining a clean, state-based architecture.