Snapp iOS Weekly

Snapp iOS Weekly

@snappiosweekly.bsky.social

Weekly Swift & iOS dev insights from @snappmobile.bsky.social ๐Ÿ“ฌ https://ios-newsletter.snappmobile.io/subscribe.html

367 followers2.3K following801 posts

๐Ÿ“ฑ ๐ด๐‘‘๐‘ฃ๐‘Ž๐‘›๐‘๐‘’๐‘‘ ๐‘š๐‘Ž๐‘๐‘Ÿ๐‘œ ๐‘ก๐‘’๐‘โ„Ž๐‘›๐‘–๐‘ž๐‘ข๐‘’ #2: ๐‘‡๐‘ฆ๐‘๐‘’ ๐‘–๐‘›๐‘“๐‘’๐‘Ÿ๐‘’๐‘›๐‘๐‘’ by Point-Free (@pointfree.co) Swift macros see syntax, not the compilerโ€™s static type information, which makes generating APIs from inferred properties awkward. #iOSDev www.pointfree.co/blog/posts/2...

pointfree.coAdvanced macro technique #2: Type inferenceSwift macros see syntax, not the compilerโ€™s static type information, which makes generating APIs from inferred properties awkward. Point-Freeโ€™s solution is delightfully indirect: generate a protocol with an associated type, then let a witness type infer that type from the propertyโ€™s default value. The macro can use the inferred type in its generated initializer without asking users to sprinkle annotations everywhere. A neat technique for anyone building macros that generate real types or functions.

๐Ÿ“Š ๐‘‚๐‘๐‘ก๐‘–๐‘œ๐‘›๐‘Ž๐‘™ ๐ถโ„Ž๐‘Ž๐‘–๐‘›๐‘–๐‘›๐‘”: ๐ฟ๐‘’๐‘ก ๐ด๐‘๐‘ ๐‘’๐‘›๐‘๐‘’ ๐น๐‘™๐‘œ๐‘ค ๐‘‡โ„Ž๐‘Ÿ๐‘œ๐‘ข๐‘”โ„Ž ๐‘Ž๐‘› ๐ธ๐‘ฅ๐‘๐‘Ÿ๐‘’๐‘ ๐‘ ๐‘–๐‘œ๐‘› by Ivan Tokar (@ivantokar.bsky.social) Optional chaining is more than a tidy way to dodge nested ๐‘–๐‘“ ๐‘™๐‘’๐‘กs. #iOSDev ivantokar.com/posts/option...

ivantokar.comOptional Chaining: Let Absence Flow Through an ExpressionOptional chaining is more than a tidy way to dodge nested `if let`s. It preserves the distinction between a missing value and a present `false`, and it can skip the right-hand side of an assignment entirely when an earlier link is `nil`. Thatโ€™s a small but important behavior to keep in our headsโ€”especially with dictionary subscripts, where โ€œdo nothing if missingโ€ is very different from โ€œcreate a value.โ€

๐Ÿ”ถ ๐บ๐‘œ๐‘œ๐‘”๐‘™๐‘’ ๐ด๐‘›๐‘Ž๐‘™๐‘ฆ๐‘ก๐‘–๐‘๐‘  ๐‘“๐‘œ๐‘Ÿ ๐น๐‘–๐‘Ÿ๐‘’๐‘๐‘Ž๐‘ ๐‘’ ๐‘–๐‘‚๐‘† ๐‘†๐ท๐พ ๐‘œ๐‘ข๐‘ก๐‘Ž๐‘”๐‘’ ๐‘œ๐‘› ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ 28, 2026 by Jerome Mourits & Don Kahn A two-line cleanup left a dangling configuration reference, and suddenly apps using the Google Analytics for Firebaseโ€ฆ #iOSDev firebase.blog/posts/2026/1...

firebase.blogGoogle Analytics for Firebase iOS SDK outage on September 28, 2026A two-line cleanup left a dangling configuration reference, and suddenly apps using the Google Analytics for Firebase SDK were crashing when they fetched the bad payload. The outage lasted just over two hours, but the postmortem is useful beyond Firebase: validate remote data at the client boundary, catch orphaned config in CI, and donโ€™t let a green server dashboard stand in for client health. The queued crash reports also explain why the incident looked like it lingered after the rollback.

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฑ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! This week's lineup: ๐Ÿ”ถ Google Analytics for Firebase iOS SDK outage on September 28, 2026 ๐Ÿ“Š Optional Chaining: Let Absence Flow Through an Expression ๐Ÿ“ฑ Advanced macro technique #2: Type inference ๐ŸŽจ Fix misaligned paging in SwiftUI scroll views

ios-newsletter.snappmobile.ioSnapp iOS Weekly Issue 1158 articles: Google Analytics for Firebase iOS SDK outage on September 28, 2026, Optional Chaining: Let Absence Flow Through an Expression, Advanced macro technique #2: Type inference, and 5 more

๐Ÿ’ก ๐‘€๐‘’๐‘‘๐‘–๐‘Ž๐ต๐‘Ÿ๐‘–๐‘‘๐‘”๐‘’ by Oleksii Kolomiiets (@oleksiikolomiiets.bsky.social) MediaBridge wraps ๐‘€๐‘’๐‘‘๐‘–๐‘Ž๐‘ƒ๐‘™๐‘Ž๐‘ฆ๐‘’๐‘Ÿ in modern Swift: typed library models, key-path queries, typed errors, and a @๐‘€๐‘’๐‘‘๐‘–๐‘Ž๐‘„๐‘ข๐‘’๐‘Ÿ๐‘ฆ property wrapper for SwiftUI. #iOSDev #SwiftUI github.com/kolomiiets-o...

github.comMediaBridgeMediaBridge wraps `MediaPlayer` in modern Swift: typed library models, key-path queries, typed errors, and a `@MediaQuery` property wrapper for SwiftUI. The result is a much nicer way to fetch, sort, limit, and reload songs or albums without scattering raw MediaPlayer queries through our views. It also covers artwork, previews, playlists, playback, and now playing state, while supporting iOS 15 and visionOS. If an app touches the userโ€™s music library, this looks like the kind of focused package that can remove a lot of platform glue.

๐Ÿงฉ ๐น๐‘–๐‘›๐‘‘ ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐‘‰๐‘–๐‘’๐‘ค๐‘  ๐‘–๐‘› ๐‘ˆ๐‘›๐‘–๐‘ก ๐‘‡๐‘’๐‘ ๐‘ก๐‘ , ๐‘กโ„Ž๐‘’ ๐‘…๐‘œ๐‘๐‘ข๐‘ ๐‘ก ๐‘Š๐‘Ž๐‘ฆ by Jon Reid (@qualitycoding.org) Walking a SwiftUI view tree makes tests depend on layout details that can change during a harmless refactorโ€”or after Apple changes its wrappers. #iOSDev #SwiftUI #Testing qualitycoding.org/find-swiftui...

