Changelog.

SwiftStarterKits is transparently built in public.

Twitter | Mastodon

# SwiftUI Starter Kit

# 1.1.0 (February 16, 2023)

This SwiftUI Starter Kit update includes new button styles, SwiftUI components, SwiftUI modules, and lots of internal project cleanup.

New SwiftUI View Components:

  • ConfettiView: A particle emitter system based on SpriteKit and bridged to SwiftUI. Perfect for adding a little bit of "pop" to your app.
  • IconLabelView: A customizable SwiftUI layout component which composes a generic view alongside a VStack of two Text items.
  • ScrollingHStack: A customizable SwiftUI layout component that composes a generic set of view objects inside a HStack within a ScrollView.
  • ScrollingVStack: A customizable SwiftUI layout component that composes a generic set of view objects inside a VStack within a ScrollView.

Updated SwiftUI Styles:

  • ButtonStyles: Added Primary, Secondary and Tertiary button styles, in addition to Rounded and Rectangle style customizations.

New SwiftUI View Modules:

  • DebugMenuView: A SwiftUI menu intended for instantiating and viewing module library screens. View's are instantiated in offline mode and use stubbed data.
  • SubscriptionView: A SwiftUI view module for building a subscription or in-app purchase paywall.

# 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 a offline debug environment and in an online environment plugged into a Firebase backend.

New Dependency Integrations:

New SwiftUI View Modules:

  • SignInView: 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: 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: 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: A SwiftUI.View implementation, providing an interface for introducing the application and its features to the user. Includes a scrolling View carousel, and navigation triggers to sign in or account creation contexts (actual navigation is externally configured).
  • ResetPasswordView: A SwiftUI.View implementation for guiding a user through resetting their password. Includes email input validation and a configurable navigation callback.
  • HomeView: 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: A SwiftUI.View implementation for 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: A SwiftUI.View implementation that securely collects the user's password information for the purpose of account reverification.
  • ChangeEmailView: 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: A SwiftUI.View implementation for self service password change. Collects a password, a password confirmation, provides input validation, then triggers an external navigation request.

New SwiftUI View Components:

  • AvatarView: A SwiftUI 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.
  • OnboardingScrollView: A SwiftUI component that is a concrete implementation for displaying a scrolling carousel of View objects, intended for onboarding.
  • EducationalBannerView: A SwiftUI view that takes a title string and a selection "action", and displays a rectangular "banner" intended for user selection. Used by the template for Educational links to SwiftStarterKit's documentation resources.
  • CircularGaugeStyleDesignerView: A SwiftUI view 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 that is a concrete implementation of 'CircularGaugeProgressViewStyle' and 'SwiftUI.ProgressView', providing a custom styled loading indicator alongside network operations or temporarily blocking user input.

New SwiftUI Modifiers:

  • WebViewSheet: A SwiftUI.ViewModifier that allows the binding of a WebView as a modal sheet over the current SwiftUI view context.
  • SystemFontSizedToFit: A SwiftUI.ViewModifier that manipulates a SwiftUI.Text view and scales it's string contents to fit the enclosing bounds.

New SwiftUI Extensions:

  • Color+Assets: A SwiftUI.Color extension, exposing internal style guide colors from xcasset colors. Supports light and dark environments by default.

New SwiftUI Styles:

  • 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.
  • PrimaryButtonStyle: A SwiftUI ButtonStyle, providing sane defaults for a style guide's Primary Button. Integrates a slight selection shrink animation, and the provided foreground/background colors from the XCAsset color implementation.
  • SecondaryButtonStyle: A SwiftUI ButtonStyle, providing sane defaults for a style guide's Secondary Button. Integrates a slight selection shrink animation, and the provided foreground/background colors from the XCAsset color implementation.
  • CustomViewButtonStyle: A SwiftUI ButtonStyle, providing sane defaults for a button that takes a custom SwiftUI.View or SwiftUI.Label implementaion, but integrates the same slight selection animation as other style guide buttons.

New Data Modules:

  • User: A basic User structure, used by the UserController system.
  • 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.
  • UserControllerMock: A concrete implementation of the UserControlling protocol that implements the full interface for managing async user data. Used in debug and test environments.
  • UserControllerFactory: A namespace for building UserController objects in different environments (Offline via stubbed data, or fully networked with a Firebase or Backend implementation). This allows for simple dependency injection of UserController across the system.
  • AuthenticationError: A Swift.Error and Swift.LocalizedError enum implementation. This provides an extendable interface for categorizing
  • FormValidating: An abstract protocol for form validation, which collects an array of StringValidation rules.
  • StringValidating: An abstract protocol for string validation
  • 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.
