Sponsored Link
Transitioning to Apple M1 silicon for iOS apps
Learn about the 3-step process to transition your iOS development to Apple M1 silicon Macs — with insights from Reddit’s successful M1 transition, FAQs about the transition, and helpful M1 transition tips. Read more.
News
How Xcode 14 unintentionally increases app size
Did you notice your app increase in size after you switched your release builds to Xcode 14? Max Topolsky & Josh Cohenzadeh. It turns out that with Xcode 14 disabling bitcode by default, that also means that it’s likely you’re not stripping binary symbols. There's more information in the post and details on how to strip binary symbols before submitting an app to the store. 👍
Swift Package Indexing podcast feed
I promised last week to include a link to the new podcast we’re doing for the Swift Package Index, and here it is!
The website isn’t fancy, but it does contain show notes for each episode and links to subscribe in podcast players, and isn’t that all a podcast site needs to do? You should also be able to find us by searching your podcast player’s directory for “Swift Package Indexing”. We hope you enjoy it!
Code
Introducing LicenseKit
Daniel Saidi has been working on a two-tier licensing approach with his keyboard extension packages for a while now. KeyboardKit is free and open source, and KeyboardKitPro has more features and a commercial license. He’s now split out the licensing model he implemented for the Pro package into a product itself, LicenseKit, and while I can’t say I’ve used it, it’s always a good sign when a product like this gets extracted from an existing business. 👍
How Does Swift Concurrency Prevents Thread Explosions?
I enjoyed this post from Lee Kah Seng that follows up on this post on Swift concurrency that I linked to recently. Lee looks at thread explosions 💥 and gives us some good advice about how we should think about our asynchronous code.
Five ways to break Swift Concurrency
Talking of Swift concurrency, is code annotated with @MainActor
guaranteed to run on the main thread? There are some exceptions., This post from Rob Jonson takes rather a harsh view of the situation, but it’s still worth a read, especially if you’re working with mixed Swift/Objective-C code.
Labeled Content in SwiftUI
Here’s a great reminder from Keith Harrison that even though it’s possible to mock up a quick label next to an input control in SwiftUI, there are plenty of reasons not to. 🚀
Design
Morflax Mockup Builder
I've linked to several tools to help create App Store screenshots over the years. Some are downloadable apps, and some are web-based. Some work in 2D, and some let you position device mockups in 3D. This one has a feature I've not seen before, 3D device mockups and ... hands! Whatever will they think of next? 😂
Seriously though, this looks good.
Books
The Swift cheatsheet
There’s a skill to demonstrating how something works concisely, and that’s what Tibor Bödecs has done here with his new Swift cheatsheet. Yes, it’s easy enough to give a concise example of using an optional variable or a loop. However, he also takes it through to more complex topics like concurrency, result builders, and generics, though, and that’s not so easy. You might find this a handy and quicker reference if you often reach for The Swift Programming Language book.
For disclosure, Tibor sent me a copy of this to review.
Jobs
iOS SDK Developer @ Stream – Do you want to work on an open-source chat SDK used by hundreds of high-profile companies and startups that impact billions of users? If you are a product-minded engineer and care about software quality, apply on the link below. – Remote (within European timezones) or on-site (Netherlands)
Freelance Interview Engineer (US Only) @ Karat – We're dedicated to improving access in tech. If you are too, join us as a Karat Interview Engineer. As such, you'll conduct technical interviews of developers like you on behalf of our hiring clients (including Duolingo, Indeed, and more) using the Karat Platform and its data-tested questions. – Remote (within US timezones)
Senior Swift (iOS) Developer @ Nord Security – iOS developer has an essential role in growing the NordPass product and a lot of freedom to make an impact. There is plenty of space for experiments and constant improvement. You would be a part of a very ambitious and enthusiastic team which gives a lot of support and encouragement every day. – Remote (within European 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, TCA, Combine) to be an integral part of our growing telemed feature. – Remote (within US timezones)
Native iOS Engineer @ MartianCraft – Are you someone who enjoys collaboratively solving challenging problems? At MartianCraft, we work together to create innovative software for our clients. You’ll always be surrounded by the best and brightest in the industry. – Remote (within US timezones)
R&D OSS Engineer @ DockYard – DockYard is a digital product consultancy, solving complex problems for enterprise clients like Netflix and Apple. We are an active OSS contributor currently working on a new naitve app framework. We're seeking to hire a SwiftUI Engineer to work within our R&D department to build out the libraries. – Remote (within US timezones)
Is your company hiring? I’d love it if you passed this link on to your hiring manager. It’s free to post a job that will get seen by thousands of developers, so there’s nothing to lose! 👍
And finally...
Some singers can smash glass with their voices, and some singers can… 💥
Comment
Like Marco Eidinger, I was also reminded of the Swift Snippets feature in Swift Package Manager as I read the post on VS Code that I linked to last week.
He has a good write-up of what it does but concludes that the outlook for the feature is pessimistic due to low adoption rates within Apple-authored packages.
I have a different view, and I believe this feature has a bright future! Even though it technically shipped with Swift 5.7, you need to enable it with an environment variable, and I’m not sure that counts as “shipped”, does it? I certainly think it’s too early to judge it.
There was a time when we’d not know about upcoming features of Xcode until Craig Federighi stepped on stage at WWDC and unveiled the beta of a new major version. However, since the Swift language, Swift Package Manager, and other core tools such as DocC are open-source, we get glimpses into potential enhancements to Xcode that would have been secret before.
Even when
swift package learn
no longer needs enabling with an environment variable, it will be too early to judge the feature. I can’t wait to see the integration with DocC work inside Xcode (or on the web? 🤯) or how it will fit into Swift Playgrounds. It could even be that Xcode 15 or 16 might open a “Package Playground” instead of the current “Add Package” window that lets you search for and then experiment with a package before hitting that “Add Dependency” button.I also see loads of potential for community tools, like the VS Code integration mentioned in Adam’s post or the Swift Package Index’s “Try in a Playground” feature.
Most importantly, the concept of including snippets of code that demonstrate what a package does is really powerful, and being able to guarantee those snippets always work with continuous integration will be transformative. Get ready to say goodbye to README files that include code snippets that may or may not work.
I can’t wait to see what features Apple is working on behind the scenes that leverage package snippets.
Dave Verwer