Sponsored Link
Get All The Insights You Need To Build Quality Apps
Whether it’s a crash, slow screen transitions, slow network calls or unresponsive UIs, Instabug grabs you all the logs you need to fix to ship quality apps. Get started now.
News
Lightweight Analytics That's Not Evil
Privacy-focused analytics tools are on the rise right now. We're using Plausible for the Swift Package Index (which I thoroughly recommend if you're looking for web analytics). If you're looking for something to put into your app, though, maybe check this new tool from Daniel Jilg out. It certainly says all the right words on the web site!
Reimagining Apple’s documentation
What's wrong with the Apple developer documentation? Here are 3,500+ words from Paul Hudson with a vision of a perfect developer documentation world.
(and here are 28 words on James Dempsey's vision. 😂)
Apple Search Ads introduces a new way to promote apps
Because the problem with the App Store is that there wasn't enough advertising. 🙄
Code
How OrderedSet works
As you might expect, the Swift collections library contains some clever thinking:
My error was to equate “hash table” with “set or dictionary” in my head, but it turns out there are other kinds of hash tables.
Ole Begemann explains more.
SwiftRegexDSL
Like attributed strings, regular expressions are notoriously challenging to read. What if you could describe your expression in descriptive terms? This new library from Jérémy Marchand aims to let you do just that.
Also, my prediction on the rapid adoption of result builders is coming true. I passed on about five other articles or libraries that used them this week. I think this library is potentially worthwhile if you do lots of regular expressions that you often need to edit. Still, the tactic of choosing dependencies carefully and cautiously is a good one.
The hidden secrets of SwiftUI's TabView
One aspect of SwiftUI that I love is that it takes a fresh look at UI controls based on how developers have been implementing apps for the last ten or more years. Do we truly need separate controls for swiping between pages, displaying pages in a tab bar, and pages in a carousel? Kristaps Grinbergs takes a look at one SwiftUI control that will tackle all three tasks.
Abstracting Navigation in SwiftUI
I agree with Omar that the mechanisms we have for navigation in the current version of SwiftUI favour simpler apps and can feel a little limiting as you grow. He proposes the approach of triggering navigation with a Combine publisher. I fear this may go too far the other way, but I enjoyed the article!
Design
Complications Overhaul
What's the difference between adding a bare-bones complication to a watchOS app and sweating the details in terms of offering what your users might want. This post is an effective illustration of just how much work can go into a complication from David Smith. 😳
Jobs
Senior iOS Engineer @ Scoop – Scoop is building the central platform to enable any company to thrive with hybrid work. Our team is experienced, collaborative, and product-minded. We've weathered the storm of COVID, more focused than ever on the opportunity that we have to build great products. This is a special opportunity to help enable an entire generation of employees to unlock the full potential of flexible work. – Remote within the US
Mobile Full Stack Engineer @ Expensify – Join our passionate team of top-notch engineers to solve a real-world problem, and help people spend less time managing expenses and more time pursuing their real goals. As we revolutionize the way people manage their expenses, being part of the Expensify team means building the easiest, fastest, and most efficient platform to automate everything expense-related. – Remote, San Francisco, Portland, Michigan, New York, London, or Melbourne
iOS Developer @ Atomic Robot – Atomic Robot works with some of the most exciting companies and brands to help them bring their innovative projects to life! We have a highly collaborative team that is focused on high quality engineering and continuous learning. – Remote
Senior iOS Software Engineer @ Doximity – Doximity, the medical network used by over 70% of US clinicians, is hiring passionate Senior iOS engineers (remote-friendly!). You'll get to 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 newly launched telemedicine feature. Apply today! – Remote within the US
Solutions Engineer @ RevenueCat – At RevenueCat, we make selling subscriptions in your app easy. We launched as part of Y Combinator's summer 2018 batch and today are handling subscriptions for more than 10 million mobile subscriptions. In this role, you'll partner with companies of all sizes to ensure they have a flawless implementation and come up with creative solutions for the needs and requirements of each app. – Remote
Is your company hiring? Talk to your hiring managers and get them to list your open positions over at iOS Dev Jobs. Standard listings are free, so there's nothing to lose!
Insiders
Thanks so much to this week’s iOS Dev Weekly Insiders! Rob Norback, Sahand Nayebaziz, Dylan Lewis, Joey Jarosz, and Ryan Ashcraft! Your support means the world to me. Thank you. 😍
This week’s insider call happens in just a couple of hours from now, so there’s still time to sign up and join us!
Comment
You may think I talk about the Swift Package Index too much in this newsletter, and you’re probably right. After all, it’s what I spend most of my time doing. You might be happy using CocoaPods or Carthage and don’t see any value in replacing something that still works well. I don’t blame you, but hold on before you skip down to this week’s links, give me one more paragraph. 🤞
We launched a new feature for the Swift Package Index this week, and it’s not only for people who use the Swift Package Manager! “Try in a Playground” lets you generate a Swift Playground that you can open in Xcode that has a library pre-imported and ready to use. Visit any package page on the Swift Package Index, click the “Try in a Playground” link, generate the playground, and a few seconds later, you’re ready to try it out. That’s a great feature, even if you eventually import the library to your app using CocoaPods or Carthage. 🚀
If you want more details, here’s the launch announcement for the feature, or if you’re convinced and want to grab the app immediately, download it here.
Oh, and while we’re on the subject, this “Try in a Playground” button is a big part of why the Swift Package Index exists in its current form. I wrote about that this week too. I hope you enjoy the story!
Dave Verwer