Advertisement

Here are 8 tips to design a great paywall 🤑
For subscription apps, the paywall is very important because it’s basically the salesperson of the app.
That’s why such apps spend a lot of time trying to optimize their paywall as best as possible: the better a paywall is, the more revenue it generates.
So let’s go over 8 tips that will help you design a great paywall 🚀

Are optional closures escaping or not? 🤨
Have a look at this function: func f(_ closure: (() -> Void)? = nil)
.
Would you say that the optional closure is escaping or not?

Hidden feature: initializers

Have you ever used Multiple Cursors in Xcode? 🤨
Last week I’ve told you about the advanced features of breakpoints in Xcode, and this week I want us to stay on the topic of little-know features in Xcode!
This time we’re going to talk about multiple cursors and how they enable us to quickly edit repetitive pieces of our code.

Bad practice: not using UIAction

Discover the advanced features of Xcode’s breakpoints 🐛
Nobody wants to spend their day adding breakpoints here and there, to try and piece together the reason why something is not working as it should.
So I want to walk you through the advanced features of breakpoints in Xcode: this way the next time a sneaky bug comes along you’ll be well equipped to track it down fast 😌

Hidden feature: final

How to write tests that detect memory leaks 💦
Memory leaks can cause a lot of damage and they are often very hard to fix 😔
That’s why I want to show you a nice little trick that will let you write tests that can detect memory leaks!

Bad practice: not using multiline strings

Hidden feature: enum

Here’s a great use case for Parameter Packs 🤌
Have you heard of a new feature of Swift called Parameter Packs?
I want to show you a use case where they really shine!

This small mistake will crash your SwiftUI app 🧨
SwiftUI feels like a pretty safe approach to build your app’s UI, doesn’t it?
But did you know that a small syntax error has the potential to completely crash your entire app?

Bad practice: not using Phantom Types

Here are 8 tips to optimize your iOS app 📱
Last week I’ve released a video that I was really excited about, because it focused on a topic that I had never really covered on my channel until then: How to optimize the performance of iOS apps!
The video was received very positively, so I figured that it could be worth it if for this week’s email I wrote an outline of all the tricks!

Here’s how you can learn Swift Concurrency in 2 hours 👩🏽🎓👨🏻🎓
During the summer, I shared with you my training courses to learn SwiftUI or Combine in a short amount of time.
I felt that the next logical topic to address was Swift Concurrency, because in the two years since its release, it has really become the standard for asynchronous code in iOS apps.
But this time I added a twist to the formula!

Hidden feature: if and switch

Some APIs are more dangerous than they seem 🫢
Last week I ran a poll on Twitter and LinkedIn.
Out of almost 500 votes, a short majority was thinking that calling the method .removeLast() on an empty Array would return nil.
But of course, I asked that question because there is definitely something more to it than what seems to be the straightforward answer 🙃

Bad practice: not using throwing tests

Here are 3 Swift Macros you can start using today 🤌
That’s it, Xcode 15 Release Candidate has been available since the middle of last week!
This means that we can now start using the new features of Swift 5.9 in production, including Swift Macros 🥳
So here’s a list of 3 Macros from the community that you can start using today!
