Sponsored Link
Free In-App Messaging SDK & UI Kits for iOS/Swift
Stream Chat is the easiest way to add messaging to your iOS app. High-level UI components connect the Stream Chat API with minimal coding. Try Stream Chat free for 30 days or apply for your Maker Account, free forever for qualifying teams. Try for free.
News
How many iOS users opt-in to ad tracking?
Interesting perspective from Nick Heer on this post by Filipe Espósito. I'm also very sceptical of the 75% number, but this is the key takeaway:
At any rate, if 18–30% of iOS users are now opting into tracking, it is considerably higher than the 5% estimate in May 2021 or even the 16% in Adjust’s data from about the same time period. I do not like tracking, but maybe a quarter of people do. The important thing is giving users a choice and respecting it.
If those numbers are accurate, that's surprising.
Tools
Swift Bundler v2
Talking of doing a great job at informing people of open-source releases, check out this post to the Swift Forums from stackotter, creator of swift-bundler, which allows you to build macOS apps from a Package.swift
file rather than an Xcode project.
Code
Building an Accessible Custom Tab Bar
The very best way to ensure that the tab bar in your app is accessible is to use a standard UITabBar or a TabView. However, if you need to use a custom implementation of something similar to a tab bar, start by reading this guide by Bas Broek.
Exporting data from Unified Logging System in Swift
Last week, Majid Jabrayilov covered the basics of logging using Apple's unified logging system. This week, he covers the next thing you'll need after starting to log diagnostic information, a way for users who are experiencing problems to get those logs back to you.
DonateToUkraine
It has now been two months since the appalling invasion of Ukraine began, and it's clear that it's not ending any time soon. The initial attack prompted vast financial support, but that money won't last forever, and ongoing support is needed. One way to help might be to add Oleg Dreyman's new package to your app that gives you an easy way to let people who use your app donate to the cause.
in-App Purchases in Swift Playgrounds on the iPad
I love that Matt Waller is really digging into creating apps with Swift Playgrounds on iPad. In this post, he tackles IAPs.
Design
Using Min-Mid-Max Principles in Design
Remember when making an app for the iPhone meant designing for one screen size? Just about the only thing you had to worry about was device rotation. None of us wants to go back to those days, but with so many device sizes and features like dynamic type, you certainly need to be much more careful to make sure your app looks the best. Jordan Morgan has some good advice on getting it right.
Business and Marketing
Asking for ratings is good for your app
Here's Ryan McLeod with a Twitter thread that could make you some money! It's good advice not to be too cautious with the review prompt API.
AppScreens
My least favourite part of preparing releases of the iOS Dev Jobs apps is updating the screenshots. It's not the taking of the screenshots. That's automatable. It's getting those screenshots into the design document where I have my iPhone frame and marketing copy. I saw Luc Vandal tweet about this tool, and it looks great.
Books
Test-Driven iOS Development with Swift
This book by Dominik Hauser isn't new, but this edition is updated and covers new topics like testing async/await code, SwiftUI, and something I don't think I've seen anyone else tackle—Testing a diffable data source.
For full disclosure, Dominik sent me a complimentary copy of the book.
Jobs
iOS Developer @ Konrad – Konrad is an amazing community of the brightest minds in tech. We build bleeding edge mobile applications for some of the largest, most exciting companies in the world. We have a team of 250+ developers that work with the latest technologies. – Remote (within US timezones) with some on-site work (Canada)
Mac & iOS Software Engineer @ Flexibits Inc. – We make Fantastical and Cardhop, award-winning calendar and contacts apps for Mac and iOS. We were honored to win Apple's Mac App of the Year in 2020 and we're looking to make our apps even better! Our team is a 18 person, fully-remote company spread across the US and Europe. – Remote (within US or European timezones)
iOS Developer @ Maple Media – Maple Media is an innovative mobile media company that acquires and operates category-leading apps that entertain, empower productivity, and enrich everyday life. – Remote (Anywhere) with some on-site work (United States in CA)
iOS Developer @ Doximity – Doximity, the medical network used by over 80% of US clinicians, is hiring passionate iOS engineers (remote). You'll be part of an amazing product team and work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our growing telemedicine feature. – Remote (within US timezones)
Senior iOS Engineer @ Doximity – Doximity, the medical network used by over 80% of US clinicians, is hiring passionate iOS engineers (fully remote!). Come be part of an amazing product team + work on an app that is constantly evolving. Use your skills (Swift, MVVM, FRP) to be an integral part of our newly launched telemed feature. – Remote (within US timezones)
Is your company hiring? You can post your open positions for free over at iOS Dev Jobs.
And finally...
Did you know you could make dynamic wallpapers yourself? 🤯
Comment
One thing I’d love to do a better job with for this newsletter is noticing when Swift packages get significant updates so that I can link to more of them. This community invests so much time and effort into open-source Swift libraries, yet we’re often not great at telling the world about our open-source work.
I was inspired to write about this by Jesse Squires’ recent blog post covering the release of Quick 5.0, with significant fixes and enhancements to the BDD Swift testing framework.
Yes, we have RSS feeds on the Swift Package Index, and the major releases feed can be helpful¹, although I do sometimes wonder what qualifies as a “major release”!² 😂 I’d still love to see more people write or blog about open-source package releases and updates, though. Not just to help me out, but so they show the entire community the great work they are doing.
The biggest problem with what I’m suggesting here is that it asks even more of open-source authors and maintainers. A tweet isn’t much work, so most people do that. Great release notes are a step up from a tweet, and blog posts ask even more of people who are already giving so much.
Open-source funding is often in the news recently, and it’s a massive problem for our industry. In his post, Jesse talks about taking over the project to unblock his team, but it’s clear that he already sees where that responsibility will take him. Into being an unpaid maintainer with obligations to keep this library organised and working, as many before him have been.
I’m also familiar with this through trying to make the Swift Package Index work financially. Sven and I are incredibly grateful to the 56 generous community sponsors who sponsor our project. Still, the reality is that that only covers a fraction of the time we put into it. I’m also thrilled to say that we welcomed our first corporate sponsor, Stream last week. Stream is this newsletter issue’s sponsor, too! So they get a double thanks! ❤️ Please check them out below. The irony is that the Swift Package Index would undoubtedly be considered “well funded” in open-source terms, and yet it’s still unsustainable, and we’re constantly working towards fixing that. I don’t say this to ask you to consider sponsoring the package index, but maybe consider supporting some open-source project that you or your app relies on. Or, even better, ask your company to fund some projects.
¹ You might not believe this, but trying to keep up with some of the libraries was part of the reason behind the idea of building the Swift Package Index. It was far from the only reason, but I did think that if there was a site that tracked packages, maybe I could stay more informed.
² I don’t mean any disrespect to the folks at Mapbox. I know plenty of work goes on over here. My point is that while semantic versioning is a great idea, We will never realise the dream of it being consistently applied. 😅
Dave Verwer