Open Source Updates for Swift Projects - Issue #8

Welcome to the 8th issue of the bi-weekly newsletter β€œOpen Source Updates for Swift Projects”. Learn about new projects and innovations of popular projects that help you as a Swift / iOS developer.

I’d love to receive your input and suggestions to include in this newsletter. Please share them with me via email.

P.S.: I am dropping the usual title addition of using a song title from the Canadian rock band "Loverboy. Here is my last hooray, my favorite song of theirs: Working for the weekend 🀘

Beautify your xcodebuild logs with XCBeatify

Building your iOS app or Swift package in a CI/CD environment with xcodebuild and then scanning the logs for the root cause when a build error occurs is ... horrible!

Use xcbeautify , its latest version 0.16.0 was released beginning of November.

For the example above the raw xcodebuild output would be 250+ lines 😲

P.S. Fastlane has used xcbeautify since the beginning of this year.

Behaviour Driven Development with Quick

Quick is a behavior-driven development framework for Swift and Objective-C. Inspired by RSpec, Specta, and Ginkgo. Quick comes together with Nimble β€” a matcher framework for your tests.

Highlights of the Quick 6 are:

  • Swift Async/Await Support

  • Xcode 14 and swift 5.7

AWS Amplify Library for Swift

AWS Amplify provides a declarative and easy-to-use interface across different categories of cloud operations. The default implementation works with Amazon Web Services (AWS), but AWS Amplify is designed to be open and pluggable for any custom backend or service.

The Amplify Library for Swift is layered on the AWS SDK for Swift, which was released as Developer Preview last year. This allows for access to the AWS SDK for Swift for a breadth of service-centric APIs.

The latest release now supports full Swift integration, Structure concurrency with async/await, beta MacOS support, and other major improvements.

The Amplify iOS team is announcing the release of version 2.0.0 of the Amplify Library for Swift. Please use this GitHub repo to inform the Amplify iOS team about features or issues, or visit the Amplify Discord server under the #swift-help channel.

Effortless modular dependency injection

Sometimes during the app development process, we need to replace instances of classes or actors we use in production code with instances that emulate their work e.g. tests, SwiftUI previews, demo apps, etc.

Usually that requires additional code changes that open up a whole new layer of errors. handling of these errors is on your shoulders.

Inject lets you express your intent in a way that enables compile-time checking that you have all the instances required for the production. At the same time, it lets you replace the instance on any object with a single line of code.

Meet: Inject, an interesting solution for the DI problem

Swift SDK for Mastodon

MastodonKit is a Swift Framework built using Swift Package Manager that wraps the Mastodon API. It covers all the endpoints and entities from Mastodon's API and is designed to be simple to use.

I don't have personal experience with this framework, but the stats look encouraging for developers to give it a try:

Its latest version (3.0.x) also adds async/await support by adding async variations for the Client’s run (_:completion:) method

MastodonKit is a Swift Framework that wraps Mastodon's API