Loading video...
Video Failed to Load
Have you ever created a SwiftUI binding using the Binding(get:set:) initializer? If so, you may want to reconsider. To understand why, check out our newest episode clip where we show how this initializer makes it difficult for SwiftUI to track where the binding came from.
21,720 views • 1 year ago •via X (Twitter)
9 Comments

For a high-quality version of this clip:

Are you searching for a simple way to deploy device certificates with #Intune? Check out SCEPman at

Really interesting, thank you! Never thought about this but it makes sense. This is another reason why SwiftUI should be open source—to make debugging issues like this easier.

This is great info! I never knew Binding(get:set:) is forbidden fruit, I'll need to reevaluate a lot of what Im doing. But... Won't you get further trouble if flag changes? Screenshot should be self-explanatory, lmk what you think.

Sorry, I'm not sure what you are demonstrating with the screenshot. The logs printed shouldn't be surprising. The first equality should be false because the data used to derive the key path has changed. And the second equality should be true because it's the exact same key path.

when do you recommend using subscript over a func?

If you need a key path, which is the case for deriving bindings, then you must use a subscript because only subscripts get key paths. Methods do not.

Does this also apply to Bindings created with that initializer that, for example, are computed var‘s on the View or some Observable object? Or only to those „ad-hoc“ ones inside a view body?

Yes, ideally you wouldn't use that initializer if possible. You may not be running into any of the possible problems right now, but there's always the chance in the future things could get a little whacky.
Related Videos
Sensitive content
The Binding prayer to protect yourself from demons 🙏
Saint Adaugoijele ✝️
55,567 views • 3 months ago