qualitycoding.orgFind SwiftUI Views in Unit Tests, the Robust WayWalking a SwiftUI view tree makes tests depend on layout details that can change during a harmless refactorโ€”or after Apple changes its wrappers. Finding views by accessibility identifier is sturdier because the test names the behavior-facing element, not its position or current label. That gives us tests that fail when the increment button stops incrementing, not when a designer moves it. The small extra identifier in production code buys back a lot of refactoring confidence.

๐Ÿš€ ๐ผ๐‘š๐‘๐‘™๐‘’๐‘š๐‘’๐‘›๐‘ก๐‘–๐‘›๐‘” ๐‘†๐‘’๐‘Ÿ๐‘ฃ๐‘’๐‘Ÿ-๐‘†๐‘–๐‘‘๐‘’ ๐‘†๐‘œ๐‘Ÿ๐‘ก๐‘–๐‘›๐‘” ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ by Mohammad Azam (@azamsharp.bsky.social) Sorting a small list locally is fine until our app starts downloading the entire hotel catalog just to put the cheapest rooms first. #iOSDev #SwiftUI azamsharp.com/2026/10/13/i...

azamsharp.comImplementing Server-Side Sorting in SwiftUISorting a small list locally is fine until our app starts downloading the entire hotel catalog just to put the cheapest rooms first. This walkthrough moves sorting into an Express API, passes the choice through a SwiftUI `@Observable` store, and keeps the client ready for filtering and pagination later. The pattern is straightforward, but the useful bit is the boundary: the server owns large-data work while the UI owns selection and presentation. No need to invent a separate method for every combination of options.

๐ŸŽจ ๐‘†๐‘ข๐‘๐‘๐‘œ๐‘Ÿ๐‘ก๐‘–๐‘›๐‘” ๐ท๐‘–๐‘“๐‘“๐‘’๐‘Ÿ๐‘’๐‘›๐‘ก๐‘–๐‘Ž๐‘ก๐‘’ ๐‘Š๐‘–๐‘กโ„Ž๐‘œ๐‘ข๐‘ก ๐ถ๐‘œ๐‘™๐‘œ๐‘Ÿ ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ by Natascha Fadeeva A red dot and a green dot are not a complete status system, even when the labels are accessible to VoiceOver. #iOSDev #SwiftUI tanaschita.com/ios-accessib...

tanaschita.comSupporting Differentiate Without Color in SwiftUIA red dot and a green dot are not a complete status system, even when the labels are accessible to VoiceOver. SwiftUIโ€™s `accessibilityDifferentiateWithoutColor` lets us add symbols, text, shapes, or other cues when the user asks for them, with previews that make both states easy to check. There is also a good design question here: sometimes the checkmark belongs in the default UI for everyone. Color can be part of the message, but it should not be the whole message.

โšก ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ .๐‘ก๐‘Ž๐‘ ๐‘˜ ๐‘ฃ๐‘  .๐‘œ๐‘›๐ด๐‘๐‘๐‘’๐‘Ž๐‘Ÿ - ๐ด๐‘ ๐‘ฆ๐‘›๐‘ ๐‘Š๐‘œ๐‘Ÿ๐‘˜ ๐ท๐‘œ๐‘›๐‘’ ๐‘…๐‘–๐‘”โ„Ž๐‘ก by Sagar Unagar Starting async work from .๐‘œ๐‘›๐ด๐‘๐‘๐‘’๐‘Ž๐‘Ÿ is easy; cleaning it up correctly is where the trouble starts. #iOSDev #SwiftUI #Concurrency www.sagarunagar.com/blog/swiftui...

sagarunagar.comSwiftUI .task vs .onAppear - Async Work Done RightStarting async work from `.onAppear` is easy; cleaning it up correctly is where the trouble starts. SwiftUIโ€™s `.task` and `.task(id:)` give the view ownership of cancellation and rerun work when an input changes, which also makes them a neat way to debounce search. The important catch is cooperative cancellation: a cancelled task still needs our code to notice and stop. Less bookkeeping, fewer stale responses, happier views.

๐Ÿ“Š ๐‘ ๐‘ค๐‘–๐‘“๐‘ก-๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก: ๐น๐‘Ÿ๐‘œ๐‘š ๐‘†๐‘ฆ๐‘›๐‘ก๐‘Ž๐‘ฅ ๐‘‡๐‘Ÿ๐‘’๐‘’๐‘  ๐‘ก๐‘œ ๐‘…๐‘’๐‘Ž๐‘‘๐‘Ž๐‘๐‘™๐‘’ ๐ถ๐‘œ๐‘‘๐‘’ by Ivan Tokar (@ivantokar.bsky.social) ๐‘ ๐‘ค๐‘–๐‘“๐‘ก-๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก is much more than a prettier version of search and replace. #iOSDev ivantokar.com/posts/swift-...

ivantokar.comswift-format: From Syntax Trees to Readable Code`swift-format` is much more than a prettier version of search and replace. It parses Swift into syntax trees, rewrites only what its rules allow, then uses a separate pretty printer to decide where code and comments should land. That split explains why semicolons, nested groups, and comments survive formatting without turning CI into a diff lottery. A good tour if you are building generators, editor tooling, or just want our formatting rules to stop feeling magical.

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฐ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! This week's lineup: ๐Ÿ“ฑ ๐ด๐‘›๐‘›๐‘œ๐‘ข๐‘›๐‘๐‘–๐‘›๐‘” ๐‘†๐‘ค๐‘–๐‘“๐‘ก 6.4.1 ๐Ÿ“Š ๐‘†๐‘ค๐‘–๐‘“๐‘ก-๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก: ๐น๐‘Ÿ๐‘œ๐‘š ๐‘†๐‘ฆ๐‘›๐‘ก๐‘Ž๐‘ฅ ๐‘‡๐‘Ÿ๐‘’๐‘’๐‘  ๐‘ก๐‘œ ๐‘…๐‘’๐‘Ž๐‘‘๐‘Ž๐‘๐‘™๐‘’ ๐ถ๐‘œ๐‘‘๐‘’ โšก ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ .๐‘ก๐‘Ž๐‘ ๐‘˜ ๐‘ฃ๐‘  .๐‘œ๐‘›๐ด๐‘๐‘๐‘’๐‘Ž๐‘Ÿ - ๐ด๐‘ ๐‘ฆ๐‘›๐‘ ๐‘Š๐‘œ๐‘Ÿ๐‘˜ ๐ท๐‘œ๐‘›๐‘’ ๐‘…๐‘–๐‘”โ„Ž๐‘ก

