Natalia Panferova

@natpanferova.bsky.social

Software Engineer | iOS | macOS | Swift | SwiftUI | Previously SwiftUI at Apple | Author of books for Swift developers: https://books.nilcoalescing.com

Alignment guides are a powerful but often underused part of SwiftUI's layout system. They let us describe relationships between views using meaningful points in their content, without frame measurements or fixed offsets. I wrote a post explaining them in detail: nilcoalescing.com/blog/Alignme...

Alignment guides in SwiftUI

Learn how alignment guides position views in SwiftUI, how to override a built-in guide, and how to define a custom alignment for views in nested containers.

nilcoalescing.com

🎨 𝑇ℎ𝑒 ℎ𝑖𝑑𝑑𝑒𝑛 𝑐𝑜𝑠𝑡 𝑜𝑓 𝑢𝑛𝑠𝑡𝑎𝑏𝑙𝑒 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 𝑒𝑛𝑣𝑖𝑟𝑜𝑛𝑚𝑒𝑛𝑡 𝑑𝑒𝑓𝑎𝑢𝑙𝑡𝑠 by Natalia Panferova (@natpanferova.bsky.social) A tiny SwiftUI default value can accidentally become a little invalidation machine, quietly re-rendering more than it should. #iOSDev #SwiftUI #Performance nilcoalescing.com/blog/Unstabl...

The hidden cost of unstable SwiftUI environment defaults

Learn why Xcode 27 shows a warning when an @Entry declaration creates a new class instance for every fallback access, how unstable environment defaults can cause unnecessary SwiftUI view updates, and…

nilcoalescing.com

📢 𝗜𝘀𝘀𝘂𝗲 𝟭𝟬𝟯 𝗶𝘀 𝗼𝘂𝘁! Featuring: 🔶 𝐴𝑑𝑣𝑎𝑛𝑐𝑒𝑑 𝑆𝑤𝑖𝑓𝑡 📊 𝐵𝑢𝑖𝑙𝑑 𝐴𝑔𝑒𝑛𝑡𝑖𝑐 𝑆𝑤𝑖𝑓𝑡 𝐴𝑝𝑝𝑠 𝐷𝑦𝑛𝑎𝑚𝑖𝑐 𝑃𝑟𝑜𝑓𝑖𝑙𝑒𝑠 📱 𝐹𝑟𝑒𝑒 𝑢𝑝 𝑋𝑐𝑜𝑑𝑒 𝑑𝑖𝑠𝑘 𝑠𝑝𝑎𝑐𝑒 𝑠𝑎𝑓𝑒𝑙𝑦 𝐴𝐼 𝐴𝑔𝑒𝑛𝑡 🎨 𝐻𝑖𝑑𝑑𝑒𝑛 𝑐𝑜𝑠𝑡 𝑢𝑛𝑠𝑡𝑎𝑏𝑙𝑒 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 𝑒𝑛𝑣 𝑑𝑒𝑓𝑎𝑢𝑙𝑡𝑠 🚀 𝑆𝑒𝑚𝑎𝑛𝑡𝑖𝑐 𝐴𝑐𝑐𝑒𝑠𝑠𝑖𝑏𝑖𝑙𝑖𝑡𝑦 💡 𝐴𝑛𝑎𝑡𝑜𝑚𝑦 𝑅𝑒𝑢𝑠𝑎𝑏𝑙𝑒 𝑉𝑖𝑒𝑤 🛠️ 𝑆𝑤𝑖𝑓𝑡𝑆𝑡𝑎𝑠ℎ 🧠 𝑆𝑡𝑎𝑟𝑙𝑖𝑛𝑔 #Swift #iOSDev

iOS Newsletter Issue 103

Hi folks!

ios-newsletter.snappmobile.io

🎨 𝐺𝑒𝑜𝑚𝑒𝑡𝑟𝑦, 𝐶𝑜𝑚𝑝𝑜𝑠𝑖𝑡𝑖𝑛𝑔 𝑎𝑛𝑑 𝐷𝑟𝑎𝑤𝑖𝑛𝑔 𝐺𝑟𝑜𝑢𝑝𝑠 𝑖𝑛 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 by Natalia Panferova (@natpanferova.bsky.social) Ever wondered why your SwiftUI animation looks like it's falling apart? It's usually a geometry or compositing boundary issue. #iOSDev #SwiftUI nilcoalescing.com/blog/Geometr...

Geometry, compositing and drawing groups in SwiftUI

Learn how SwiftUI's similarly named geometryGroup(), compositingGroup() and drawingGroup() modifiers affect distinct stages of animation and rendering, and when each is appropriate.

nilcoalescing.com

