Open Source Updates for Swift Projects - Issue #4 - Prissy Prissy

Welcome to the fourth 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.

Create custom keyboard extensions with KeyboardKit

KeyboardKit is a Swift library that helps you create custom keyboard extensions for iOS and ipadOS. It extends the native keyboard APIs and provides you with much more functionality than is otherwise available.

This release adds a bunch of new emojis that have been added since emojis were last updated.

It also adds input set variants, such as .englishQwerty, .englishAzerty, .englishQwertz etc. and introduces AlphabeticInputSet, NumericInputSet and SymbolicInputSet builders for all locales.

✨ New Features

  • EmojiCategory has a bunch of new emojis.

  • EnglishInputSetProvider now supports specifying an alphabetic input set.

  • InputSetRow has new convenience initializers.

  • KeyboardContext has a new KeyboardLocale-based setLocale().

  • AlphabeticInputSet, NumericInputSet and SymbolicInputSet has new set builders for .english.

  • AlphabeticInputSet also has new .englishQwerty, .englishAzerty, .englishQwertz input sets.

Type-safe Swift APIs for SQLite

Lighter is a Swift toolset to work with SQLite3 databases in a way that is typesafe not just on the Swift side, but down to the SQL schema. Like SwiftGen but for SQLite. It is not an ORM, it doesn’t do type mapping at runtime.

Like SQLite, the Lighter toolset is versatile, highly configurable, and applicable to various applications and project setups. From caches in iOS apps, or documents in Mac apps, to server side datasets. It isn’t just a single tool, it is a set of tools for different usage scenarios.

Latest release (1.0.10) was released August 27th.

Keep your Swift Package Dependencies up-to-date

Do you use Swift Packages in your iOS app? Are you regularly checking if new updates are available? Wouldn't it be nice to automate the workflow of detecting outdated dependencies and then create pull requests to update your dependencies?

You can use a GitHub action from James Sherlock for this exact use case. Version v2 was recently published and the GitHub action is better than ever.

What's Changed

  • Added xcodePath input to specify Xcode version

  • Added workspace and scheme input to support workspaces

  • Improved Cache Avoidance (uses Xcode flag as well as deleting the cache directory)

  • Fixed issue where DerivedData may sometimes be unidentifiable

This addresses many of the known issues.

If you are looking for an equivalent GitHub action to check dependencies within your Swift Package then check out my GitHub action ⬇️

Do you need help keeping your Swift package dependencies up-to-date? GitHub action swift-package-dependencies-check is the ideal foundation to automate the process of periodically checking for outdated versions and creating a pull request to update ...

Better logging with Pulse

Pulse is a logging system for Apple platforms.

Record and inspect logs and URLSession network requests from your iOS app using Pulse Console. Share and view logs in the Pulse macOS app.

Pulse 2.0 is almost a complete rewrite that focuses on both adding new major features and optimizing performance. Logs are recorded locally and never leave your device. Alex wrote an excellent blog post covering all the additions.

Create a binary framework from your Swift Package with swift-create-xcframework

swift-create-xcframework is a very simple tool designed to wrap xcodebuild and the process of creating multiple frameworks for a Swift Package and merging them into a single XCFramework.

Release v2.3.0 adds support for Swift 5.7 and Xcode 14.0 beta 5 and above!

swift-create-xcframework also includes a GitHub Action that can kick off and automatically create an XCFramework when you tag a release in your project. Their GitHub action approach is really interesting and can be a blueprint on how to leverage Swift in GitHub Actions. I wrote a blog post on that topic.

I am an avid fan and user of GitHub Actions. Actions are individual tasks that you can combine to create jobs and customize your CI/CD workflow.

You can write your own actions to use in your workflow and share those actions with the GitHub community....