ios-newsletter.snappmobile.ioSnapp iOS Weekly Issue 1148 articles: Announcing Swift 6.4.1, swift-format: From Syntax Trees to Readable Code, SwiftUI .task vs .onAppear - Async Work Done Right, and 5 more
View full thread

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฐ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! This week's lineup: ๐Ÿ“ฑ ๐ด๐‘›๐‘›๐‘œ๐‘ข๐‘›๐‘๐‘–๐‘›๐‘” ๐‘†๐‘ค๐‘–๐‘“๐‘ก 6.4.1 ๐Ÿ“Š ๐‘†๐‘ค๐‘–๐‘“๐‘ก-๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก: ๐น๐‘Ÿ๐‘œ๐‘š ๐‘†๐‘ฆ๐‘›๐‘ก๐‘Ž๐‘ฅ ๐‘‡๐‘Ÿ๐‘’๐‘’๐‘  ๐‘ก๐‘œ ๐‘…๐‘’๐‘Ž๐‘‘๐‘Ž๐‘๐‘™๐‘’ ๐ถ๐‘œ๐‘‘๐‘’ โšก ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ .๐‘ก๐‘Ž๐‘ ๐‘˜ ๐‘ฃ๐‘  .๐‘œ๐‘›๐ด๐‘๐‘๐‘’๐‘Ž๐‘Ÿ - ๐ด๐‘ ๐‘ฆ๐‘›๐‘ ๐‘Š๐‘œ๐‘Ÿ๐‘˜ ๐ท๐‘œ๐‘›๐‘’ ๐‘…๐‘–๐‘”โ„Ž๐‘ก

ios-newsletter.snappmobile.ioSnapp iOS Weekly Issue 1148 articles: Announcing Swift 6.4.1, swift-format: From Syntax Trees to Readable Code, SwiftUI .task vs .onAppear - Async Work Done Right, and 5 more

๐ŸŽจ ๐‘†๐‘ข๐‘๐‘๐‘œ๐‘Ÿ๐‘ก๐‘–๐‘›๐‘” ๐ท๐‘–๐‘“๐‘“๐‘’๐‘Ÿ๐‘’๐‘›๐‘ก๐‘–๐‘Ž๐‘ก๐‘’ ๐‘Š๐‘–๐‘กโ„Ž๐‘œ๐‘ข๐‘ก ๐ถ๐‘œ๐‘™๐‘œ๐‘Ÿ ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐Ÿš€ ๐ผ๐‘š๐‘๐‘™๐‘’๐‘š๐‘’๐‘›๐‘ก๐‘–๐‘›๐‘” ๐‘†๐‘’๐‘Ÿ๐‘ฃ๐‘’๐‘Ÿ-๐‘†๐‘–๐‘‘๐‘’ ๐‘†๐‘œ๐‘Ÿ๐‘ก๐‘–๐‘›๐‘” ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐Ÿงฉ ๐น๐‘–๐‘›๐‘‘ ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐‘‰๐‘–๐‘’๐‘ค๐‘  ๐‘–๐‘› ๐‘ˆ๐‘›๐‘–๐‘ก ๐‘‡๐‘’๐‘ ๐‘ก๐‘ , ๐‘กโ„Ž๐‘’ ๐‘…๐‘œ๐‘๐‘ข๐‘ ๐‘ก ๐‘Š๐‘Ž๐‘ฆ

๐ŸŽจ ๐‘ƒ๐‘Ÿ๐‘’๐‘ ๐‘’๐‘›๐‘ก๐‘–๐‘›๐‘” ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐‘ โ„Ž๐‘’๐‘’๐‘ก๐‘  ๐‘œ๐‘› ๐‘–๐‘ƒโ„Ž๐‘œ๐‘›๐‘’ ๐ท๐‘ข๐‘œ by Natalia Panferova (@natpanferova.bsky.social) Sheets on iPhone Duo are not just โ€œthe same modal, wider screen.โ€ #iOSDev #SwiftUI #Testing nilcoalescing.com/blog/Present...

nilcoalescing.comPresenting SwiftUI sheets on iPhone DuoSheets on iPhone Duo are not just โ€œthe same modal, wider screen.โ€ SwiftUI can move them away from the fold, switch toolbar bars from horizontal to vertical, and adjust behavior depending on the display and folded state, all before we add a single custom branch. The practical bit for our apps: test existing sheets early, then reach for `presentationPlacement(_:)`, `presentationDetents(_:)`, and `toolbarVerticalBehavior(_:)` only when the default adaptation fights the content.

๐Ÿ› ๏ธ ๐ด๐ผ-๐น๐‘Ÿ๐‘–๐‘’๐‘›๐‘‘๐‘™๐‘ฆ ๐น๐‘Ÿ๐‘Ž๐‘š๐‘’๐‘ค๐‘œ๐‘Ÿ๐‘˜๐‘ : ๐ด๐‘  ๐ด๐‘๐‘ ๐‘ก๐‘Ÿ๐‘Ž๐‘๐‘ก๐‘–๐‘œ๐‘› ๐‘€๐‘œ๐‘ฃ๐‘’๐‘  ๐‘ˆ๐‘, ๐ป๐‘œ๐‘ค ๐ถ๐‘Ž๐‘› ๐‘‰๐‘’๐‘Ÿ๐‘–๐‘“๐‘–๐‘๐‘Ž๐‘ก๐‘–๐‘œ๐‘› ๐พ๐‘’๐‘’๐‘ ๐‘ƒ๐‘Ž๐‘๐‘’? by Xu Yang (@fatbobman.com) The easy take is โ€œagents prefer UIKit because itโ€™s explicit,โ€ but thatโ€™s too small. #iOSDev #SwiftUI fatbobman.com/en/posts/ai-...

fatbobman.comAI-Friendly Frameworks: As Abstraction Moves Up, How Can Verification Keep Pace?The easy take is โ€œagents prefer UIKit because itโ€™s explicit,โ€ but thatโ€™s too small. The sharper point is that SwiftUIโ€™s abstraction is fine only if observation and verification rise to the same level: stable semantic models, structured diagnostics, snapshots, validators, tools the agent can call and trust. As our apps get more agent-written code, the frameworks that win wonโ€™t just be concise; theyโ€™ll be the ones that can prove, deterministically, when the generated thing matches our intent.

