SwiftStarterKits Version 1.2
This is the largest SwiftStarterKits update yet! Version 1.2 includes new kits, new SwiftUI interfaces, and an improved Xcode project architecture.
by Skye Freeman · March 27, 2023
We've been thinking hard about the future of SwiftStarterKits, and planning on how we get there.
Ultimately, our goal is to provide the largest set of pre-packaged tools for Swift developers on Earth, while also keeping the quality bar extremely high. To make way for future starter kits, we've spent a lot of time this month reworking (and embracing) our monorepo approach. With SwiftStarterKits Version 1.2, we now have the extendable foundation needed to build more kits under a single project umbrella.
An added bonus to this improved architecture is that we've released a demo application (aptly dubbed "DemoKit"), which enables testing of our entire component library and end-to-end starter kits through a single set of entry points. Being able to interact with SwiftStarterKits prior to purchase has been our most requested improvement, and we've finally made this a reality through a public TestFlight beta.
With the big stuff out of the way, lets look at what else is new in Version 1.2:
# New SwiftUI Components

When building for iOS, it's common to want a deeper level of integration with the operating system. After all, if we are going to build natively, we better take advantage of everything the iPhone and iPad have to offer. However, to ensure the end user's data is protected and privacy is ensured, these uber-powerful OS level features require express user consent.
With this in mind, we've built boilerplate solutions for requesting user permissions in a wide variety of use-cases. Our new suite of "permission" interfaces cover the majority of iOS libraries that require user consent, including:
- Photo Library
- Camera
- Microphone
- Geolocation
- Calender and Events
- Push Notifications
These interfaces also come with paired data controllers, which provide an encapsulation of the system libraries exposing the required authorization. These modules are cohesively designed, and give direction for extending system integrations further depending on the needs of your app.
# New Starter Kits
We've built two new kits this month, which are foundational and provide more ways to utilize our growing set of tools:
StarterKit
This is our new fully modularized SwiftUI component library. StarterKit contains all the reusable components, language extensions, and interfaces that come with SwiftStarterKits. We separated this library into a local Swift Package to ensure all of these tools can be used immediately in existing projects, in addition to providing a modular foundation for new projects. All of our current and future kits will lean heavily on StarterKit, and will grow alongside the number of use-cases we support.

DemoKit
All the kits and SwiftUI components built so far are now accessible through DemoKit, a new kit that provides a debug environment for playing with everything SwiftStarterKits has to offer. Our updated project architecture launches into DemoKit by default, and provides example implementations for bundled flows and screens.

# Redesigned Xcode Project
Initially, SwiftStarterKits was a single Firebase integrated Xcode project, with end-to-end authentication flows providing the foundation for "user focused" applications. Our longer-term vision is to provide starter kits for many types of apps: social media, photo editing, generative A.I., e-commerce just to name a few.
With this future in mind, we moved shared components into a separate Swift package (still in the same Xcode project). What was previously "FirebaseTemplate" we've renamed to "FirebaseKit", to fit our intended naming conventions, and we've moved all of our kits under a shared application directory.
We hope this makes first time usage easier, and provides a more cohesive design for future kits and components.

# What's Next
Looking towards version 1.3, we're actively working on improving a number of things:
- Reduce the reliance on UIKit for core app navigation, making our implementation more portable towards other Apple platforms.
- Adding in-app purchase and subscription support out of the box, using RevenueCat.
- Improving documentation, and working towards a hosted doc library using DocC.
A final note
We're building a community around our growing suite of products and engineering guides that focus on iOS and macOS app development. If you find any issues with any of our starter kits, or have suggestions for how we can serve you better, we want to hear from you.
SwiftStarterKits is transparently built in the open. Visit the changelog for up to the minute updates, or follow day to day development via Mastodon or Twitter.
Until next time!