[{"channel_id":1146122358,"post_id":6402,"date":1784306700000,"forwards":"2","views":"401","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/fatbobman.com\/en\/posts\/debugging-notes-on-two-swiftui-animation-bugs\/\">https:\/\/fatbobman.com\/en\/posts\/debugging-notes-on-two-swiftui-animation-bugs\/<\/a>","text_length":77,"media":{"root":"\/00b\/AhkAAHZwUEQAAAAAmtaCi4MwyX8","webpage":{"url":"https:\/\/fatbobman.com\/en\/posts\/debugging-notes-on-two-swiftui-animation-bugs","type":"photo","title":"Debugging Notes on Two SwiftUI Animation Bugs","site_name":"fatbobman.com","display_url":"fatbobman.com\/en\/posts\/debugging-notes-on-two-swiftui-animation-bugs","description":"How I tracked down two SwiftUI animation bugs: an iOS 27 parent-view rebuild that breaks explicit animation, and a ternary-vs-if\/else Image glitch in List.","thumbs":{"m":{"w":320,"h":168,"hash":"EzTGfo8WOo3Cfed0kulLeQ&ts=1789323023"},"x":{"w":800,"h":419,"hash":"iXuIHUxuMUxuUZabu08VUA&ts=1789323023"},"y":{"w":1200,"h":628,"hash":"kPLiNJgbgk8RZ1dBEEXJ6Q&ts=1789323023"},"i":{"bytes":"AVACg|DPA9ifpR9KdG+w\/wAX4HFSefkAEyYH+1\/9au1tmRDRg1I0pONrP68nvTRI4xhzx056UagNwfSilYseGJ\/GimrgJ0ozRRQAUUUUxDpJGkbc5yaKKKSGf\/\/Z"}}}}},{"channel_id":1146122358,"post_id":6401,"date":1784306697000,"views":"68","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/antongubarenko.substack.com\/p\/ios-27-scene-close-confirmation\">https:\/\/antongubarenko.substack.com\/p\/ios-27-scene-close-confirmation<\/a>","text_length":69,"media":{"root":"\/00c\/ARkAAHZwUEQAAAAAw5JcFqR4Za0","webpage":{"url":"https:\/\/antongubarenko.substack.com\/p\/ios-27-scene-close-confirmation","type":"photo","title":"iOS 27: Scene Close Confirmation","site_name":"Substack","display_url":"antongubarenko.substack.com\/p\/ios-27-scene-close-confirmation","description":"Prevent and handle scene close","thumbs":{"m":{"w":320,"h":160,"hash":"wRnEkKiipl1pHFWv9kzctw&ts=1789323023"},"x":{"w":800,"h":400,"hash":"VVmXdfFIWbtI6URUeVCnVg&ts=1789323023"},"y":{"w":1280,"h":640,"hash":"-R6IhsBWWvBuBzIJGyhghQ&ts=1789323023"},"w":{"w":1600,"h":800,"hash":"PqhjXKcrG92E1O5GbDlwTQ&ts=1789323023"},"i":{"bytes":"AUACg|C7RTPMFHmLQA+jNRmQZo8wUwHE8iiozIMiimIqF2Hek8xqKKkYeY1J5jUUUwAOSaKKKYj\/2Q=="}}}}},{"channel_id":1146122358,"post_id":6400,"date":1784306694000,"forwards":"1","views":"903","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/antongubarenko.substack.com\/p\/ios27-cadisplaylink-for-uiwindowscene\">https:\/\/antongubarenko.substack.com\/p\/ios27-cadisplaylink-for-uiwindowscene<\/a>","text_length":75,"media":{"root":"\/00b\/ABkAAHZwUEQAAAAAmtaCi4MwyX8","webpage":{"url":"https:\/\/antongubarenko.substack.com\/p\/ios27-cadisplaylink-for-uiwindowscene","type":"photo","title":"iOS27: CADisplayLink for UIWindowScene","site_name":"Substack","display_url":"antongubarenko.substack.com\/p\/ios27-cadisplaylink-for-uiwindowscene","description":"Track refresh of an each Scene","thumbs":{"m":{"w":320,"h":160,"hash":"Xjs7PNFPKP62jv2LY2DwHA&ts=1789323023"},"x":{"w":800,"h":400,"hash":"D9ybABRxtOPIe-fVfx9Scg&ts=1789323023"},"y":{"w":1280,"h":640,"hash":"LHyVedJ0-XCyxtjRbAoOMA&ts=1789323023"},"w":{"w":1600,"h":800,"hash":"yIryZO4RhE2EMOtapU83Wg&ts=1789323023"},"i":{"bytes":"AUACg|Ce+laG1Z0OG4AP41mrqdyvUq31FWNUlDxrGpGc5IzWfwOHHTkY70xMtjU5B9+MfgcU4amD1UiqWfMHzNgg8\/Sg+Ww4OzHY96YmrmnFeB+R3orPgfBA9KKtJMzaaItxd8sck80Ekxj2JoorM1GZooooAkTv9KKKKpEs\/9k="}}}}},{"channel_id":1146122358,"post_id":6399,"date":1784306691000,"views":"50","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/azamsharp.com\/2026\/07\/16\/syncing-swiftdata-with-a-custom-backend-using-historyobserver.html\">https:\/\/azamsharp.com\/2026\/07\/16\/syncing-swiftdata-with-a-custom-backend-using-historyobserver.html<\/a>","text_length":99,"media":{"root":null,"webpage":{"url":"https:\/\/azamsharp.com\/2026\/07\/16\/syncing-swiftdata-with-a-custom-backend-using-historyobserver.html","type":"article","title":"Syncing Swiftdata With A Custom Backend Using Historyobserver","site_name":"AzamSharp","display_url":"azamsharp.com\/2026\/07\/16\/syncing-swiftdata-with-a-custom-backend-using-historyobserver.html","author":"Mohammad Azam"}}},{"channel_id":1146122358,"post_id":6398,"date":1784306687000,"views":"216","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/artemnovichkov.com\/blog\/building-a-custom-dynamic-profile-modifier-in-foundation-models\">https:\/\/artemnovichkov.com\/blog\/building-a-custom-dynamic-profile-modifier-in-foundation-models<\/a>","text_length":95,"media":{"root":"\/00e\/_hgAAHZwUEQAAAAANFmsdhmFulw","webpage":{"url":"https:\/\/artemnovichkov.com\/blog\/building-a-custom-dynamic-profile-modifier-in-foundation-models","type":"photo","title":"Building a custom DynamicProfileModifier in Foundation Models","site_name":"Artem Novichkov","display_url":"artemnovichkov.com\/blog\/building-a-custom-dynamic-profile-modifier-in-foundation-models","description":"Build a reusable economy mode modifier that switches a session on device, caps responses, and trims history","thumbs":{"m":{"w":320,"h":197,"hash":"JmDLvl2jGYUHB0Y5tbiBAQ&ts=1789323023"},"x":{"w":800,"h":493,"hash":"LCx80c6GRgb4_2TrdZ1aqg&ts=1789323023"},"y":{"w":1200,"h":740,"hash":"4vBbdUmB-T6sJCOgyhET9Q&ts=1789323023"},"i":{"bytes":"AYACg|C2RTSKm280m0nr0rJSOjmISKTYSMhSfwqQgY96cBwv+e9axkU5FeinsOTRWikXcs00iiivPTOdDSKTkdCRRRWqZaGEUUUVomUf\/9k="}}}}},{"channel_id":1146122358,"post_id":6397,"date":1784306684000,"views":"48","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/livsycode.com\/swift\/continuation-vs-checkedcontinuation-vs-unsafecontinuation-in-swift\/\">https:\/\/livsycode.com\/swift\/continuation-vs-checkedcontinuation-vs-unsafecontinuation-in-swift\/<\/a>","text_length":95,"media":{"root":"\/00b\/_RgAAHZwUEQAAAAAmtaCi4MwyX8","webpage":{"url":"https:\/\/livsycode.com\/swift\/continuation-vs-checkedcontinuation-vs-unsafecontinuation-in-swift","type":"photo","title":"Continuation vs CheckedContinuation vs UnsafeContinuation in Swift \u2192 Livsy Code","site_name":"Livsy Code \u2192 Learn Swift the smart way","display_url":"livsycode.com\/swift\/continuation-vs-checkedcontinuation-vs-unsafecontinuation-in-swift","description":"Greetings, traveler! Continuations are one of those Swift Concurrency APIs that most app developers do not touch every day, but they become important as soon as old callback-based code has to be wrapped into async\/await. A typical example looks like this: func loadUser() async throws -> User { try await withCheckedThrowingContinuation { continuation in userService.loadUser","author":"Livsy","thumbs":{"m":{"w":320,"h":160,"hash":"rH1OoCzeolOPzCvh0Z3l7w&ts=1789323023"},"x":{"w":800,"h":400,"hash":"Rq_U8X1VkToxWgadlGADcw&ts=1789323023"},"y":{"w":1000,"h":500,"hash":"zHROczWCCdBWt4NyfcFeIg&ts=1789323023"},"i":{"bytes":"AUACg|DLooqZZgIwnlocdz+P+NMCGip\/tChiRBGARgj8aR5w0e0Qxr6EdRQBDRRRQAUUUUAFFFFABRRRQB\/\/2Q=="}}}}},{"channel_id":1146122358,"post_id":6396,"date":1784306680000,"forwards":"1","views":"533","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/www.wesleymatlock.com\/merging-two-live-streams-taskgroup-llm-benchmark\/\">https:\/\/www.wesleymatlock.com\/merging-two-live-streams-taskgroup-llm-benchmark\/<\/a>","text_length":79,"media":{"root":"\/013\/_BgAAHZwUEQAAAAAc5cwoYwpEHo","webpage":{"url":"https:\/\/wesleymatlock.com\/merging-two-live-streams-taskgroup-llm-benchmark","type":"photo","title":"One TaskGroup, Two Live Streams: a Swift 6 LLM Benchmark","site_name":"Wesley Matlock","display_url":"wesleymatlock.com\/merging-two-live-streams-taskgroup-llm-benchmark","description":"How ModelBench merges live inference and telemetry streams into one ordered AsyncThrowingStream using a single Swift 6 actor and withThrowingTaskGroup.","author":"Wesley Matlock","thumbs":{"m":{"w":320,"h":183,"hash":"ZA9Af9TM24n-UCe_9apyEQ&ts=1789323023"},"x":{"w":800,"h":457,"hash":"hYwJNOUUz7IBmiupl97NdQ&ts=1789323023"},"y":{"w":1280,"h":731,"hash":"Bcj6R2O1QWuZMbM4q2JdkQ&ts=1789323023"},"w":{"w":1659,"h":948,"hash":"bicdRgMvyzTo8ADEp7kf_w&ts=1789323023"},"i":{"bytes":"AXACg|ChGD2Gasxj5elVI92eKtB5FjJNSyidBk4FWHYRpsHWqMc7g5yc1I07suRx60gJAc0VUMz9yaKqxNxiFV65qQvG4wUJHuaKKRRWmKhvlAX6UsZzn6UUUPYS3GEmiiiqEf\/Z"}}}}},{"channel_id":1146122358,"post_id":6395,"date":1784306676000,"forwards":"1","views":"456","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/www.sagarunagar.com\/blog\/swiftui-toolbar-overflow-menu-api\/\">https:\/\/www.sagarunagar.com\/blog\/swiftui-toolbar-overflow-menu-api\/<\/a>","text_length":67,"media":{"root":"\/012\/-xgAAHZwUEQAAAAAUx6IaOSGjlM","webpage":{"url":"https:\/\/sagarunagar.com\/blog\/swiftui-toolbar-overflow-menu-api","type":"photo","title":"Mastering SwiftUI Toolbar Overflow Menus in iOS 27","site_name":"Sagarunagar","display_url":"sagarunagar.com\/blog\/swiftui-toolbar-overflow-menu-api","description":"Learn how to use SwiftUI's new ToolbarOverflowMenu, visibilityPriority(_:), and toolbar placements introduced at WWDC26 to build adaptive toolbars that scale gracefully across iPhone, iPad, Mac, and visionOS.","author":"Sagar Unagar","thumbs":{"m":{"w":320,"h":168,"hash":"zV290d2eEgdk_cbe73Ggow&ts=1789323023"},"x":{"w":800,"h":420,"hash":"m-5MqsaVd3z4qGtEyyDJJg&ts=1789323023"},"y":{"w":1200,"h":630,"hash":"OKj6ELRCH2DtJu1snuEf8g&ts=1789323023"},"i":{"bytes":"AVACg|AopyNtJ5x+FP8AMHqfyFddzEioqXzB2Y\/kKBJzyx\/IUXAiopztuI5NFADce9GcdqKKYC\/gKTPtRRQAUUUUAf\/Z"}}}}},{"channel_id":1146122358,"post_id":6394,"date":1784306673000,"views":"444","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/www.sagarunagar.com\/blog\/swiftui-crossfade-navigation-transition\/\">https:\/\/www.sagarunagar.com\/blog\/swiftui-crossfade-navigation-transition\/<\/a>","text_length":73,"media":{"root":"\/00b\/-hgAAHZwUEQAAAAAmtaCi4MwyX8","webpage":{"url":"https:\/\/sagarunagar.com\/blog\/swiftui-crossfade-navigation-transition","type":"photo","title":"SwiftUI .crossFade Navigation Transition in iOS 27","site_name":"Sagarunagar","display_url":"sagarunagar.com\/blog\/swiftui-crossfade-navigation-transition","description":"Learn how to use SwiftUI's new NavigationTransition.crossFade introduced in iOS 27 at WWDC 2026. Explore examples, use cases, and how it compares with the zoom transition.","author":"Sagar Unagar","thumbs":{"m":{"w":320,"h":168,"hash":"PmVKUIH8aZTiEwIdjxpbog&ts=1789323023"},"x":{"w":800,"h":420,"hash":"ZwgeLQu8wCsTnhOHf5zDRw&ts=1789323023"},"y":{"w":1200,"h":630,"hash":"pA5dWaMhABJEkkO-47ALkQ&ts=1789323023"},"i":{"bytes":"AVACg|ApGdFOGYA+5p4kYDANNkjjlbe5bdjHAFdTb6GKsN82P\/nov506m+RFnq35Cpg4VQoJwBxkCknLqhuxHRTjIzDBP6UVeohuPejPtRRQAv4Ckz7UUUAFFFFAH\/\/Z"}}}}},{"channel_id":1146122358,"post_id":6393,"date":1784306669000,"views":"450","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/nilcoalescing.com\/blog\/UnstableDefaultEnvironmentValuesInSwiftUI\/\">https:\/\/nilcoalescing.com\/blog\/UnstableDefaultEnvironmentValuesInSwiftUI\/<\/a>","text_length":73,"media":{"root":"\/00d\/-RgAAHZwUEQAAAAAe04O8xh7czk","webpage":{"url":"https:\/\/nilcoalescing.com\/blog\/UnstableDefaultEnvironmentValuesInSwiftUI","type":"photo","title":"The hidden cost of unstable SwiftUI environment defaults","site_name":"Nil Coalescing","display_url":"nilcoalescing.com\/blog\/UnstableDefaultEnvironmentValuesInSwiftUI","description":"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 how to make them stable.","thumbs":{"m":{"w":320,"h":180,"hash":"zAZvUdOunNNAl3gHuC2t6g&ts=1789323023"},"x":{"w":800,"h":450,"hash":"B-rud9v_njBKOfTP5Gh0VQ&ts=1789323023"},"y":{"w":1280,"h":720,"hash":"hxoD7luCAmLpRZxMnlrEdw&ts=1789323023"},"i":{"bytes":"AXACg|DKHvTvl96QUZ9hQAcetJQaKACiiigBQcUu72oooAN3tSbj6CiigBKKKKAP\/9k="}}}}},{"channel_id":1146122358,"post_id":6392,"date":1784306666000,"views":"468","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/cuteios.dev\/2026\/07\/14\/previews-and-mcp\/\">https:\/\/cuteios.dev\/2026\/07\/14\/previews-and-mcp\/<\/a>","text_length":48,"media":{"root":null,"webpage":{"url":"https:\/\/cuteios.dev\/2026\/07\/14\/previews-and-mcp","type":"article","title":"Previews and MCP | Amy is a cute iOS Developer","site_name":"cuteios.dev","display_url":"cuteios.dev\/2026\/07\/14\/previews-and-mcp","description":"Talking to Xcode via MCP and fetching a Preview"}}},{"channel_id":1146122358,"post_id":6391,"date":1784306662000,"forwards":"2","views":"612","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/alexanderweiss.dev\/blog\/2026-07-12-the-anatomy-of-a-reusable-swiftui-view\">https:\/\/alexanderweiss.dev\/blog\/2026-07-12-the-anatomy-of-a-reusable-swiftui-view<\/a>","text_length":81,"media":{"root":"\/00c\/9xgAAHZwUEQAAAAAw5JcFqR4Za0","webpage":{"url":"https:\/\/alexanderweiss.dev\/blog\/2026-07-12-the-anatomy-of-a-reusable-swiftui-view","type":"photo","title":"The Anatomy of a Reusable SwiftUI View","site_name":"alexanderweiss.dev","display_url":"alexanderweiss.dev\/blog\/2026-07-12-the-anatomy-of-a-reusable-swiftui-view","description":"Whenever I build a custom reusable SwiftUI view as part of a larger application's design system, I follow the same principle: design its API to be as close as\u2026","thumbs":{"m":{"w":320,"h":168,"hash":"9_pNzH-k_H130Bu9f8zPCw&ts=1789323023"},"x":{"w":800,"h":420,"hash":"HFqXrO_ySGhm1WrBzstJAg&ts=1789323023"},"y":{"w":1200,"h":630,"hash":"TzyIC7oc1VRjO_loc201Hg&ts=1789323023"},"i":{"bytes":"AVACg|DUbdng8Uoz6D86a+7fwD+YpMSf7X5j\/CkMlHSjNM2nHLNyPbimkH++36UASj60UgooEOooopgIabiiikMUUUUUAf\/Z"}}}}},{"channel_id":1146122358,"post_id":6390,"date":1784306657000,"views":"63","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/blog.eidinger.info\/all-new-frameworks-presented-at-wwdc26\">https:\/\/blog.eidinger.info\/all-new-frameworks-presented-at-wwdc26<\/a>","text_length":65,"media":{"root":"\/013\/9hgAAHZwUEQAAAAAc5cwoYwpEHo","webpage":{"url":"https:\/\/blog.eidinger.info\/all-new-frameworks-presented-at-wwdc26","type":"photo","title":"All new frameworks presented at WWDC26","site_name":"Dev blog post potpourri by senior software engineer Marco Eidinger","display_url":"blog.eidinger.info\/all-new-frameworks-presented-at-wwdc26","description":"WWDC26 kicked off on June 8, 2026. The information in this article reflects the information published by Apple on that date.\nThere are 14 new frameworks.\n\n\n\nName\nDescription\n\n\n\nAccessoryAccess\nManage","author":"https:\/\/blog.eidinger.info\/@MarcoEidinger","thumbs":{"m":{"w":320,"h":234,"hash":"_soyOulzFKJw1oDr6whuMg&ts=1789323023"},"x":{"w":800,"h":584,"hash":"mAPLihvZFJkr-TQXGYeXjw&ts=1789323023"},"y":{"w":1280,"h":935,"hash":"eEJMubN46hUFdr9DhLoDSg&ts=1789323023"},"w":{"w":1368,"h":999,"hash":"0h7xQKfFMZEyDcCx3AOicg&ts=1789323023"},"i":{"bytes":"AdACg|DXxnufzpQMdzTSTu4NR7zjr3oFcn\/GioS5AbkcUbzkjPagZNRUCuSU5HNFAh5JDdeOeKjzkenNTFckGmmPpz3oAaSAD7UZ5xT\/AC+vJpPL+bOaB3Y1WyV460U4Jgrz0ooEf\/\/Z"}}}}},{"channel_id":1146122358,"post_id":6389,"date":1781882856000,"forwards":"1","views":"81","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/fatbobman.com\/en\/posts\/from-size-class-to-available-space\/\">https:\/\/fatbobman.com\/en\/posts\/from-size-class-to-available-space\/<\/a>","text_length":66,"media":{"root":"\/00b\/9RgAAHZwUEQAAAAAmtaCi4MwyX8","webpage":{"url":"https:\/\/fatbobman.com\/en\/posts\/from-size-class-to-available-space","type":"photo","title":"From Size Class to Available Space - Is horizontalSizeClass Still Reliable?","site_name":"fatbobman.com","display_url":"fatbobman.com\/en\/posts\/from-size-class-to-available-space","description":"WWDC 26 makes iPhone apps resizable. Learn why horizontalSizeClass is no longer a width sensor and how SwiftUI\/UIKit layout is shifting to available space.","thumbs":{"m":{"w":320,"h":168,"hash":"EPTyY45y3eOp625KBIhifA&ts=1789323023"},"x":{"w":800,"h":419,"hash":"bORXphq6dFoq4nhBRfqHUw&ts=1789323023"},"y":{"w":1200,"h":628,"hash":"jqiuiQx1V3FyNbSW25LjIg&ts=1789323023"},"i":{"bytes":"AVACg|DPHuDRSo23+9+BxTvN\/wB\/P+\/Xa2zIZRUnm46b\/wDvul87n\/lp\/wB9\/wD1qLvsBFRQ3XoR9aKpMQdKM0UUhhRRRTEOkkaRtznJooopIZ\/\/2Q=="}}}}},{"channel_id":1146122358,"post_id":6388,"date":1781882853000,"forwards":"1","views":"77","text":"<a target=\"_blank\" rel=\"noreferrer nofollow\" href=\"https:\/\/fatbobman.com\/en\/posts\/core-data-observation-freer-mental-model\/\">https:\/\/fatbobman.com\/en\/posts\/core-data-observation-freer-mental-model\/<\/a>","text_length":72,"media":{"root":"\/006\/9BgAAHZwUEQAAAAAQqKf9A92ejQ","webpage":{"url":"https:\/\/fatbobman.com\/en\/posts\/core-data-observation-freer-mental-model","type":"photo","title":"Core Data + Observation - From Property-Level Reactivity to a Freer Mental Model","site_name":"fatbobman.com","display_url":"fatbobman.com\/en\/posts\/core-data-observation-freer-mental-model","description":"Bring SwiftData-like Observation to Core Data with CDE. Discover how to achieve property-level tracking in SwiftUI and solve key engineering challenges.","thumbs":{"m":{"w":320,"h":168,"hash":"v7GuWsYt5F6I6W0FgKeEJA&ts=1789323023"},"x":{"w":800,"h":419,"hash":"px0OWfjAiU-D3JRyA_TDIA&ts=1789323023"},"y":{"w":1200,"h":628,"hash":"-mHx-3TkD0Chd2RqfB7N_A&ts=1789323023"},"i":{"bytes":"AVACg|CgAT\/CT9KNrZ4U\/lQrYHQ\/nS7xnO0\/nXbqZCbW\/un8qNjf3T+VLv8AY\/nRvHHB\/Oi7AaQR1BFFK5zxgj6mimrgJ0ozRRQAUUUUxDpJGkbc5yaKKKSGf\/\/Z"}}}}}]