๐Ÿš€ ๐ป๐‘œ๐‘ค ๐‘ก๐‘œ ๐‘Ÿ๐‘’๐‘‘๐‘ข๐‘๐‘’ ๐‘ก๐‘œ๐‘˜๐‘’๐‘› ๐‘ข๐‘ ๐‘Ž๐‘”๐‘’ ๐‘–๐‘› ๐ถ๐‘™๐‘Ž๐‘ข๐‘‘๐‘’ ๐ถ๐‘œ๐‘‘๐‘’, ๐ถ๐‘œ๐‘‘๐‘’๐‘ฅ, ๐‘Ž๐‘›๐‘‘ ๐ถ๐‘ข๐‘Ÿ๐‘ ๐‘œ๐‘Ÿ by Antoine van der Lee (@avanderlee.com) The useful punchline is blunt: stop obsessing over short agent replies and start controlling what the agent reads. #iOSDev #Xcode www.avanderlee.com/ai-developme...

avanderlee.comHow to reduce token usage in Claude Code, Codex, and CursorThe useful punchline is blunt: stop obsessing over short agent replies and start controlling what the agent reads. The measurements from real Swift app sessions are painful in a familiar way โ€” raw `xcodebuild` logs, repeated full-file reads, duplicate skill loads, and cache reads eating nearly everything. For our own setups, the global hook that pipes Xcode and SwiftPM output through `xcsift` feels like the kind of boring fix that saves money every single day.

๐Ÿ“ฑ ๐ด ๐‘š๐‘–๐‘›๐‘–๐‘š๐‘Ž๐‘™ ๐‘˜๐‘’๐‘Ÿ๐‘›๐‘’๐‘™ ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก, ๐‘Ÿ๐‘ข๐‘›๐‘›๐‘–๐‘›๐‘” ๐‘–๐‘› ๐‘„๐ธ๐‘€๐‘ˆ by Antonin Carette A tiny Swift kernel booting in QEMU is absolutely not something most of us need for shipping apps, which is partly why itโ€™s so much fun. #iOSDev carette.xyz/posts/minima...

carette.xyzA minimal kernel in Swift, running in QEMUA tiny Swift kernel booting in QEMU is absolutely not something most of us need for shipping apps, which is partly why itโ€™s so much fun. The walk-through gets from Embedded Swift to a bare-metal AArch64 target, a hand-written boot entry, a linker script, `putchar`, `memmove`, and eventually a little UART echo loop. It makes Swift feel delightfully weird again: no app lifecycle, no OS safety net, just our code talking straight to the machine.

โšก ๐ผ๐‘›๐‘ก๐‘Ÿ๐‘œ๐‘‘๐‘ข๐‘๐‘–๐‘›๐‘” ๐‘กโ„Ž๐‘’ ๐‘†๐‘’๐‘Ÿ๐‘ฃ๐‘’๐‘Ÿ ๐‘†๐‘–๐‘‘๐‘’ ๐ถ๐‘™๐‘œ๐‘ข๐‘‘ ๐‘†๐‘ค๐‘–๐‘“๐‘ก ๐‘†๐ท๐พ by Karl Weinmeister & Carlos O'Ryan Googleโ€™s official Cloud SDK for Swift is one of those releases that quietly changes the โ€œcan we do this in Swift?โ€ conversation. #iOSDev #Concurrency cloud.google.com/blog/topics/...

cloud.google.comIntroducing the Server Side Cloud Swift SDKGoogleโ€™s official Cloud SDK for Swift is one of those releases that quietly changes the โ€œcan we do this in Swift?โ€ conversation. Built on SwiftNIO, async/await, gRPC, and Swiftโ€™s concurrency checks, it gives backend services and CLI tools native access to Cloud Storage, IAM, Secret Manager, Gemini, and a long list of Google Cloud APIs. I still wouldnโ€™t ship service credentials inside an iOS app โ€” please donโ€™t โ€” but for our Cloud Run backends, internal tools, and shared Swift models, this is a very real door opening.

๐Ÿ”ถ ๐ด๐‘‘๐‘ฃ๐‘Ž๐‘›๐‘๐‘’๐‘‘ ๐‘š๐‘Ž๐‘๐‘Ÿ๐‘œ ๐‘ก๐‘’๐‘โ„Ž๐‘›๐‘–๐‘ž๐‘ข๐‘’ #1: ๐‘†๐‘ก๐‘Ž๐‘ก๐‘–๐‘ ๐‘ก๐‘ฆ๐‘๐‘’ ๐‘–๐‘›๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก๐‘–๐‘œ๐‘› by Point-Free (@pointfree.co) Macros still canโ€™t casually ask the compiler for a full type-checked universe, which is annoying, but not the dead end it first looks like. #iOSDev www.pointfree.co/blog/posts/2...

pointfree.coAdvanced macro technique #1: Static type informationMacros still canโ€™t casually ask the compiler for a full type-checked universe, which is annoying, but not the dead end it first looks like. The trick here is using overload resolution and attached macros to surface just enough static type information to make diagnostics land where developers actually need them. That matters for our libraries and, increasingly, for our agents too: a sharp compiler error on the right property beats a mystery failure buried in generated code every time.

๐ŸŒ ๐‘Šโ„Ž๐‘Ž๐‘ก'๐‘  ๐‘›๐‘’๐‘ค ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก: ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ 2026 ๐ธ๐‘‘๐‘–๐‘ก๐‘–๐‘œ๐‘› by Tim Condon & Dave Lester Swift 6.4 gets the headline here, but the fun is how wide the Swift world feels right now: Vapor 5 cutting loose fromโ€ฆ #iOSDev #WebAssembly www.swift.org/blog/whats-n...

swift.orgWhat's new in Swift: September 2026 EditionSwift 6.4 gets the headline here, but the fun is how wide the Swift world feels right now: Vapor 5 cutting loose from `EventLoopFuture`, Google shipping official Cloud clients, Wasm getting faster, and Embedded Swift sneaking into places we used to reserve for C. Itโ€™s a good reminder that Swift is no longer just โ€œthe language for our app UI,โ€ even if most of us still meet it there every morning. If your codebase has been client-only so far, this roundup makes server-side, tooling, and embedded work feel a lot less like side quests.

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฏ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! This week's lineup: ๐ŸŒ ๐‘Šโ„Ž๐‘Ž๐‘ก'๐‘  ๐‘›๐‘’๐‘ค ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก: ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ 2026 ๐ธ๐‘‘๐‘–๐‘ก๐‘–๐‘œ๐‘› ๐Ÿ”ถ ๐ด๐‘‘๐‘ฃ๐‘Ž๐‘›๐‘๐‘’๐‘‘ ๐‘š๐‘Ž๐‘๐‘Ÿ๐‘œ ๐‘ก๐‘’๐‘โ„Ž๐‘›๐‘–๐‘ž๐‘ข๐‘’ #1: ๐‘†๐‘ก๐‘Ž๐‘ก๐‘–๐‘ ๐‘ก๐‘ฆ๐‘๐‘’ ๐‘–๐‘›๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก๐‘–๐‘œ๐‘›