New UIKit ViewController's:

  • VideoViewController: A UIKit UIViewController subclass that wraps an AVPlayer object and AVPlayerLayer, for easily loading a video file from a filepath or URL, and providing stop, start, and loop controls for video playback via View Controller containment. Also exposes overrides for pausing and continuing an active video when the application backgrounds/foregrounds.
  • ApplicationFlowController: A UIKit UIViewController subclass that handles the Application flow's navigation within the FirebaseTemplate. Composes other flow controllers into an isolated user experience with a single entry point in a UIApplicationDelegate.
  • AuthenticationFlowController: A UIKit UIViewController subclass that handles the Authentication flow's navigation within the FirebaseTemplate. Composes the internal SwiftUI screens: OnboardingView, SignInView, CreateAccountView and ResetPasswordView into a concrete set of UIHostingController's, with a single entry point for use by the top level ApplicationFlowController.
  • HomeFlowController: A UIKit UIViewController subclass that handles the Home flow's navigation within the FirebaseTemplate. Composes the internal SwiftUI screens: HomeView, AvatarView, EducationBannerView into a concrete set of UIHostingController's with a single entry point for use by the top level ApplicationFlowController. Additionally, manages SettingsFlowController instantiation as child View Controller.
  • SettingsFlowController: A UIKit UIViewController subclass that handles the Settings flow's navigation within the FirebaseTemplate. Composes the internal SwiftUI screens: SettingsView, VerifyPasswordView, ChangeEmailView and ChangePasswordView into a concrete set of UIHostingController's with a single entry point for use by the HomeFlowController.

New UIKit Extensions:

  • UIColor+Assets: A UIKit.UIColor extension, exposing internal style guide colors from xcasset colors. Supports light and dark environments by default.
  • UIButton+Configurations: A UIKit.UIButton extension, exposing a set of static UIButton configurations which style buttons similar to comparable the SwiftUI button used by the FirebaseTemplate. This exists to reach parity between SwiftUI and UIKit layout contexts.
  • UIStackView+Convenience: A UIKit.UIStackView extension, exposing a handul of convenience functions for implementing UIStackView's in a more terse manner.
  • UIView+Convenience: A UIKit.UIView extension, exposing a handul of convenience functions for implementing UIView's in a more terse manner.
  • UIViewController+Convenience: A UIKit.UIViewController extension, exposing a handul of useful functions for creating and managing UIViewController's in a flattened hierarchy, in addition to creating and removing child UIViewController's responsibly.

# Web

# 2.0.4 (February 18, 2023)

  • Add full list of component descriptions to the changelog.
  • Add Discord links to home page.
  • Update language copy.

# 2.0.3 (February 16, 2023)

  • Fix links throwing 404's.
  • Updated navigation bar.
  • Updated changelog layout.

# 2.0.2 (February 5, 2023)

  • Update blog posts to reflect the product restructure, which includes removing dead links and revising article content.

# 2.0.1 (February 2, 2023)

  • Updated meta tags, improved title's and descriptions for the sake of SEO.

# 2.0.0 (January 31, 2023)

  • Product relaunch, site wide rebrand.
  • Removed separate product pages.
  • Consolidate home page copy into several new sections. Including a brand new hero, a "Features" section (An in-your-face informational explosion of everything that SwiftStarterKits offers), "How it works" section (a simple walkthrough of what happens once you buy a license), a "Pricing" section (Self-explanatory snapshot of licenses pricing and their differences).
  • New gradient styles, for a much more Swifty feel (orange go brrrrrrr).

# 1.7.1 (December 20, 2022)

# 1.7.0 (December 17, 2022)

  • Added the changelog page (what you're reading!).
  • Added social media links.
  • Updated Terms and License pages

# 1.6.1 (December 16, 2022)

  • Blog styling cleanup.
  • Reworked product page headers for better mobile support.
  • Increase sitewide line spacing for better typography.

# 1.6.0 (December 7, 2022)

# 1.5.0 (December 2, 2022)

  • Added Firebase Starter Kit product page. (removed)
  • Added support for multiple product download email response types (paid, free).
  • Added a custom 404 page.

# 1.4.2 (October 31, 2022)

  • Added twitter and og meta tags to all content.
  • Fixed canonical page issues.

# 1.4.1 (October 11, 2022)

  • Added robots.txt

# 1.4.0 (September 8, 2022)

  • Added dedicated product page.
  • Updated the home page to display a grid of products.
  • Added product banner images, dynamic product page copy.

# 1.3.0 (August 18, 2022)

  • Added /blog route, unlinked for now.
  • Added blog list and post templates.

# 1.2.0 (August 18, 2022)

  • Added Javascript generation via Parenscript.
  • Migrate styling to Tailwindcss. created shared button styles.
  • Added SQLite3 database instance.
  • Added email collection.

# 1.1.0 (August 12, 2022)

  • Added page analytics via SimpleAnalytics.
  • Fix mobile layout.

# 1.0.0 (August 1, 2022)

  • Setup hosting.
  • Added Stripe integration.
  • Single page MVP works.