Search results for

A Summary of the WWDC25 Group Lab

10,368 results found

Post

Replies

Boosts

Views

Activity

SwiftUI drag & drop: reliable cancellation
Summary In a SwiftUI drag-and-drop flow, the only robust way I’ve found to detect cancellation (user drops outside any destination) is to rely on the NSItemProvider created in .onDrag and run cleanup when it’s deallocated, via a custom onEnded callback tied to its lifecycle. On iOS 26, the provider appears to be deallocated immediately after .onDrag returns (unless I keep a strong reference), so a deinit/onEnded-based cancel hook fires right away and no longer reflects the true end of the drag session. I’d like to know: 1. Is there a supported, reliable way to detect when a drag ends outside any drop target so I can cancel and restore the source row? 2. Is the iOS 26 NSItemProvider deallocation timing a bug/regression or intended behavior? Minimal SwiftUI Repro This example shows: • creating a custom NSItemProvider subclass with an onEnded closure • retaining it to avoid immediate dealloc (behavior change on iOS 26) • using performDrop to mark the drag as finished import SwiftUI import UniformTypeIde
0
0
136
Aug ’25
Reply to Seeking Recommended Approach for Sharing VPN Profile Private Keys Between Sandboxed macOS App and Packet Tunnel System Extension
The best path forward here is for the sysex itself to manage the credential. It’s effectively a launchd daemon and thus can [1] use the System keychain. There’s a couple of ways you could spin this: Have the app download your configuration [2] and then pass it to the sysex via XPC. Have the app use XPC to instruct the sysex to download and save the configuration. In both cases it’s the sysex accessing the System keychain, which avoids all the various issues you’ve bumped in to. [quote='798513021, pawanquantum, /thread/798513, /profile/pawanquantum'] we're unsure if XPC is suitable for sensitive data like private keys during tunnel creation [/quote] XPC should be fine here. See XPC Resources for a lot of links to docs and so on. Some things to note: In the app, set the privileged flag [3] so that the system only looks for the named XPC endpoint in the global namespace. See this post for an explanation of that. In the sysex, declare the named endpoint via NEMachServiceName. In both the app and the sysex, claim
Aug ’25
Reply to Clarification on Apple Pay Domain Verification File Behavior
Hi @umertap, You wrote: [...] Is this the expected behavior for the apple-developer-merchantid-domain-association file? Should the browser download the file silently, or is there another step required, such as displaying the content on the webpage for verification purposes? I've consulted some resources and they indicate that the file download is the correct behavior. However, I'd appreciate confirmation from the community to ensure I'm implementing the verification process correctly. Yes, the file download is the expected behavior. Please see the technote below for the configuration process and more information about validating your merchant domains for Apple Pay: TN3173: Troubleshooting issues with your Apple Pay merchant identifier configuration https://developer.apple.com/documentation/technotes/tn3173-troubleshooting-issues-with-your-apple-pay-merchant-id-configuration#Domain-verification-issues Then, you wrote: [...] Summary is how do we know if apple has verified it? Use the Apple Developer we
Aug ’25
Cannot redeem invitation
I can't accept a TestFlight invitation. I seemed to have gotten myself into some situation that I have been unable to resolve. Here's what I did: Added my work Apple Account to TestFlight. Received an email for TestFlight invitation. Opened link in browser to view invitation code. Entered that code on a device that was signed into a different Apple Account (my personal account on my personal iPhone). The app did install on my personal iPhone, but now I can't accept the invite on my test device, which is signed into the Apple Account that is actually part of the TestFlight group in App Store Connect. I have tried deleting/re-adding/re-inviting my work Apple Account to TestFlight several times. On my personal iPhone, I have tapped on Stop Testing in the TestFlight app and deleted the app I installed there. But I still cannot accept the invite on the test device signed into my work account. When I enter the invite code to redeem, it says: This invitation cannot be accepted because your Apple Account, ,
1
0
346
Aug ’25
Seeking Recommended Approach for Sharing VPN Profile Private Keys Between Sandboxed macOS App and Packet Tunnel System Extension
Hello Apple Developer Community, We are developing a full-tunnel VPN app for macOS that utilizes a packet tunnel network system extension (via NEPacketTunnelProvider). We're committed to using a system extension for this purpose, as it aligns with our requirements for system-wide tunneling. The app is sandboxed and intended for distribution on the Mac App Store. Here's the workflow: The app (running in user context) downloads a VPN profile from our server. It generates private keys, appends them to the profile, and attempts to save this enhanced profile securely in the keychain. The packet tunnel system extension (running in root context) needs to access this profile, including the private keys, to establish the VPN connection. We've encountered challenges in securely sharing this data across the user-root boundary due to sandbox restrictions and keychain access limitations. Here's what we've tried so far, along with the issues: Writing from the App to the System Keychain: Attempted to store the profile in th
1
0
112
Aug ’25
Reply to Icon Composer and Xcode building time
Ah, that's frustrating. It would be helpful if you could file a feedback with a CPU sample of AssetCatalogSimulatorAgent You can get a CPU sample either from activity monitor, or by running this in the terminal just before building. sample AssetCatalogSimulatorAgent 120 -wait Does the performance of the build change if you remove all of the groups and layers from the icon?
Aug ’25
Reply to App extension write data The main target reads data.
As @mungbeans mentioned, not all extensions can write to an App Group container. A keyboard extension with no full access is an example of that kind. The other possibility is you intentionally create your model container with readonly mode by using init(_:schema:isStoredInMemoryOnly:allowsSave:groupContainer:cloudKitDatabase:) with allowsSave being set to false. It doesn't look like the case though, based on your description. Best, —— Ziqiao Chen  Worldwide Developer Relations.
Topic: App & System Services SubTopic: StoreKit Tags:
Aug ’25
iPadOS System Data Bug – Storage Ballooning 30–90GB (iPad Pro M4, iPadOS 17–18.6.2)
📢 Complaint: Severe “System Data” ballooning bug on iPad Pro M4 (iPadOS 17 → 18.6.2). “System Data” (formerly “Other”) grows abnormally from ~3 GB → 70–90 GB in just months. Deleting files, exporting PDFs, uninstalling apps, or clearing trash does not free space. The only “fix” Apple Support suggests is erase & restore — which works temporarily but always comes back within 1–3 months. 🔎 Problem Summary • Growth: 3 GB → 40 GB (1 month) → 58 GB (2 months) → 70 GB+ (3 months). • After erase: drops temporarily, then climbs again. • Multiple resets done — issue always returns. • Confirmed across users (see YouTube: ajXyDCLoLOA, cnOGeI8X-Fc). • Apple Support Case IDs filed (master: 102671138516). • Feedback Assistant report: FB19812484. 📝 Steps to Reproduce (consistent) 1. GoodNotes – Export/merge PDFs, sync large files → System Data grows even after clearing trash. 2. DocScanner (Lufick) – Import + delete scans → cache remains. 3. Apple Scan to PDF / Files – Scan 24 images, merge, delete originals
0
0
287
Aug ’25
iOS26: Programmatically Triggering the Format Sheet for AttributedString?
I've been exploring the resources from WWDC25 Session 280: Code-along: Cook up a rich text experience in SwiftUI with AttributedString and the SwiftUI documentation on Building rich SwiftUI text experiences. After spending some time experimenting and trying to implement these features with these APIs on iOS26 , I’ve run into a specific question. Is there a way to programmatically trigger the Format Sheet directly—for example, from a custom button—rather than requiring the user to go through the multi-step process of selecting text, opening the context menu, tapping Format, and then selecting More? I’d like to provide a more streamlined editing experience in my app. Any guidance would be greatly appreciated!
0
0
60
Aug ’25
Reply to SwiftData Inheritance Query Specialized Model
Nice to know that the original issue goes away in the latest Beta. Regarding the crash triggered by the access to Item.children, if you can provide a runnable code snippet to demo the issue, I'll take another look. You have mentioned a few classes with inheritance, and so I think it is probably worth mentioning that over-using inheritance may impact your app's performance negatively. Concretely, with today's default store (DefaultStore), all the types in an inheritance hierarchy are persisted with one single table in SQLite. If your inheritance hierarchy has many classes, the table (columns and data) can be quite big, which can slow down the performance of fetching and inserting data. That being said, when adopting SwiftData inheritance, you might examine if that is a right use case. This WWDC25 session(starting from around 4:25) covers this topic a bit. You can take a look, if haven't yet. Best, —— Ziqiao Chen  Worldwide Developer Relations.
Aug ’25
Reply to How is BGContinuedProcessingTask intended to be used?
This is a problem because if I have a group of tasks to complete on one BGContinuedProcessingTask, the interface won't update gradually as the tasks are completed, but only in steps as each task completes and until the first one does it shows a spinning circle. Is this intended? Or could it be a bug? I think this is a case of neither and both. That is, I don't think what you’re seeing is a design choice, and not due to any accident or mistake. However, I also think it's very possible that this is something that could be tweaked and improved on. Two broad points I'd make here: First off, any time you feel like something isn't working the way you want/expect, it's always worth filing a bug on, particularly when you're dealing with a new API. I won't promise that anything will change— like any large-scale engineering organization, properly prioritizing work is a very complicated task and that sometimes means that things don't change or get fixed when they should. However, any change that happens ALWAYS
Aug ’25
UICollectionView list: leading swipe overshoots in expanded split view for .plain/.grouped; .insetGrouped OK (iPadOS 26 b5–b8) [FB19785883]
Hi all, Sharing a reproducible UIKit issue I’m seeing across multiple iPadOS 26 betas, with a tiny sample attached and a short video. Short video https://youtu.be/QekYNnHsfYk Tiny project https://github.com/yoasha/ListSwipeOvershootReproSwift Summary In a UISplitViewController (.doubleColumn), a UICollectionView using list layout shows a large leading-swipe overshoot when the split view is expanded (isCollapsed == false). The cell content translates roughly 3–4× the action width. Repros with appearance = .plain and .grouped Does not repro with .insetGrouped Independent of trailing provider (issue persists when trailing provider is nil) Collapsed split (compact width) behaves correctly Environment Devices: iPad Air (3rd gen), iPadOS 26.0 (23A5326a) → Repro Simulators: iPad Pro 11-inch (M4), iPadOS 26.0 beta 6 → Repro Also tested on device: iPadOS 26 beta 5, 6, 7, 8 Xcode: 26.0 beta 6 (17A5305f) Steps to reproduce Launch the sample; ensure the split is expanded (isCollapsed == false). In the s
1
0
179
Aug ’25
Reply to How is BGContinuedProcessingTask intended to be used?
Hello, I'm posting in this thread rather than starting a new one so all the information is consolidated... I also have some doubts about BGContinuedProcessingTask... My main problem is with the Progress object. I've observed that if I add children Progress objects to the object provided by the task, the popup that shows up with the task on the device doesn't update the progress interface until the Progress object has completed at least one unit. It doesn't seem to be using the fractionCompleted property and instead it seems to use the number of completed units. This is a problem because if I have a group of tasks to complete on one BGContinuedProcessingTask, the interface won't update gradually as the tasks are completed, but only in steps as each task completes and until the first one does it shows a spinning circle. Is this intended? or could it be a bug? Also, as the original poster said, the actual BGContinuedProcessingTask object is not sendable, so when I start an async Task there's no way to p
Aug ’25