ios-newsletter.snappmobile.ioSnapp iOS Weekly Issue 1138 articles: What's new in Swift: September 2026 Edition, Advanced macro technique #1: Static type information, Introducing the Server Side Cloud Swift SDK, and 5 more
View full thread

๐Ÿ› ๏ธ ๐ด๐ผ-๐น๐‘Ÿ๐‘–๐‘’๐‘›๐‘‘๐‘™๐‘ฆ ๐น๐‘Ÿ๐‘Ž๐‘š๐‘’๐‘ค๐‘œ๐‘Ÿ๐‘˜๐‘ : ๐ด๐‘  ๐ด๐‘๐‘ ๐‘ก๐‘Ÿ๐‘Ž๐‘๐‘ก๐‘–๐‘œ๐‘› ๐‘€๐‘œ๐‘ฃ๐‘’๐‘  ๐‘ˆ๐‘, ๐ป๐‘œ๐‘ค ๐ถ๐‘Ž๐‘› ๐‘‰๐‘’๐‘Ÿ๐‘–๐‘“๐‘–๐‘๐‘Ž๐‘ก๐‘–๐‘œ๐‘› ๐พ๐‘’๐‘’๐‘ ๐‘ƒ๐‘Ž๐‘๐‘’? ๐ŸŽจ ๐‘ƒ๐‘Ÿ๐‘’๐‘ ๐‘’๐‘›๐‘ก๐‘–๐‘›๐‘” ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐‘ โ„Ž๐‘’๐‘’๐‘ก๐‘  ๐‘œ๐‘› ๐‘–๐‘ƒโ„Ž๐‘œ๐‘›๐‘’ ๐ท๐‘ข๐‘œ ๐Ÿ’ก ๐ป๐ผ๐บ๐ด๐‘”๐‘’๐‘›๐‘ก๐‘†๐‘˜๐‘–๐‘™๐‘™๐‘  #Swift #iOSDev ios-newsletter.snappmobile.io/issues/2026-...

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฏ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! This week's lineup: ๐ŸŒ ๐‘Šโ„Ž๐‘Ž๐‘ก'๐‘  ๐‘›๐‘’๐‘ค ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก: ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ 2026 ๐ธ๐‘‘๐‘–๐‘ก๐‘–๐‘œ๐‘› ๐Ÿ”ถ ๐ด๐‘‘๐‘ฃ๐‘Ž๐‘›๐‘๐‘’๐‘‘ ๐‘š๐‘Ž๐‘๐‘Ÿ๐‘œ ๐‘ก๐‘’๐‘โ„Ž๐‘›๐‘–๐‘ž๐‘ข๐‘’ #1: ๐‘†๐‘ก๐‘Ž๐‘ก๐‘–๐‘ ๐‘ก๐‘ฆ๐‘๐‘’ ๐‘–๐‘›๐‘“๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก๐‘–๐‘œ๐‘›

ios-newsletter.snappmobile.ioSnapp iOS Weekly Issue 1138 articles: What's new in Swift: September 2026 Edition, Advanced macro technique #1: Static type information, Introducing the Server Side Cloud Swift SDK, and 5 more

โšก ๐ผ๐‘›๐‘ก๐‘Ÿ๐‘œ๐‘‘๐‘ข๐‘๐‘–๐‘›๐‘” ๐‘กโ„Ž๐‘’ ๐‘†๐‘’๐‘Ÿ๐‘ฃ๐‘’๐‘Ÿ ๐‘†๐‘–๐‘‘๐‘’ ๐ถ๐‘™๐‘œ๐‘ข๐‘‘ ๐‘†๐‘ค๐‘–๐‘“๐‘ก ๐‘†๐ท๐พ ๐Ÿ“ฑ ๐ด ๐‘š๐‘–๐‘›๐‘–๐‘š๐‘Ž๐‘™ ๐‘˜๐‘’๐‘Ÿ๐‘›๐‘’๐‘™ ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก, ๐‘Ÿ๐‘ข๐‘›๐‘›๐‘–๐‘›๐‘” ๐‘–๐‘› ๐‘„๐ธ๐‘€๐‘ˆ ๐Ÿš€ ๐ป๐‘œ๐‘ค ๐‘ก๐‘œ ๐‘Ÿ๐‘’๐‘‘๐‘ข๐‘๐‘’ ๐‘ก๐‘œ๐‘˜๐‘’๐‘› ๐‘ข๐‘ ๐‘Ž๐‘”๐‘’ ๐‘–๐‘› ๐ถ๐‘™๐‘Ž๐‘ข๐‘‘๐‘’ ๐ถ๐‘œ๐‘‘๐‘’, ๐ถ๐‘œ๐‘‘๐‘’๐‘ฅ, ๐‘Ž๐‘›๐‘‘ ๐ถ๐‘ข๐‘Ÿ๐‘ ๐‘œ๐‘Ÿ

๐Ÿ› ๏ธ ๐ป๐‘œ๐‘ค ๐ผ ๐‘Ÿ๐‘’๐‘‘๐‘ข๐‘๐‘’๐‘‘ ๐‘š๐‘ฆ ๐ท๐‘œ๐‘๐ถ ๐‘‘๐‘œ๐‘๐‘ข๐‘š๐‘’๐‘›๐‘ก๐‘Ž๐‘ก๐‘–๐‘œ๐‘› ๐‘ค๐‘’๐‘ ๐‘œ๐‘ข๐‘ก๐‘๐‘ข๐‘ก ๐‘ ๐‘–๐‘ง๐‘’ ๐‘ค๐‘–๐‘กโ„Ž 95% by Daniel Saidi (@danielsaidi.bsky.social) Who doesnโ€™t like deleting 855 MB of generated documentation with one build setting? #iOSDev #SwiftUI #Apple danielsaidi.com/blog/2026/10...

danielsaidi.comHow I reduced my DocC documentation web output size with 95%Who doesnโ€™t like deleting 855 MB of generated documentation with one build setting? `DOCC_SKIP_SYNTHESIZED_MEMBERS=YES` stopped DocC from producing pages for inherited SwiftUI protocol members, taking KeyboardKitโ€™s output from roughly 900 MB to 45 MB. If our documentation site is mostly Appleโ€™s view modifiers wearing our package name, this is the kind of boring switch that suddenly makes builds, deploys, and navigation sane again.