📢 𝗜𝘀𝘀𝘂𝗲 𝟭𝟬𝟮 𝗶𝘀 𝗼𝘂𝘁! Featuring: 🔶 𝑇𝑦𝑝𝑒𝑎𝑙𝑖𝑎𝑠 𝑈𝑠𝑎𝑔𝑒 𝑆𝑤𝑖𝑓𝑡 📊 𝐴𝑝𝑝𝑙𝑒'𝑠 30% 𝐿𝑎𝑢𝑛𝑐ℎ 𝐵𝑜𝑜𝑠𝑡 🧩 𝑀𝑎𝑠𝑡𝑒𝑟𝑖𝑛𝑔 𝑀𝑜𝑑𝑒𝑙 𝐿𝑎𝑦𝑒𝑟 🎨 𝐺𝑒𝑜𝑚𝑒𝑡𝑟𝑦, 𝐶𝑜𝑚𝑝𝑜𝑠𝑖𝑡𝑖𝑛𝑔 𝐷𝑟𝑎𝑤𝑖𝑛𝑔 📱 𝐵𝑢𝑖𝑙𝑑𝑖𝑛𝑔 𝐴𝑑𝑎𝑝𝑡𝑖𝑣𝑒 𝑁𝑜𝑛-𝑀𝑜𝑑𝑎𝑙 🚀 𝑆𝑤𝑖𝑓𝑡𝑈𝐼 𝑂𝑛𝑒 𝐺𝑟𝑎𝑝ℎ, 💡 𝑆𝑦𝑛𝑐𝑖𝑛𝑔 𝑆𝑤𝑖𝑓𝑡𝐷𝑎𝑡𝑎 𝐶𝑢𝑠𝑡𝑜𝑚 🛠️ 𝑇𝑟𝑎𝑛𝑠𝑐𝑟𝑖𝑏𝑒.𝑐𝑝𝑝 #Swift #iOSDev ios-newsletter.snappmobile.io/issues/2026-...

iOS Newsletter Issue 102

Hi again!

ios-newsletter.snappmobile.io

I’ve been wanting to explore and document SwiftUI’s blend modes for a while. I finally worked through all 21 of them, with visuals and practical examples showing how each one works and when it can be useful: nilcoalescing.com/blog/BlendMo... #iOSDev #SwiftUI

Blend modes in SwiftUI

Explore every SwiftUI blend mode through focused visuals and practical use cases, and learn how to control which views participate in each operation.

nilcoalescing.com

To prepare Strolly for app resizability in iOS 27, we wanted its non-modal detent sheets to adapt into side panels on wider displays. SwiftUI sheets don’t support that presentation, so we built our own panel API: nilcoalescing.com/blog/Buildin... #SwiftUI #iOSDev

Building adaptive non-modal panels in SwiftUI

Learn how to build a non-modal, detent-based sheet API in SwiftUI that adapts from a bottom panel in portrait to an edge-aligned panel in landscape.

nilcoalescing.com

📢 𝗜𝘀𝘀𝘂𝗲 𝟭𝟬𝟭 𝗶𝘀 𝗼𝘂𝘁! Featuring: 🔒 𝑇𝑎𝑠𝑘 𝑎𝑙𝑖𝑣𝑒 𝑑𝑢𝑟𝑎𝑡𝑖𝑜𝑛 🔍 𝑈𝑠𝑒𝑟 𝐷𝑖𝑎𝑔𝑛𝑜𝑠𝑡𝑖𝑐𝑠 𝑅𝑒𝑝𝑜𝑟𝑡𝑠 📱 𝑆ℎ𝑖𝑝𝑝𝑖𝑛𝑔 𝑤𝑖𝑡ℎ𝑜𝑢𝑡 𝑋𝑐𝑜𝑑𝑒 🛠️ 𝑆𝑝𝑒𝑐 𝐾𝑖𝑡 🎨 𝑊𝑊𝐷𝐶 26 𝑈𝑝𝑑𝑎𝑡𝑒 🚀 𝑃𝑜𝑤𝑒𝑟 𝑜𝑓 𝑃𝑟𝑒𝑣𝑖𝑒𝑤𝑠 💡 𝑅𝑜𝑡𝑎𝑡𝑖𝑛𝑔 𝐿𝑖𝑞𝑢𝑖𝑑 𝐺𝑙𝑎𝑠𝑠 ⚡ 𝐸𝑞𝑢𝑎𝑡𝑎𝑏𝑙𝑒 𝑝𝑟𝑜𝑝𝑒𝑟𝑡𝑖𝑒𝑠 @𝑂𝑏𝑠𝑒𝑟𝑣𝑎𝑏𝑙𝑒 #Swift #iOSDev ios-newsletter.snappmobile.io/issues/2026-...

iOS Newsletter Issue 101

Hi folks,

ios-newsletter.snappmobile.io

SwiftUI has three similarly named grouping modifiers: geometryGroup(), compositingGroup() and drawingGroup(). If, like me, you sometimes forget which one does what, I’ve just published a guide explaining how they differ and when to use each one: nilcoalescing.com/blog/Geometr... #iOSDev #SwiftUI

Geometry, compositing and drawing groups in SwiftUI

Learn how SwiftUI's similarly named geometryGroup(), compositingGroup() and drawingGroup() modifiers affect distinct stages of animation and rendering, and when each is appropriate.

nilcoalescing.com

🎨 𝐶𝑢𝑠𝑡𝑜𝑚 𝑏𝑖𝑛𝑑𝑖𝑛𝑔𝑠 𝑖𝑛 𝑆𝑤𝑖𝑓𝑡𝑈𝐼: 𝑐𝑙𝑜𝑠𝑢𝑟𝑒𝑠 𝑣𝑠 𝑠𝑢𝑏𝑠𝑐𝑟𝑖𝑝𝑡𝑠 by Natalia Panferova (@natpanferova.bsky.social) We've all used 𝐵𝑖𝑛𝑑𝑖𝑛𝑔(𝑔𝑒𝑡:𝑠𝑒𝑡:) and wondered why our views are re-rendering for no reason. Turns out, creating these closures in the body is a performance trap. #iOSDev #SwiftUI #Performance

Custom bindings in SwiftUI: closures vs subscripts

Learn how closure-based bindings can affect SwiftUI view updates, and how labeled subscripts give the framework a more stable way to track changes.

nilcoalescing.com