Introducing ListKit - an open-source library for working with lists in SwiftUI
Say hi to ListKit - a new open-source library for working with lists in SwiftUI. The library has reusable view components and extension for many common challenges.
My name is Daniel Saidi. I'm a freelance software engineer in Stockholm, Sweden, who specializes in mobile product development, with a focus on Apple platforms like iOS, macOS, tvOS and watchOS and technologies like Swift and SwiftUI.
Say hi to ListKit - a new open-source library for working with lists in SwiftUI. The library has reusable view components and extension for many common challenges.
An iOS sheet defaults to covering around half the screen, and while you can specify custom detents, it’s not enough. This article shows you how to easily make a sheet size to fit its content.
SwiftUI apps often need to perform async operations that will throw errors when things go wrong. This post shows how you can present alerts for such errors, without a bunch of messy code.
Xcode 26.3 ships with a built-in MCP server that lets AI assistants like Claude Code understand your Xcode projects, trigger builds, run tests, etc., without you having to paste errors between tools.
Apple’s Vision framework is a framework for on-device machine learning-based image analysis. Let’s see how we can use it to extract text from images in our apps.
KeyboardKit 10.2 is out! This release adds a new dictation engine and many new settings, as well as several bug fixes and improvements.
I recently gave a talk at CocoaHeads Stockholm, on how to use Xcode string catalogs to localize Swift packages, and how to create a shared translations package. Let’s see what the big deal is.
Xcode 26 fixes many problems involved in localizing Swift Packages with Xcode String Catalogs. Let’s see how we can use its automatically generated, internal symbol to translate text in any target.
I have improved my open-source project Swift Package Scripts which contains Swift Package-related scripts, by adding a couple of convenient GitHub Action Workflows to it.
Using GitHub Actions is a great way to automate your build process. In this post, we’ll take a look at how GitHub Actions can build binaries (XCFramework and dSYMs) for a closed-source Swift package.
I struggled to start using keypaths in Swift, but I’m really glad that they’re now a go-to tool to reduce repetition and increase readabily. Let’s take a look at how to use keypaths with form validation.
If your app depends on a closed-source SDK, you may find that the crash reports don’t provide a full strack trace for the SDK. Let’s see how you can add the SDK dSYMs to your app to improve this.
I recently did a talk on Best Practices in SDK Development at SwiftLeeds ‘25. I got so much feedback and great questions that I decided to post the questions and answers here.
You may have noticed that this blog has been a bit silent lately. One of many reasons is that I’ve had to focus on many new KeyboardKit customers and with the upcoming KeyboardKit 10 release.
In this post, we’ll take a look at how to use SF Symbols to easily create amazing loading animations.
I just created a new open-source Swift Package called VideoKit, which makes it easy to add video to your SwiftUI apps. It has a configurable VideoPlayer and a video-based splash screen.
After the 6 years that has passed since SwiftUI was first announced, we finally get a native WebView, with some additional web-related tools. Let’s take a look at it and what it means for my .
Say hi to PickerKit - an open-source SwiftUI package that contains various image pickers, cameras, document scanners, file pickers, picker utilities, etc. for your everyday picker needs.
Xcode String Catalogs are great for localization, but make it harder to add new languages compared to the old .strings files. Let’s see how to export & import String catalog languages, and how to use Cursor to add support for new languages with AI.
Apple’s rumored plans to unify all platform OS versions and potentially jump to version 25 (or 26) for iOS, iPadOS, macOS, tvOS, watchOS, and visionOS, might seem like a cosmetic change. But as someone who wrestle with availability checks across Apple’s ecosystem on a daily basis, I can’t help to get excited about this change.
After some reflection on what I want with this blog, I’ve decided to make a slight shift in focus. From now on, I’ll be focusing on things that I learn in my various projects, rather than aiming to cover the latest Swift & SwiftUI announcements, updates, and industry news.
Say hi to FlipKit - a tiny open-source SwiftUI library with a FlipView that can be used to flip between a front and a back view on all major Apple platforms.
When designing state in Swift, choosing between enums and structs can significantly impact your code’s flexibility and structure. Let’s explore when to use each approach with examples.
While regular Swift package targets can define dependencies, binary targets can’t. But there is a way to define dependencies for a binary Swift Package target. It’s just a little different. Let’s find out how.
Many apps have untapped commercial potential, where sophisticated features that can help others are isolated to that single app, with commercial success at the grace of the App Store and its users.
I’ve had the pleasure of receiving a ScreenBar Pro from Benq to compare how much better it is than my current desktop setup. I will give it a try and share my experience here.
In this post, we’ll take a look at how to extend the SwiftUI Text with ways to customize any parts of its text, either individual words or longer segments.
I’m very excited to do a talk on how to distribute and monetize closed-source SDKs with the Swift Package Manager, at the iOSKonf25 conference in Skopje, North Macedonia in May.
What once started as a fun hobby project for me and two friends has kept going over the years, and is now updated with a cleaner design and brand new support for IDs, travel documents, and tickets.
While this is a tech focused blog, where I generally keep politics out, I believe that reflecting on how US big tech is changing is, in fact, tech related. So, here are my 5 cents, and my plans for the future.
In this blog post, let’s see how to make the macOS Terminal use case-insensitive autocomplete for file and folders.
As SwiftUI becomes increasingly more capable over the years, custom workarounds to work around its limitations can become outdated as SwiftUI adds native support for what they aimed to solve.
As the enshittification of the Internet continues, I just noticed how Disqus has started to bombard the blog comment section with horrible ads. As such, I will remove Disqus comments from the blog.
In this post, we’ll take a look at how to create a tiny, observable search context class that can be used to handle the debouncing of any search operation, without any additional effort.
In this post, we’ll take a look at how to create small, lightweight apps that you don’t have to install to your physical device, using SwiftUI Previews and Swift Package internal views.
In this post, we’ll take a look at how to create a SwiftUI Text alternative that can mix plain text and tappable links, using the Text view’s underlying support for Markdown.
Today, Xcode 16.1 suddenly stopped fetching Swift package dependencies, with a Fatal: cannot use bare repository warning. Let’s see how to fix it, in case it starts happening to you.
After many, many years of great service, I’m looking to replace Fastlane with plain Shell script files, which I hope will result in faster builds and…less Ruby.
The GestureButton component that used to be part of the SwiftUIKit has now been moved to a new, separate open-source project called GestureButton.
Let’s take a look at the Emoji standard’s support for skin tone, gender, and direction variants, and how it may have reached its peak as Apple for the first time has removed emojis in iOS 17.4.
In this post, I’ll show how to use a simple enum to make it easier to reuse standard button types (add, delete, edit, done, etc.), with support for localization.
In this post, I’ll describe how to create custom environment values in SwiftUI, and how I’ve abused Swift to let us do it with a lot less code than what is otherwise required.
In this post, we’ll take a look at how to create a SwiftUI LabelStyle that only tints the label icon, while leaving the text element unchanged.
In this post, we’ll take a look at how to set up a custom Swift Package file header, which is then used for all new Swift files that we create in that package.
In this post, we’ll take a look at how we can use Xcode 15’s improved DocC capabilities to link to native type extensions, to provide even better documentation to our users.
In this post, we’ll see how we can use GitHub Actions to automatically build and publish a Swift Package’s DocC docs to GitHub Pages, every time we push to a specific branch.
In Swift, inout parameters can reduce code duplication and the amount of code needed to perform certain tasks. Let’s take a look at some examples.
Some users have reported that their keyboard extensions have disappeared in iOS 17.2. This article discusses some concerns after investigating the problem.
I’ve decided to open-source the EmojiKit SDK and move it from my company Kankoda to my own GitHub account. In this post, I’ll discuss why and how it will be done.
In this post, we’ll take a look at how easy it is to use the open-source Swift package ApiKit to integrate with a REST-based API and map its data to local models.