41554 blogs · [ { "id": "01a0d15c-5606-7017-be48-ee614a60296f", "title": "Prepare toolbar items for a vertical bar", "url": "https://sarunw.com/posts/prepare-toolbar-items-for-a-vertical-bar/", "published_at": "2026-09-23T00:00:00+00:00" }, { "id": "01a0d15c-5607-71d9-9d86-a287c5a189ce", "title": "Opt in to vertical bars on iPhone Duo", "url": "https://sarunw.com/posts/opt-in-to-vertical-bars-on-iphone-duo/", "published_at": "2026-09-22T00:00:00+00:00" }, { "id": "01a0d15c-5607-71d9-9d86-a287c65acb61", "title": "Build Siri experiences across apps, Part 2: Content Transfer", "url": "https://sarunw.com/posts/build-siri-experiences-across-apps-part-2-content-transfer/", "published_at": "2026-09-21T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308c105b71", "title": "Build Siri experiences across apps, Part 1: Onscreen Awareness", "url": "https://sarunw.com/posts/build-siri-experiences-across-apps-part-1-onscreen-awareness/", "published_at": "2026-09-20T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308cab6583", "title": "How native SwiftUI controls look different in iOS 26", "url": "https://sarunw.com/posts/swiftui-native-controls-ios-26/", "published_at": "2026-09-19T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308d377390", "title": "SwiftUI Liquid Glass - Regular vs Clear", "url": "https://sarunw.com/posts/glass-effect-regular-vs-clear/", "published_at": "2026-09-18T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308db0e66b", "title": "The new JSON project format in Xcode 27.2", "url": "https://sarunw.com/posts/xcode-json-project-format-xcproj/", "published_at": "2026-09-17T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308e8bf371", "title": "Build intelligent Siri experiences, Part 2: Actions", "url": "https://sarunw.com/posts/build-intelligent-siri-experiences-part-2-actions/", "published_at": "2026-09-17T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308ec1ef35", "title": "Build intelligent Siri experiences, Part 1: App Entities", "url": "https://sarunw.com/posts/build-intelligent-siri-experiences-with-app-schemas/", "published_at": "2026-09-16T00:00:00+00:00" }, { "id": "01a0bdfc-b17b-7246-a6a8-29308f3b2a7e", "title": "Sheets and fold avoidance on iPhone Duo", "url": "https://sarunw.com/posts/sheets-and-fold-avoidance-on-iphone-duo/", "published_at": "2026-09-15T00:00:00+00:00" }, { "id": "01a09711-b1ed-7026-a0ea-b875768d49a7", "title": "Adapting controls for iPhone Duo", "url": "https://sarunw.com/posts/adapting-controls-for-iphone-duo/", "published_at": "2026-09-13T00:00:00+00:00" }, { "id": "01a09541-bb2a-73a7-a6b1-d02104f2e7d4", "title": "How to export Xcode agent skills with xcrun", "url": "https://sarunw.com/posts/export-xcode-agent-skills/", "published_at": "2026-09-12T00:00:00+00:00" }, { "id": "01a09541-bb2a-73a7-a6b1-d021055eb711", "title": "Adapting your app for iPhone Duo", "url": "https://sarunw.com/posts/adapting-your-app-for-iphone-duo/", "published_at": "2026-09-12T00:00:00+00:00" }, { "id": "01a08ce3-8ff0-70da-bb2b-c8efc0b9b32f", "title": "iPhone Duo design principles", "url": "https://sarunw.com/posts/design-for-iphone-duo/", "published_at": "2026-09-11T00:00:00+00:00" }, { "id": "01a09541-bb2a-73a7-a6b1-d021068cf462", "title": "Backward compatibility on iPhone Duo", "url": "https://sarunw.com/posts/backward-compatibility-on-iphone-duo/", "published_at": "2026-09-11T00:00:00+00:00" }, { "id": "01a087db-b6c2-71f4-bd37-d708cd0f1e06", "title": "Existential any in Swift, and when it becomes required", "url": "https://sarunw.com/posts/existential-any-in-swift/", "published_at": "2026-09-10T00:00:00+00:00" }, { "id": "01a08ce3-8ff0-70da-bb2b-c8efc1874c6b", "title": "A guide to Apple's iPhone Duo Tech Talks", "url": "https://sarunw.com/posts/iphone-duo-tech-talks/", "published_at": "2026-09-10T00:00:00+00:00" }, { "id": "01a082a5-3db5-729c-b379-e32d0e4fd9be", "title": "Why some Swift types only appear when you import two modules", "url": "https://sarunw.com/posts/swift-cross-import-overlay/", "published_at": "2026-09-09T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021c660ebd", "title": "SwiftUI has a native WebView in iOS 26", "url": "https://sarunw.com/posts/swiftui-native-webview/", "published_at": "2026-09-08T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021d05fc98", "title": "Codable errors are finally readable in Swift 6.3", "url": "https://sarunw.com/posts/readable-codable-errors/", "published_at": "2026-09-04T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021dc70bf9", "title": "Typed throws in Swift 6", "url": "https://sarunw.com/posts/typed-throws-in-swift/", "published_at": "2026-09-03T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021e18e3a8", "title": "Trailing commas beyond arrays in Swift 6.1", "url": "https://sarunw.com/posts/trailing-comma-in-swift/", "published_at": "2026-09-02T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021ef0068d", "title": "How to use if and switch as expressions in Swift", "url": "https://sarunw.com/posts/if-and-switch-expressions/", "published_at": "2026-09-01T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89021fe051de", "title": "How to add cases to a public enum without breaking your API", "url": "https://sarunw.com/posts/nonexhaustive-enums-in-swift/", "published_at": "2026-08-31T00:00:00+00:00" }, { "id": "01a07df5-02b6-73ab-8c35-89022097f30d", "title": "How to declare a fixed-size array in Swift", "url": "https://sarunw.com/posts/fixed-size-array-in-swift/", "published_at": "2026-08-30T00:00:00+00:00" } ] posts Claim your blog
Back to Sarun Wongpatcharapakorn
Blog · corpus.blog/blogs/sarunw.com/posts

Sarun Wongpatcharapakorn

sarunw.com

2026