Launch Scalable iOS Chat In Days With Stream
This tutorial shows how easy it is to use Stream’s scalable chat API & UI components to ship in-app chat in a fraction of the time. Start a free trial now and try out Stream's chat API, SDK and chat React Components. See why Stream powers the feeds and chat for over 500 million end-users. Check out the tutorial.
Enhance the VoiceOver experience in your app
You might know that it was Global Accessibility Awareness Day yesterday. There's plenty of accessibility content in this week's newsletter, but let's kick the issue off with a post from the Apple Developer app on VoiceOver. There's a wealth of accessibility documentation from Apple, and I liked how this post acted as a guide into the documentation you need to get your app accessible.
The Future of Swift on the Server
Great post from Tim Condon on the state of Swift on the server. I'm not quite as convinced as Tim that this year is the year, but I do agree that the Swift team certainly keep an eye focused towards it, and there must be a reason for that. Will we ever see a first-party Swift on the server solution? I still believe it could happen, but probably not soon.
I've been doing a bit of work with Vapor recently, and as someone who has worked with web frameworks in many different languages, it's obvious how young Swift on the server is. Even though Vapor is already at version 4, it's still a very long way from where it needs to be to see any kind of large scale adoption in a world of very mature and capable other languages.
I saw a fair bit of sarcasm flying around about this post about Piranha, Uber's new tool to automatically remove code from feature flags that are no longer in use. The digs were mainly around the fact that Uber have thousands of these flags. So many that the technical debt caused by them required the creation of this tool.
You almost certainly don't need this tool, and that's OK. 👍 But don't let comments you might have seen this week make you fear a technique that can be an incredibly beneficial tool for your app, and your business. Being able to run experiments is really valuable.
It's always nice to see a mature, stable, well-loved open-source project get an update, and that's what Nuke from Alexander Grebenyuk is. This latest release adds SwiftUI and Combine support to the image caching library, along with a whole host of other improvements. 🚀
Supporting Dynamic Type with Custom Fonts
It's been possible to support dynamic type with custom fonts since iOS 11, but have you done it yet? If not, Tim Roesner shows you how to make easy work of it. What are you waiting for?
Making iOS Accessibility Testing Easy
Here's Nick Entin with a lovely little technique for unit testing your UI for accessibility grouping through snapshots. Simple and effective. 👍
Swift tip: marking unused required initializers as unavailable
Let's finish this week's Code section with a quick tip from Jesse Squires, along with your regular reminder that you should be using SwiftLint! 👍
Remember this article from a couple of weeks ago about creating your own "sketched" style app icon for a beta version? What if you didn't have to draw anything? What if you could get 90% of the way there by typing a character into a text box? Check out this new app from Canis does! Love it. ❤️
Building a Design System for iOS
Here's a brand new blog from Ram Shandilya, and it kicks off in style with a four-part (1, 2, 3, and 4) series on building a design system for iOS apps. The benefits of a design system in a team setting are clear, but individuals will benefit from doing this too. It's all about making clear decisions, once, and letting the clarity of those decisions make your app have a consistent look and feel.
Videos from App Builders 2020
By all accounts, last week's remote AppBuilders conference was a great success, and as the talks were all pre-recorded, they're already online if you missed the event itself. As I mentioned above, it was Global Accessibility Awareness Day yesterday, and there are three separate accessibility talks here from Lea Marolt Sonnenschein, John Fox, and Matthew Bischoff.
Developing Apps for iOS at Stanford
The first time I linked to the Stanford iOS course was back in Issue 16, back in 2011 when they updated the materials for iOS 5! 🦖 I'd love to know how many people have learned to write iOS apps with this course. It must be many thousands. This year's class just started, and it now teaches SwiftUI. 👍
Practical Server Side Swift
If you're fired up about Vapor after reading Tim's post above, and you find the official documentation for Vapor 4 a little... lacking (I'm assured it's being worked on!) then you could do a lot worse than pick up this book from Tibor Bödecs. It's bang up to date and covers the build of a full site from start to finish with Vapor 4.
For full disclosure, Tibor sent me a review copy of this book.
There are no featured job listings this week, but there are still plenty of non-featured new jobs being posted over at iOS Dev Jobs. Are you looking for a new job? You know what to do.
This is my favourite WWDC wishlist 😂
Last week's "one question" Swift Package Manager survey wasn't on the same scale as the full community survey, but it was a nice update on how people feel about the SPM. As promised, here are the raw results. Thanks for taking the time to fill in the survey!
There were also a couple of optional, free text questions, so let me summarise those too. The most significant technical complaints about the SPM were:
So, what about non-technical issues? Many people also felt that the lack of a "CocoaPods style" centralised repository of packages was a downside, and I very much agree! 😂 That said, it's not something that I ever see Apple taking on. They've always been ultra-cautious about recommending third-party code, and even though a centralised package list doesn't implicitly mean recommendation, I don't see them wanting to solve this problem.
However, by far the biggest issue facing the Swift Package Manager that came across loud and clear is that neither of the other dependency managers are broken, and it's a big job to change the dependency manager for a large project. Then, think about the fact that switching dependency managers doesn't necessarily come with any tangible benefits, and the time needed to do it is hard to justify.
I'm still confident SPM will become the dominant choice for managing dependencies in iOS apps at some point, but CocoaPods and Carthage are going to be with us for a very long time. 📦Dave Verwer