๐Ÿงฉ ๐ป๐‘œ๐‘ค ๐ผ ๐ต๐‘ข๐‘–๐‘™๐‘ก ๐‘Ž๐‘›๐‘‘ ๐‘†โ„Ž๐‘–๐‘๐‘๐‘’๐‘‘ ๐‘Ž ๐‘†๐‘ค๐‘–๐‘“๐‘ก ๐ด๐‘๐‘ ๐‘Š๐‘–๐‘กโ„Ž ๐ถ๐‘™๐‘Ž๐‘ข๐‘‘๐‘’ ๐ถ๐‘œ๐‘‘๐‘’ by Dashi Dance Building a Swift app from zero iOS experience with Claude Code sounds like bait, but the story lands because it is stubbornly unglamorous. #iOSDev #Testing hackernoon.com/how-i-built-...

hackernoon.comHow I Built and Shipped a Swift App With Claude CodeBuilding a Swift app from zero iOS experience with Claude Code sounds like bait, but the story lands because it is stubbornly unglamorous. Specs, plans, CI, UI tests, shell-command hooks, localization checks, real-device testing โ€” all the annoying scaffolding is what kept the agent useful instead of just fast. The best line hiding in here is that the repository has to remember what the agent will forget, which, yes, applies to our human teams too.

๐Ÿ” ๐ผ๐‘›๐‘ก๐‘Ÿ๐‘œ๐‘‘๐‘ข๐‘๐‘–๐‘›๐‘” ๐‘กโ„Ž๐‘’ ๐‘†๐‘Ž๐‘“๐‘Ž๐‘Ÿ๐‘– ๐‘€๐ถ๐‘ƒ ๐‘ ๐‘’๐‘Ÿ๐‘ฃ๐‘’๐‘Ÿ ๐‘“๐‘œ๐‘Ÿ ๐‘ค๐‘’๐‘ ๐‘‘๐‘’๐‘ฃ๐‘’๐‘™๐‘œ๐‘๐‘’๐‘Ÿ๐‘  by Saron Yitbarek Safariโ€™s MCP server gives coding agents a browser window they can actually inspect: DOM, console output, screenshots, network requests, page content, interactionsโ€ฆ #iOSDev webkit.org/blog/18136/i...

webkit.orgIntroducing the Safari MCP server for web developersSafariโ€™s MCP server gives coding agents a browser window they can actually inspect: DOM, console output, screenshots, network requests, page content, interactions, the whole debugging loop. That matters even for those of us living mostly in native apps, because it points to the direction tools are going โ€” agents with eyes, not just autocomplete with confidence. Fewer โ€œtry this and tell me what you seeโ€ loops is a very easy thing to root for.

๐ŸŽจ ๐ฟ๐‘’๐‘ก๐‘ก๐‘–๐‘›๐‘” ๐ด๐ผ ๐‘†๐‘’๐‘’ ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ: ๐‘‹๐‘๐‘œ๐‘‘๐‘’ ๐‘ƒ๐‘Ÿ๐‘’๐‘ฃ๐‘–๐‘’๐‘ค ๐‘€๐ถ๐‘ƒ ๐‘–๐‘› ๐‘ƒ๐‘Ÿ๐‘Ž๐‘๐‘ก๐‘–๐‘๐‘’ โ€” ๐‘ƒ๐‘–๐‘ก๐‘“๐‘Ž๐‘™๐‘™๐‘  ๐‘Ž๐‘›๐‘‘ ๐ป๐‘œ๐‘๐‘’๐‘  by Xu Yang (@fatbobman.com) Xcode Preview MCP sounds like exactly what agentic SwiftUI work needs: let the agent render the UI insteadโ€ฆ #iOSDev #SwiftUI #Xcode fatbobman.com/en/posts/let...

fatbobman.comLetting AI See SwiftUI: Xcode Preview MCP in Practice โ€” Pitfalls and HopesXcode Preview MCP sounds like exactly what agentic SwiftUI work needs: let the agent render the UI instead of guessing from code. Then reality shows up. Device selection is shaky, stale screenshots can slip through, and the workaround trail includes deprecated `PreviewProvider`, fingerprints, and extra metadata so an agent can know it is looking at the right thing. Messy? Definitely. Still probably the future of serious AI-assisted UI work.

๐Ÿ”ถ ๐บ๐‘’๐‘ก๐‘ก๐‘–๐‘›๐‘” ๐‘ ๐‘ก๐‘Ž๐‘Ÿ๐‘ก๐‘’๐‘‘ ๐‘ค๐‘–๐‘กโ„Ž ๐‘†๐‘ฆ๐‘ ๐‘ก๐‘’๐‘š ๐‘‚๐‘›๐‘’ ๐‘š๐‘œ๐‘‘๐‘’๐‘™๐‘  ๐‘–๐‘› ๐‘†๐‘ค๐‘–๐‘“๐‘ก by Peter Friese (@peterfriese.dev) System One models are pitched here as โ€œsmart ๐‘–๐‘“ statementsโ€, and honestly, that framing helps. #iOSDev peterfriese.dev/blog/2026/sy...

peterfriese.devGetting started with System One models in SwiftSystem One models are pitched here as โ€œsmart `if` statementsโ€, and honestly, that framing helps. Instead of asking a full LLM to generate text when all we need is a bounded judgement, Jev-style classifiers return typed answers, probabilities, and confidence fast enough to sit in real app flows. For our apps, this is the more interesting AI shape: not chat everywhere, but tiny decision points where fuzzy input meets structured output.

๐Ÿ“Š ๐ผ๐‘›๐‘ ๐‘–๐‘‘๐‘’ ๐‘–๐‘‚๐‘† 27'๐‘  ๐‘…๐‘’๐‘ค๐‘œ๐‘Ÿ๐‘˜๐‘’๐‘‘ ๐‘†๐‘ก๐‘ข๐‘ ๐ผ๐‘ ๐‘™๐‘Ž๐‘›๐‘‘๐‘  by Zhi Zhou A proper deep dive into the dyld shared cache is not everybodyโ€™s idea of a cozy evening, but this one pays off. #iOSDev #Performance #Apple codecolor.ist/posts/2026-0...

codecolor.istInside iOS 27's Reworked Stub IslandsA proper deep dive into the dyld shared cache is not everybodyโ€™s idea of a cozy evening, but this one pays off. iOS 27 appears to remove redundant stub sections, rethink trampoline patterns, and scatter `objc_msgSend` copies through the cache so short branches can still reach. We may never touch this directly in app code, sure, but understanding where Apple squeezes performance out of the system makes the platform feel a little less like a black box.

