Hope you enjoy today's collection 🙌
Updating @State values
It's not safe to update
@State properties from any callbacks except those provided by the SwiftUI framework. Always use
View.onReceive(_:perform:) to react to external changes and update the view state. Below is the example of how to subscribe to
Disabling animation on a View
.animation(:_) modifier was deprecated in iOS 15, so now to disable animations we should use
.transaction(_:) modifier that lets us customise the transition between two states. The doc says: "Use this modifier to change or replace the animation used in a view."
forEach vs for
There are some things a
for loop can do that
forEach can't, and vice versa.
for offers a more fine-grained control flow, allowing to exit early with
break, as well as to iterate conditionally with
for ... where ... . On the other hand,
forEach allows to pass closures to it. In most cases though it simply comes down to personal taste!
reduce is nice sometimes.
On (unnecessary) optimization
The Hidden Costs of Your Dependencies
Ever had to argument why adding a third party dependency to the codebase does not come for free? Here's an amazing concise article summarizing all the different aspects:
Using a dependency isn’t always bad, but we should be intentional about how and when we use them and what the trade-offs are.
Alright, that’s it for today.
Did you enjoy this issue? Let me know by pressing the buttons below, so I can improve the newsletter.
Got feedback? Want to see more, or less of certain kinds of tips? I’d love to hear from you. Reply to this email or reach out on Twitter via @ios_code_review 🙌