What I am working on
Make It So - Again!
This week, I started working on a complete rewrite of MakeItSo, a replica of Apple’s Reminder app.
The idea of this app is to explore if it is possible to write an entire app entirely in SwiftUI and Firebase. As I work on the implementation, you can follow along on this Twitter thread, where I will post any interesting bugs and issues I run into. And each week in this newsletter I will focus on one topic and write about it in more detail than is possible in a tweet.
The source code for the app will be available in this GitHub repository, and once I finish the implementation, I will run a video series on the Firebase channel on YouTube to walk you through the entire process of designing and implementing the app, including discussions about the individual SwiftUI and Firebase features.
So - follow along on Twitter, this newsletter, the GitHub repo, or the Firebase YouTube channel (or all of them)!
Firebase
Firebase Summit
Firebase Summit is taking place on November 10th, and you can still register online!
For each week, we’ve put together a pathway that focuses on a particular feature or product area, and this week is all about engaging users with Firebase. Check out the pathway here, or jump directly to the article my colleague Charlotte Liang from the Firebase Messaging team and I wrote about getting better insight into push notification delivery!
Firebase Release Notes
Oh, and also - next week is community week, with some great contributions from across the Firebase community - stay tuned! If you want to stay on top of all the cool new features we’re launching all of the time, there is no better place than Firebase Release Notes by none other than Frank van Puffelen (or just Puf). This week, we celebrated the one year anniversary of the show, and you get the gifts! To find out how to win a Firebase T-shirt, watch this episode.
Swift
async/await
The Swift team has outdone themselves and shipped support for back-deployment of Swift Concurrency (i.e. async/await, actors, global actors, structured concurrency, and the task API) for apps that run on macOS 10.15, iOS 13, tvOS 13, and watchOS 6 or newer. This is available in Xcode 13.2 (see the release notes).
This means there are no more excuses for not getting your feet wet with this new way of writing asynchronous code. If you’re just getting started, check out my quick guide to all the relevant WWDC sessions.
The development team is looking for feedback - so give this a try, and let them know if you run into any issues. Here’s Doug Gregor with more details
SwiftUI
A better AsyncImage with cache in SwiftUI
On a related note, if you’ve got excited about AsyncImage when you first saw it in Apple’s What’s New in SwiftUI WWDC session, but then were disappointed to discover it doesn’t actually cache images, fret not, @pitt500 has you covered. In this video, he recreates AsyncImage, but with a proper cache. Great work, I’ll definitely use this in my apps!
A custom operator for adopting dark mode in your apps
Another issue you will run into when building SwiftUI application is supporting different colours for dark mode and light mode. Now, you can definitely define colour assets for different colour schemes in the asset catalog for your app, but what if you want to specify a colour programmatically? Antoine has a nice custom operator which makes this super easy and really straightforward:
Productivity
The only benchmark that matters
The new M1 Pro/Max MacBooks have started shipping, and people all over the internet shared their first impressions - and ran some benchmarks. Paul Stamatiou posted the only benchmark that matters: extracting Xcode!
Now, once you get a new machine, you’ll have to transfer all of your data. Seems like a straightforward thing to do, no? Mikaela asked how people transfer their files, and the replies offer a nice insight into how people organise their files. Well worth a read, you might get some inspiration:
Simulator feeling sluggish? Try this.
If you didn’t get a new machine, you might be able to improve the performance of the iOS Simulator nonetheless. Curtis Herbert points us to a thread on the Apple forums that suggests turning off Spotlight on the Simulator might help make Xcode feel less sluggish.
Design
Apple Design Resources
Apple have shipped updated design resources for iOS 15, including SF Symbols 3. Check out their design resources page.
IconKitchen - Cook up app icons for any platform!
Roman Nurik has cooked up a tool for creating icons for any platform. This runs on the web, so no need to download and install an app. Check it out on Product Hunt.
Device Frames
And here is yet another tool for creating beautiful device mock-ups. What’s really cool about this one: you can add several devices to the same scene, and freely arrange them. Pretty powerful, and runs in the browser as well.
Podcasts
Business Movers
Business Movers by Lindsay Graham is another fantastic podcast series that explores the triumphs, failures, and ideas of well-known companies and founders such as Disney, Steve Jobs, Starbucks, DeLorean, and more. Really well narrated and gripping, this is an insta-listen for me once a new episode drops.
Fun stuff
Magic Keyboards have a real world UISwitch
I’ve owned Magic Keyboards, a Magic Trackpad, and Magic Mice for several years now, but this never occurred to me - you?
Comment
Hello everyone!
This week, I’ve got a couple of exciting posts for you: Apple has made async/await available for iOS version 13 and up, the first M1 Pro/Max MacBooks have been sighted in the wild (and people are raving about their performance), the Firebase team is shipping more content in the ramp down to Firebase Summit, and - I’ve started working on a new content series about SwiftUI and Firebase!
As always, I am keen to hear your feedback, so if you’ve got anything you’d like to share with me, just hit that reply button and let me know! Don’t be shy - I love hearing from you!
Thanks for reading,
Peter
P.S. if you’d like to say thanks beyond subscribing or sharing this newsletter with a friend, you can now send me a coffee through the internet.