โšก ๐‘ค๐‘–๐‘กโ„Ž๐‘‡๐‘Ž๐‘ ๐‘˜๐ถ๐‘Ž๐‘›๐‘๐‘’๐‘™๐‘™๐‘Ž๐‘ก๐‘–๐‘œ๐‘›๐‘†โ„Ž๐‘–๐‘’๐‘™๐‘‘: ๐‘†๐‘ค๐‘–๐‘“๐‘ก 6.4 ๐‘›๐‘’๐‘ค ๐‘“๐‘’๐‘Ž๐‘ก๐‘ข๐‘Ÿ๐‘’ by Omar Elsayed ๐‘ค๐‘–๐‘กโ„Ž๐‘‡๐‘Ž๐‘ ๐‘˜๐ถ๐‘Ž๐‘›๐‘๐‘’๐‘™๐‘™๐‘Ž๐‘ก๐‘–๐‘œ๐‘›๐‘†โ„Ž๐‘–๐‘’๐‘™๐‘‘ is one of those small Swift concurrency additions that immediately answers a bunchโ€ฆ #iOSDev #Concurrency www.swiftdifferently.com/blog/swift/c...

swiftdifferently.comwithTaskCancellationShield: Swift 6.4 new feature`withTaskCancellationShield` is one of those small Swift concurrency additions that immediately answers a bunch of โ€œyes, but what about cleanup?โ€ questions. The useful bit is not magic cancellation prevention; it is hiding cancellation from a block so the work inside can finish cleanly, including child tasks. The catch is the new runtime requirement on iOS 27 and friends, so the back-deployment workaround discussion is the part many of our apps will care about first.

๐ŸŒ ๐‘†๐‘ค๐‘–๐‘“๐‘ก ๐‘“๐‘œ๐‘Ÿ ๐‘Š๐‘Ž๐‘ ๐‘š ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ 2026 ๐‘ˆ๐‘๐‘‘๐‘Ž๐‘ก๐‘’๐‘  by Max Desiatov Swift on WebAssembly keeps feeling less like a side quest and more like real infrastructure work. #iOSDev #WebAssembly #Apple forums.swift.org/t/swift-for-...

forums.swift.orgSwift for Wasm September 2026 UpdatesSwift on WebAssembly keeps feeling less like a side quest and more like real infrastructure work. WasmKit got a big speed bump, uWASI and JavaScriptKit keep filling in practical runtime gaps, and ElementaryUI is now pushing Swift UI ideas into custom elements. If our codebase ever needs to live outside Apple platforms without becoming a rewrite, this is the kind of steady, boring-in-the-best-way progress we want to see.

๐Ÿ“ข ๐—œ๐˜€๐˜€๐˜‚๐—ฒ ๐Ÿญ๐Ÿญ๐Ÿฎ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜! Featuring: ๐ŸŒ ๐‘†๐‘ค๐‘–๐‘“๐‘ก ๐‘Š๐‘Ž๐‘ ๐‘š ๐‘†๐‘’๐‘๐‘ก๐‘’๐‘š๐‘๐‘’๐‘Ÿ โšก ๐‘Š๐‘–๐‘กโ„Ž๐‘‡๐‘Ž๐‘ ๐‘˜๐ถ๐‘Ž๐‘›๐‘๐‘’๐‘™๐‘™๐‘Ž๐‘ก๐‘–๐‘œ๐‘›๐‘†โ„Ž๐‘–๐‘’๐‘™๐‘‘: ๐‘†๐‘ค๐‘–๐‘“๐‘ก 6.4 ๐Ÿ“Š ๐ผ๐‘›๐‘ ๐‘–๐‘‘๐‘’ ๐‘–๐‘‚๐‘† 27๐‘  ๐Ÿ”ถ ๐บ๐‘’๐‘ก๐‘ก๐‘–๐‘›๐‘” ๐‘ ๐‘ก๐‘Ž๐‘Ÿ๐‘ก๐‘’๐‘‘ ๐‘†๐‘ฆ๐‘ ๐‘ก๐‘’๐‘š

ios-newsletter.snappmobile.ioiOS Newsletter Issue 1128 articles: Swift for Wasm September 2026 Updates, withTaskCancellationShield: Swift 6.4 new feature, Inside iOS 27's Reworked Stub Islands, and 5 more

๐ŸŽจ ๐ฟ๐‘’๐‘ก๐‘ก๐‘–๐‘›๐‘” ๐ด๐ผ ๐‘†๐‘’๐‘’ ๐Ÿ” ๐ผ๐‘›๐‘ก๐‘Ÿ๐‘œ๐‘‘๐‘ข๐‘๐‘–๐‘›๐‘” ๐‘†๐‘Ž๐‘“๐‘Ž๐‘Ÿ๐‘– ๐‘€๐ถ๐‘ƒ ๐Ÿงฉ ๐ผ ๐ต๐‘ข๐‘–๐‘™๐‘ก ๐‘†โ„Ž๐‘–๐‘๐‘๐‘’๐‘‘ ๐Ÿ› ๏ธ ๐ผ ๐‘Ÿ๐‘’๐‘‘๐‘ข๐‘๐‘’๐‘‘ ๐‘š๐‘ฆ #Swift #iOSDev ios-newsletter.snappmobile.io/issues/2026-...

๐Ÿ› ๏ธ ๐ฝ๐‘’๐‘ฃ ๐‘“๐‘œ๐‘Ÿ ๐ด๐‘๐‘๐‘™๐‘’ ๐น๐‘œ๐‘ข๐‘›๐‘‘๐‘Ž๐‘ก๐‘–๐‘œ๐‘› ๐‘€๐‘œ๐‘‘๐‘’๐‘™๐‘  by Peter Friese (@peterfriese.dev) ๐‘—๐‘’๐‘ฃ-๐‘“๐‘œ๐‘ข๐‘›๐‘‘๐‘Ž๐‘ก๐‘–๐‘œ๐‘›-๐‘š๐‘œ๐‘‘๐‘’๐‘™๐‘  plugs TypeSafe AIโ€™s Jev decision model into Appleโ€™s Foundation Models APIs, which is an interesting fit for cases where we need typed decisionsโ€ฆ #iOSDev #Apple github.com/peterfriese/...

github.comJev for Apple Foundation Models`jev-foundation-models` plugs TypeSafe AIโ€™s Jev decision model into Appleโ€™s Foundation Models APIs, which is an interesting fit for cases where we need typed decisions, not another paragraph of generated text. The package maps `@Generable` structs and enums into fast boolean, choice, and score evaluations, then feeds the result back through `LanguageModelSession` with confidence metadata. Iโ€™m especially glad the README leads with the mobile API-key warning, because shipping secrets in an app binary is still not a clever shortcut, it is just a future incident. For triage, routing, deduping, and other โ€œmake a call from structured stateโ€ jobs, this is a neat bridge to watch.

