Issue #78: The Paste Bug Is Dead, Bottom Sheets Done Right, and WWDC Is 30 Days Away
Hey everyone! π
Welcome back. It's been a few weeks, the April 28 SDK deadline came and went, Xcode 26.5 Beta finally killed the paste bug we covered last time, Swift 6.3.1 shipped, and Tanaschita put out two of the most useful SwiftUI tutorials of the year. Plus Apple ran a live Concurrency Q&A and is already drumbeating WWDC. Let's get into it. π
The Paste Bug Is Officially Dead π
Closing the loop on Issue #77: Xcode 26.5 Beta 3 dropped on April 27, and the Simulator paste bug appears to be fixed. Cmd+V works again. You can delete that xcrun simctl pbcopy workaround from your shell history (or keep it β it's still a handy one-liner).
If you were running Junda Ong's vibe-coded clipboard sync app to stay sane, you're now free to uninstall it. RIP to a real one.
If you held off updating Xcode through the bug, this is a good moment to grab the beta and verify it works on your setup before betting your sanity on it.
Xcode 26.5 Beta 3 release notes β Apple Developer

β° April 28 SDK Deadline: It Happened
The deadline we've been warning about for two issues running has now passed. As of April 28, App Store Connect rejects any iOS, iPadOS, tvOS, visionOS, or watchOS app not built against the iOS 26 / iPadOS 26 / etc. SDK or later.
If you're reading this and just realized your app hasn't shipped an update in a while, you can still update Xcode, rebuild, and resubmit. The deadline gates new uploads, not existing apps already in the store. So no panic, but get on it.
If you've been on Xcode 26 since the fall, this won't have affected you at all. Carry on.
Swift 6.3.1 Is Out
Quick one: Swift 6.3.1 shipped as a bug-fix release for the 6.3 line that landed in late March. Nothing dramatic, refinements and fixes layered on top of the @c attribute, Android SDK, and improved C interop story we covered when 6.3 first launched. Worth grabbing if you build with the toolchain directly.
Install Swift 6.3.1 β Swift.org

Two SwiftUI Tutorials Worth Bookmarking
Tanaschita has been on an absolute tear lately. Two of her recent posts are the kind of thing you'll end up referencing months from now, so let's spotlight both.
Draggable Bottom Sheets, Done Right
The Apple Maps / Google Maps style bottom sheet β the one that snaps between a tiny peek, a medium height, and full-screen, while still letting you interact with the map underneath β is fully native SwiftUI now. No custom gesture recognizers, no offset math.
swift
MapView()
.sheet(isPresented: $showingBottomSheet) {
ScrollView {
// sheet contents
}
.interactiveDismissDisabled()
.presentationDetents([.height(50), .medium, .large])
.presentationBackgroundInteraction(
.enabled(upThrough: .large)
)
.presentationDragIndicator(.visible)
}Three things doing the heavy lifting: presentationDetents defines the snap heights, interactiveDismissDisabled() keeps the sheet from being swiped away, and presentationBackgroundInteraction(.enabled(upThrough: .large)) is the magic that lets the user keep tapping the map behind it. ScrollView coordination with the drag gesture comes for free β when you scroll past the top of the content, the sheet starts moving instead.
One catch: the sheet renders above everything, including your tab bar. If you need content that sits above the sheet, you're back to a custom implementation.
Building a draggable bottom sheet in SwiftUI Tanaschita β April 20
Infinite Scroll with a Loading Row
Pagination in SwiftUI's List doesn't need a custom scroll observer or a GeometryReader hack. The cleanest pattern is a sentinel row at the bottom of the list whose .onAppear fires the next page load:
swift
List {
ForEach(viewModel.items, id: \.id) { item in
ListItemView(item: item)
}
if viewModel.isMoreDataAvailable {
ProgressView()
.frame(height: 50)
.onAppear {
viewModel.loadMoreItems()
}
}
}When the user scrolls to the bottom, the loading row becomes visible, onAppear fires, the next page loads, the row updates with the new items, repeat. Just make sure loadMoreItems() is idempotent β onAppear can fire more than once for the same row, and you don't want three concurrent requests racing for page 4.
The loading row also gives you a natural place to render error states with a retry button, which is a nice bonus.
How to implement pagination with SwiftUI's List view Tanaschita β April 27
Two More Quick SwiftUI Wins from This Week's Weekly
Majid's SwiftUI Weekly #232 (April 27) surfaced two small-but-useful tips worth passing along.
Preview Both Color Schemes at Once
Stop toggling Dark Mode in the canvas. Wrap your preview in a tiny helper that renders both:
swift
#Preview {
VStack {
ContentView()
.preferredColorScheme(.light)
ContentView()
.preferredColorScheme(.dark)
}
}Catches all the "oh no, my text is white on white in dark mode" bugs before they ship.
Previewing SwiftUI views in both dark and light mode Peter Ringset
Use Previews to Catch Accessibility Issues
VoiceOver and Voice Control still need a real device to test properly, but a surprising amount of accessibility work β Dynamic Type sizes, color contrast, increased contrast mode, reduce motion β has visible UI impact you can verify in a preview. Set the trait, render the preview, eyeball it.
swift
#Preview {
ContentView()
.environment(\.dynamicTypeSize, .accessibility3)
}Good way to catch text truncation and broken layouts before they reach a user with large text turned on.
Checking accessibility with SwiftUI Previews
Apple Hosted a Live Swift Concurrency Q&A
On April 23, Apple ran a live online Q&A with the Swift concurrency team β questions on migration strategy, @MainActor defaults, sendable conformance, and where Approachable Concurrency is heading next. If you missed the live session, the Developer Forums thread is where ongoing follow-up discussion is happening.
This kind of direct-from-the-team session has been rare historically, and they've been getting more frequent in the run-up to WWDC. Worth keeping an eye on the Apple Developer events page for the next one.
Swift Student Challenge Winners Use AI Heavily
Apple highlighted four Swift Student Challenge winners ahead of WWDC26 last week, and the most interesting thread isn't the apps themselves β it's the workflow. Pretty much every winner Apple profiled leaned heavily on Apple Foundation Models + Claude Agent in Xcode 26 to build their submissions.
Pitch Coach, an Apple Intelligence-powered Shark Tank wingman built by 17-year-old Maxim Baranov, used Foundation Models for personalized feedback and Claude Agent in Xcode to translate the app into 20 languages. Another winner used Claude, Codex, and Gemini to learn Swift from scratch while building.
Reading between the lines: Apple is signaling pretty hard that AI-assisted development inside Xcode is the future story they want to tell at WWDC. Which brings us toβ¦
WWDC 2026 Is Soon!
We're now ~30 days from WWDC 2026 (June 8β12). Apple has been steadily teasing AI as the central theme, Foundation Models 2.0, deeper Xcode agent integration, what comes after Apple Intelligence's first year. iOS 27 will of course be unveiled, and based on the SSC winner spotlight strategy, expect on-device AI to be front and center.
If you want to be in Cupertino for the keynote, the public registration for Apple Developer Community Meetup at Apple Park on June 10 is still accepting requests. Worth a shot.
βοΈ
That's Issue #78! The paste bug's gone, your bottom sheets are now genuinely good, and infinite scroll is just a sentinel row. Get your apps in shape β WWDC season is here.
Catch you in two weeks. π

Member discussion