Release Notes
The complete Swift Starter Kits release notes and version history can be found here.
Version 2.0.0
June 15, 2023
This release is a major overhaul of the Swift Starter Kits kit and component libraries. After receving a lot of feedback, we’ve decided to work towards making the kit framework agnostic. As such, we’ve removed Firebase and RevenueCat dependencies, and are instead providing offline implementations of all components and templates.
In the interim, we’ve temporarily removed FirebaseKit as we work to rebrand it to AuthenticationStarterKit. The kit is being streamlined and will be re-released in the next release.
Additionally, we’ve released a new kit!
Added
- SubscriptionStarterKit. This is a production ready SwiftUI Starter Kit that provides a foundation for managing in-app subscriptions. Includes stateful onboarding, version changelogs, subscription UI, light and dark mode, dynamic app icons, themeable color system, haptics.
Removed
- Temporarily removed FirebaseKit as it undergoes changes towards being backend agnostic. This will vastly improve the developer experience, make the system more flexible and extensible.
Version 1.2.0
March 24, 2023
This is the largest Swift Starter Kits update ever. We’ve completely reorganized the bundled Xcode project, pulled our component library into a companion Swift Package (that ships alongside the Xcode project), and added user interfaces for major iOS system permission libraries.
Added
Created a SwiftUI Component Library. Reusable interfaces, components and language extensions have been pulled into a separate project.
DemoKit. This new kit acts as an interactive introduction to the complete library of components offered by SwiftStarterKits.
CalenderPermissionsView, a SwiftUI interface is for acquiring calender permissions from the operating system.
ContactPermissionsView, a SwiftUI interface for acquiring contact/address book permissions from the operating system.
LocationPermissionsView, a SwiftUI interface for acquiring location permissions from the operating system.
CameraPermissionsView, a SwiftUI interface for acquiring camera permissions from the operating system.
MicrophonePermissionsView, a SwiftUI interface for acquiring microphone permissions from the operating system.
NotificationPermissionsView, a SwiftUI interface for acquiring local/push notification permissions from the operating system.
PhotoPermissionsView, a SwiftUI interface for acquiring photo library permissions from the operating system.
CalenderController, a controller class that encapsulates EKEventStore, and manages system permissions.
ContactController, a controller class that encapsulates the Contacts library, manages system permissions, and works with CNContactStore.
LocationController, a controller class that encapsulates CoreLocation, manages system permissions, and works with CLLocationManager.
MediaCaptureController, a controller class that encapsulates AVFoundation, and manages system permissions for camera and microphone access.
NotificationController, a controller class that encapsulates the UserNotifications library and manages system notification permissions.
PhotoController, a controller class that encapsulates the Photos library, and manages read/write access to the system photo library.
Changed
FirebaseTemplate has been renamed to FirebaseKit. Shared components have been pulled into the StarterKit component library.
Updated SwiftUI Environment Variables.
Version 1.1.0
February 16, 2023
This Swift Starter Kits update includes new button styles, SwiftUI components, SwiftUI modules, and lots of internal project cleanup.
Added
SwiftUI Button Style System. This adds Primary, Secondary and Tertiary button styles, in addition to Rounded and Rectangle style customizations.
SubscriptionView. A SwiftUI view module for building a subscription or in-app purchase paywall.
Version 1.0.0
December 2, 2022
This is the first major product release for SwiftStarterKits! A complete end-to-end integration for Firebase is included, which is composed with a complete set of fully networked user authentication SwiftUI components. The user experience works in both an offline debug environment and in an online environment backed by Firebase.
Added
SignInView. This is a SwiftUI View implementation providing an interface for logging in users with traditional email + password authentication. Handles text input, secure text entry, email and password form validation, error messaging, and loading icon presentation.
CreateAccountView. This is a SwiftUI View implementation providing an interface for receiving user account info with traditional email + password + password confirmation fields. Handles text input, secure text entry, form validation, error messaging, and loading icon presentation.
EmailVerificationView. This is a SwiftUI View implementation providing an interface for triggering a user a verification email, and polling an external data source until verified while the app is foregrounded. Also provides facilities for resending and restarting the email verification process.
OnboardingView. This is a SwiftUI View implementation providing an interface for introducing the application and its features to the user. Includes a scrolling view carousel, and externalized button actions for composing sign-in and sign-up navigation contexts.
ResetPasswordView. This is a SwiftUI View implementation for guiding a user through resetting their password. Includes email input validation and a configurable navigation callback.
HomeView. This is a SwiftUI View implementation with navigation to a Settings or Profile View. The existing implementation also includes SwiftStarterKits blog links for setup, but is intended for removal and customization.
SettingsView. This is a SwiftUI View implementation for handling user and application settings. Includes an account section containing fields for triggering navigation to email and password change flows and user logout, but can be extended as needed (Purchase restoration, subscription updates, push notification settings, app icon configuration, etc).
VerifyPasswordView. This is a SwiftUI View implementation that securely collects the user’s password information for the purpose of account reverification.
ChangeEmailView. This is a SwiftUI View implementation for self service email change. Collects a user email, provides string input validation, then triggers an external navigation request for follow up email verification.
ChangePasswordView. This is a SwiftUI View implementation for self service password change. Collects a password, a password confirmation, provides input validation, then triggers an external navigation request.
AvatarView. This is a SwiftUI View component that mimics popular “avatar” icons, which by default displays a single letter which scales to fit it’s bounds. Can be extended to show a rounded clipped image.
CircularGaugeStyleDesignerView. A debug SwiftUI View component that implements a progress view styled with ‘CircularGaugeProgressViewStyle’ and hooks it up into a designable preview for tweaking the width, length and size of the display. Allows easy experimentation for configuring new ProgressView styles.
LoadingIndicatorView. A SwiftUI View component that is a concrete implementation of CircularGaugeProgressViewStyle and SwiftUI.ProgressView, providing a custom styled loading indicator alongside network operations or temporarily blocking user input.
WebViewSheet. A SwiftUI ViewModifier that allows the binding of a WebView as a modal sheet over the current SwiftUI view context.
CircularGaugeProgressViewStyle. A SwiftUI ProgressView style, which draws a circle arc, fills it with a provided color gradient, and spins it at a provided speed. Can be applied to any SwiftUI.ProgressView implementation.
SystemFontSizedToFit. A SwiftUI.ViewModifier that manipulates a SwiftUI.Text view and scales it’s string contents to fit the enclosing bounds.
UserControlling. A protocol for managing the complete User lifecycle.
UserController. A concrete implementation of the UserControlling protocol. Abstracts away the underlying FirebaseService implementation and acts as the bridge between the User Interface and the Data layer of the application.
User. A structure for modeling a user entity , used by the UserController system.
AuthenticationError. A Swift Error and Swift LocalizedError enum implementation. This provides an extendable interface for categorizing runtime errors related to authentication.
StringValidating. An abstract protocol for string validation.
FormValidating. An abstract protocol for form validation, which collects an array of StringValidation rules.
FormValidator. A concrete implementation of the FormValidating protocol. Provides an object that receives a Sequence of string validation rules, and flattens them into a single boolean indicating validity.
PasswordValidator. A concrete implementation of the StringValidating protocol, for validating password input, coupled with a localized error message for failure cases.
PasswordConfirmationValidator. A concrete implementation of the StringValidating protocol, for validating password confirmation input, coupled with a localized error message for failure cases.
EmptyFieldValidator. A concrete implementation of the StringValidating protocol, for validating whether a Sequence of strings aren’t empty, coupled with a localized error message for failure cases.
EmailValidator. A concrete implementation of the StringValidating protocol, for validating email string input, coupled with a localized error message for failure cases.