๐Ÿง  ๐ต๐‘Ž๐‘๐‘˜๐‘๐‘œ๐‘Ÿ๐‘ก๐‘–๐‘›๐‘” ๐‘†๐‘ค๐‘–๐‘“๐‘ก๐‘ˆ๐ผ ๐ด๐‘ƒ๐ผ๐‘  by Majid Jabrayilov (@mecid.bsky.social) New SwiftUI APIs arriving in iOS 27.1 are nice, but bumping the whole deployment target just to use ๐‘ก๐‘œ๐‘œ๐‘™๐‘๐‘Ž๐‘Ÿ๐‘‰๐‘’๐‘Ÿ๐‘ก๐‘–๐‘๐‘Ž๐‘™๐ต๐‘’โ„Ž๐‘Ž๐‘ฃ๐‘–๐‘œ๐‘Ÿ is rarely how our apps work. #iOSDev #SwiftUI swiftwithmajid.com/2026/09/22/b...

swiftwithmajid.comBackporting SwiftUI APIsNew SwiftUI APIs arriving in iOS 27.1 are nice, but bumping the whole deployment target just to use `toolbarVerticalBehavior` is rarely how our apps work. The backport pattern here is intentionally small: wrap the new modifier behind availability checks, either under a `.backport` namespace or with a `ported` prefix that deprecates itself once the real API is safe to require. I prefer the deprecation approach because it leaves breadcrumbs for future cleanup, and future cleanup is where these little compatibility shims usually go to die. Use the new Duo behavior now, keep older OS support, and make the compiler remind you when the shim has outlived its usefulness.

๐Ÿ’ก ๐ด๐‘Ÿ๐‘Ÿ๐‘Ž๐‘›๐‘”๐‘’๐‘š๐‘’๐‘›๐‘ก๐‘‰๐‘–๐‘’๐‘ค, ๐‘‡๐‘œ๐‘œ๐‘™๐‘๐‘Ž๐‘Ÿ ๐ต๐‘’โ„Ž๐‘Ž๐‘ฃ๐‘–๐‘œ๐‘Ÿ๐‘  ๐‘Ž๐‘›๐‘‘ ๐‘š๐‘œ๐‘Ÿ๐‘’! ๐ถ๐‘œ๐‘‘๐‘’ ๐‘†๐‘›๐‘–๐‘๐‘๐‘’๐‘ก + ๐ท๐‘’๐‘š๐‘œ ๐‘‰๐‘–๐‘‘๐‘’๐‘œ! by Itsuki A quick tour through the iOS 27.1 Duo APIs, with code you can paste into a small demo instead of just staring at documentation. #iOSDev #SwiftUI #Apple medium.com/@itsuki.enjo...

medium.comArrangementView, Toolbar Behaviors and more! Code Snippet + Demo Video!A quick tour through the iOS 27.1 Duo APIs, with code you can paste into a small demo instead of just staring at documentation. The toolbar pieces line up with Appleโ€™s new vertical bar model โ€” per-item axis behavior, whole-presentation vertical behavior, compression choices, and the `toolbarVerticalEdge` environment value. The extra wrinkle is `ArrangementView`, which gives SwiftUI a native way to juggle primary and secondary content through split, overlay, and custom styles. Some of it still feels like we need real devices and real apps to develop taste, but that is exactly why small demos like this help.

๐Ÿ“ฑ ๐น๐‘Ÿ๐‘œ๐‘š ๐‘๐‘๐‘ฅ๐‘๐‘Ÿ๐‘œ๐‘— ๐‘ก๐‘œ ๐‘ฅ๐‘๐‘๐‘Ÿ๐‘œ๐‘—: ๐‘‹๐‘๐‘œ๐‘‘๐‘’ ๐‘ƒ๐‘Ÿ๐‘œ๐‘—๐‘’๐‘๐‘ก ๐ถ๐‘œ๐‘›๐‘“๐‘–๐‘”๐‘ข๐‘Ÿ๐‘Ž๐‘ก๐‘–๐‘œ๐‘› ๐บ๐‘’๐‘ก๐‘  ๐‘Ž ๐ฝ๐‘†๐‘‚๐‘ ๐น๐‘œ๐‘Ÿ๐‘š๐‘Ž๐‘ก by Xu Yang (@fatbobman.com) Xcode 27.2โ€™s new ๐‘๐‘Ÿ๐‘œ๐‘—๐‘’๐‘๐‘ก.๐‘ฅ๐‘๐‘๐‘Ÿ๐‘œ๐‘— format is one of those boring-looking changes thatโ€ฆ #iOSDev #Apple #Xcode fatbobman.com/en/posts/fro...

fatbobman.comFrom pbxproj to xcproj: Xcode Project Configuration Gets a JSON FormatXcode 27.2โ€™s new `project.xcproj` format is one of those boring-looking changes that could save real pain in our codebase. The old `pbxproj` file has always been a merge-conflict magnet, full of flat object tables and IDs nobody wants to review. JSON alone is not the win here; the nicer part is that Apple reshaped the project graph so file membership and build settings read closer to what we actually changed. Not a revolution, no, but for teams still touching `.xcodeproj` directly โ€” and for coding agents trying not to mangle it โ€” this feels like overdue cleanup.

โšก ๐‘†๐‘ค๐‘–๐‘“๐‘ก 6 ๐บ๐‘Ž๐‘ฃ๐‘’ ๐‘€๐‘’ ๐‘๐‘’๐‘Ÿ๐‘œ ๐‘Š๐‘Ž๐‘Ÿ๐‘›๐‘–๐‘›๐‘”๐‘ , ๐‘๐‘ข๐‘ก ๐‘‡๐‘ค๐‘œ ๐‘‚๐‘๐‘—๐‘’๐‘๐‘ก๐‘–๐‘ฃ๐‘’-๐ถ ๐ถ๐‘Ž๐‘™๐‘™๐‘๐‘Ž๐‘๐‘˜๐‘  ๐‘†๐‘ก๐‘–๐‘™๐‘™ ๐ถ๐‘Ÿ๐‘Ž๐‘ โ„Ž๐‘’๐‘‘ ๐‘Ž๐‘ก ๐‘…๐‘ข๐‘›๐‘ก๐‘–๐‘š๐‘’ by Amana Swift 6 strict concurrency can still leave a nasty hole when Objective-C APIs takeโ€ฆ #iOSDev #Concurrency #Testing hackernoon.com/swift-6-gave...

hackernoon.comSwift 6 Gave Me Zero Warnings, but Two Objective-C Callbacks Still Crashed at RuntimeSwift 6 strict concurrency can still leave a nasty hole when Objective-C APIs take plain callback blocks and run them on queues the Swift type system cannot see. The crashes here come from `BGTaskScheduler` and PhotoKit callbacks created inside `@MainActor` code, then invoked off the main actor before the `Task { @MainActor in ... }` body even gets a chance to run. That is the kind of bug that looks โ€œobviously handledโ€ in review, which is why the concrete grep targets and testing advice are useful. If our apps bridge into older Apple frameworks โ€” and of course they do โ€” this is worth reading with crash logs open.