I'm trying to understand the behavior I'm seeing here. In the following example, I have a custom @Observable class that adopts RandomAccessCollection and am attempting to populate a List with it.
If I use an inner collection property of the instance (even computed as this shows), the top view identifies additions to the list.
However, if I just use the list as a collection in its own right, it detects when a change is made, but not that the change increased the length of the list. If you add text that has capital letters you'll see them get sorted correctly, but the lower list retains its prior count. The choice of a List initializer with the model versus an inner ForEach doesn't change the outcome, btw.
If I cast that type as an Array(), effectively copying its contents, it works fine which leads me to believe there is some additional Array protocol conformance that I'm missing, but that would be unfortunate since I'm not sure how I would have known that. Any ideas what's going on here? The new type can be used with for-in scenarios fine and compiles great with List/ForEach, but has this issue. I'd like the type to not require extra nonsense to be used like an array here.
import SwiftUI
fileprivate struct _VExpObservable6: View {
@Binding var model: ExpModel
@State private var text: String = ""
var body: some View {
NavigationStack {
VStack(spacing: 20) {
Spacer()
.frame(height: 40)
HStack {
TextField("Item", text: $text)
.textFieldStyle(.roundedBorder)
.textContentType(.none)
.textCase(.none)
Button("Add Item") {
guard !text.isEmpty else { return }
model.addItem(text)
text = ""
print("updated model #2 using \(Array(model.indices)):")
for s in model {
print("- \(s)")
}
}
}
InnerView(model: model)
OuterView(model: model)
}
.listStyle(.plain)
.padding()
}
}
}
// - displays the model data using an inner property expressed as
// a collection.
fileprivate struct InnerView: View {
let model: ExpModel
var body: some View {
VStack {
Text("Model Inner Collection:")
.font(.title3)
List {
ForEach(model.sorted, id: \.self) { item in
Text("- \(item)")
}
}
.border(.darkGray)
}
}
}
// - displays the model using the model _as the collection_
fileprivate struct OuterView: View {
let model: ExpModel
var body: some View {
VStack {
Text("Model as Collection:")
.font(.title3)
// - the List/ForEach collections do not appear to work
// by default using the @Observable model (RandomAccessCollection)
// itself, unless it is cast as an Array here.
List {
// ForEach(Array(model), id: \.self) { item in
ForEach(model, id: \.self) { item in
Text("- \(item)")
}
}
.border(.darkGray)
}
}
}
#Preview {
@Previewable @State var model = ExpModel()
_VExpObservable6(model: $model)
}
@Observable
fileprivate final class ExpModel: RandomAccessCollection {
typealias Element = String
var startIndex: Int { 0 }
var endIndex: Int { sorted.count }
init() {
_listData = ["apple", "yellow", "about"]
}
subscript(_ position: Int) -> String {
sortedData()[position]
}
var sorted: [String] {
sortedData()
}
func addItem(_ item: String) {
_listData.append(item)
_sorted = nil
}
private var _listData: [String]
private var _sorted: [String]?
private func sortedData() -> [String] {
if let ret = _sorted { return ret }
let ret = _listData.sorted()
_sorted = ret
return ret
}
}
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I’m reaching out regarding an issue we’ve been experiencing with BGProcessingTask since upgrading to Xcode 26.1.1.
Issue Summary
Our daily background processing task—scheduled shortly after end‑of‑day—has stopped triggering reliably at night. This behavior started occurring only after updating to Xcode 26.1.1. Prior to this update, the task consistently ran around midnight, executed for ~10–15 seconds, and successfully rescheduled itself for the next day.
Expected Behavior
BGProcessingTask should run at/near the scheduled earliestBeginDate, which we set to roughly 2 hours after end-of-day.
The task should execute, complete, and then reschedule itself.
Actual Behavior
On devices running builds compiled with Xcode 26.1.1, the task does not trigger at all during the night.
The same code worked reliably before the Xcode update.
No system logs indicate rejection, expiration, or background task denial.
Technical Details
This is the identifier we use:
private enum DayEndProcessorConst {
static let taskIdentifier = "com.company.sdkmanagement.daysummary.manager"
}
The task is registered as follows: When app launched
BGTaskScheduler.shared.register(
forTaskWithIdentifier: DayEndProcessorConst.taskIdentifier,
using: nil
) { [weak self] task in
self?.handleDayEndTask(task)
}
And scheduled like this:
let date = Calendar.current.endOfDay(for: Date()).addingTimeInterval(60 * 60 * 2)
let request = BGProcessingTaskRequest(identifier: DayEndProcessorConst.taskIdentifier)
request.requiresNetworkConnectivity = true
request.requiresExternalPower = false
request.earliestBeginDate = date
try BGTaskScheduler.shared.submit(request)
As per our logs, tasks scheduled successfully
The handler wraps the work in an operation queue, begins a UI background task, and marks completion appropriately:
task.setTaskCompleted(success: true)
Could you please advise whether:
There are known issues with BGProcessingTask scheduling or midnight execution in Xcode 26.1.1 or iOS versions associated with it?
Any new entitlement, configuration, or scheduler behavior has changed in recent releases?
Additional logging or diagnostics can help pinpoint why the scheduler never fires the task?
Have had issues all day with the delayed Processing times as seen by other posts on this forum.
But after my app has completed Processing (took 4 hours, usually takes 10 minutes), the build doesn't show up for Internal Tester.
Internal tester usually gets all app updates, but when I try to add Group to build, the internal tester group is greyed out. If I try to add individual tester to build I get "An error has occurred. Try again later."
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
I’m running into a problem with SwiftUI/AppKit event handling on macOS Tahoe 26.2.
I have a layered view setup:
Bottom: AppKit NSView (NSViewRepresentable)
Middle: SwiftUI view in an NSHostingView with drag/tap gestures
Top: Another SwiftUI view in an NSHostingView
On macOS 26.2, the middle NSHostingView no longer receives mouse or drag events when the top NSHostingView is present. Events pass through to the AppKit view below. Removing the top layer immediately restores interaction. Everything works correctly on macOS Sequoia.
I’ve posted a full reproducible example and detailed explanation on Stack Overflow, including a single-file demo:
Stack Overflow post:
https://stackoverflow.com/q/79862332
I also found a related older discussion here, but couldn’t get the suggested workaround to apply:
https://developer.apple.com/forums/thread/759081
Any guidance would be appreciated.
Thanks!
Hello,
I am using the App Store Connect Finance Reports API to export monthly financial statements.
API endpoint:
https://api.appstoreconnect.apple.com/v1/financeReports
Request parameters:
reportDate: 2026-01
reportType: FINANCE_DETAIL
However, the returned report shows an unexpected date range:
Start Date: 09/29/2025
End Date: 11/01/2025
This does not match the requested month January 2026, and instead seems to cover a different settlement period.
I would like to confirm:
Is the Finance Reports API returning data based on Apple’s settlement cycle rather than the requested calendar month?
How should we correctly map reportDate to the actual statement period?
Is there a recommended way to reliably retrieve the financial report for a specific month (e.g. Jan 2026)?
This behavior makes automated reconciliation difficult, so any clarification or guidance would be appreciated.
Thank you very much for your help.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect API
Hi all,
I’m working on the alternative marketplace app and using MarketplaceKit and ActionButton. On the main page, users see a list of items, each with an ActionButton. I’m experiencing significant UI hangs when this page loads.
What I’ve Observed:
Instruments (Hangs and SwiftUI profilers) show that the hangs occur when ActionButton instances are rendered.
Creating or updating ActionButton properties triggers synchronous XPC communication with the managedappdistributiond process on the main thread.
Each XPC call takes about 2-3 ms, but with many ActionButtons, the cumulative delay is noticeable and impacts the user experience.
I have tested on iOS 18.7 and 26.1, using Xcode 26.2. But in general, the issue is not specific to a device or iOS version.
The problem occurs in both Debug and Release builds.
Hangs can be severe depending on the number of items in a section, generally between 200-600 ms, resulting in noticeable lag and a poor user experience.
I haven’t found much documentation on the internal workings of ActionButton or why these XPC calls are necessary.
I have tried Lazy loading and reducing the amount of ActionButton instances. That makes the hangs less noticeable, but there are still hitches when new sections with items are added to the view hierarchy.
This is not an issue with SwiftUI or view updates in general. If I replace ActionButton with UIButton, the hangs are completely gone.
Minimal Example:
Here’s a simplified version of how I’m using ActionButton in my SwiftUI view. The performance issue occurs when many of these views are rendered in the list:
struct ActionButtonView: UIViewRepresentable {
let viewModel: ActionButtonViewModel
let style: ActionButtonStyle
func makeUIView(context: Context) -> ActionButton {
return ActionButton(action: viewModel.action)
}
func updateUIView(_ uiView: ActionButton, context: Context) {
uiView.update(\.size, with: context.coordinator.size)
uiView.update(\.label, with: viewModel.title)
uiView.update(\.isEnabled, with: context.environment.isEnabled)
uiView.update(\.fontSize, with: style.scaledFont(for: viewModel.title))
uiView.update(\.backgroundColor, with: style.backgroundColor.color)
uiView.update(\.tintColor, with: style.textAndIconColor)
uiView.update(\.cornerRadius, with: style.cornerRadius(height: uiView.frame.size.height))
uiView.update(\.accessibilityLabel, with: viewModel.accessibilityLabel)
uiView.update(\.accessibilityTraits, with: .button)
uiView.update(\.accessibilityUserInputLabels, with: viewModel.accesibilityUserInputLabels)
uiView.update(\.tintAdjustmentMode, with: .normal)
}
func makeCoordinator() -> Coordinator {
Coordinator(viewModel: viewModel)
}
class Coordinator: NSObject {
...
}
}
extension ActionButton {
fileprivate func update<T>(_ keyPath: WritableKeyPath<ActionButton, T>, with value: T)
where T: Equatable {
if self[keyPath: keyPath] == value { return }
var mutableSelf = self
mutableSelf[keyPath: keyPath] = value
}
}
From the Instruments samples, it’s clear that the performance issues originate from NativeActionButtonView.makeUIView(context:) and NativeActionButtonView.updateUIView(_:context:). The following stack trace is common for all blocking calls, indicating that NSXPCConnection is being used for cross-process communication:
mach_msg2_trap
mach_msg2_internal
mach_msg_overwrite
mach_msg
_dispatch_mach_send_and_wait_for_reply
dispatch_mach_send_with_result_and_wait_for_reply
xpc_connection_send_message_with_reply_sync
__NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__
-[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]
___forwarding___
_CF_forwarding_prep_0
__35-[_UISlotView _setContentDelegate:]_block_invoke_2
-[_UISlotView _updateContent]
...
NativeActionButtonView.sizeThatFits(_:uiView:context:)
protocol witness for UIViewRepresentable.sizeThatFits(_:uiView:context:) in conformance NativeActionButtonView
...
Additionally, the Thread State Trace shows that during the XPC calls, the main thread is blocked and is later made runnable by managedappdistributiond. This confirms that the app is indeed communicating with the managedappdistributiond process.
Since there is limited documentation and information available, I have some questions:
Is there a way to batch update ActionButton properties to reduce the number of XPC calls?
Is it possible to avoid or defer XPC communication when creating/updating ActionButton instances?
Are there best practices for efficiently rendering large numbers of ActionButtons in SwiftUI?
Is this a known issue, and are there any recommended workarounds?
Can Apple provide more details on ActionButton’s internal behavior and XPC usage?
Any insights or suggestions would be greatly appreciated!
Topic:
UI Frameworks
SubTopic:
SwiftUI
审核团队到底在干什么???开发者发帖,论坛删帖??掩耳盗铃???
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
I have been trying from a long time now to register for Apple Developer Account for my company but every time I am getting the Same Unknown Error. And I have tried contacting the support team from a long time but haven't received any resolution.
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Hello Apple Developer Forums,
I’m preparing to submit an app update that includes an in-app subscription. As part of the submission, I need to provide screenshots showing where the user initiates and completes the subscription purchase flow.
The issue is that App Store Connect keeps rejecting my screenshot upload with an “incorrect size” (or size invalid) error. I have already tried exporting the screenshot in all sizes and resolutions described in Apple’s documentation, but none of them are being accepted so far.
Could you please advise:
What exact pixel dimensions / format requirements App Store Connect currently enforces for these screenshots (including file type and color profile, if relevant)?
Whether there are any known issues or common causes for this error (e.g., metadata, alpha channel, scaling, or export settings)?
Any recommended workflow/tools to generate a compliant screenshot that reliably uploads?
Thank you in advance for your help.
We are embedding TikTok Live streams inside our iOS app using WKWebView. The Live stream loads and plays normally at first. However, when the app goes to the background (for example, user presses the Home button or switches apps) and then returns to the foreground, the TikTok Live video and audio become paused and do not resume automatically.
Expected behavior
When the app returns from the background to the foreground, the video/audio should resume playback automatically
Actual behavior
Video/audio pauses after app resumes from background
Any guidance would be greatly appreciated.
Thank you.
Hi all,
I have setup my app to use SwiftData with CloudKit sync. I have a production environment and development environment. I can reset the development environment for myself and all users in CloudKit console, but I can't reset the production one as it's tried to users' iCloud accounts, so I've added a button in-app for that feature. In the onboarding of my app, I pre-seed the DB with some default objects, which should be persisted between app install. The issue I'm running into is that I'm unable to force-pull these models from iCloud during the onboarding of a clean re-install, which leads to the models later appearing as duplicates once the user has been on the app for a few minutes and it has pulled from their iCloud account. If anyone has any suggestions on how to handle this issue, I would greatly appreciate it.
Hello everyone,
I’m looking for some advice or shared experiences regarding an app rejection under App Store Review Guideline 4.3(b) – Design – Spam.
Our app was rejected and, after an appeal to the App Review Board, Apple maintained that the app “duplicates the content and functionality of similar apps in a saturated category.” We strongly disagree with this classification and are struggling to understand how Guideline 4.3(b) has been applied in our case.
The app was developed as an original product:
Custom-designed content (including original cards and interactions)
A unique visual style and UI
A distinct interaction flow focused on encouraging social interaction between users
This was not a template-based or reskinned app, nor is it part of a series of similar submissions.
We fully respect the App Store Review Guidelines and are open to making adjustments to better align with them. However, what we find difficult is the lack of specific, actionable feedback. We have not received clear guidance on which exact elements are considered duplicative or what changes would meaningfully address the concern.
Some of the questions we are hoping the community can help with:
In your experience, what typically triggers a 4.3(b) rejection in cases like this?
Are there specific mechanics, terminology, or presentation choices that reviewers often interpret as problematic?
Have others successfully resolved a 4.3(b) rejection without completely abandoning their app concept?
We have already invested significant time and resources into this project, and being advised to create an entirely new app is not financially feasible for us. We are genuinely trying to understand how to proceed in a way that is constructive and compliant.
Any insights, experiences, or advice would be greatly appreciated.
Thank you in advance.
— Lars
Please who could explain better what i need to do at this point when my submission is rejected?
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
The app does not meet all requirements for apps that offer highly regulated services or handle sensitive user data. Specifically:
The app must be published under a seller and company name that is associated with the organization or company providing the services. In this case, the app must be published under a seller name and company name that reflects the Nigerian Shippers’ Council name.
The guideline 5.1.1(ix) requirements give users confidence that apps operating in highly regulated fields or that require sensitive user information are qualified to provide these services and will responsibly manage their data.
Next Steps
To resolve this issue, it would be appropriate to take the following steps:
The app must be published under a seller name and company name that reflects the Nigerian Shippers’ Council name. If you have developed this app on behalf of a client, you may resubmit the app through their account, if they have one. You may also request an update to the company name on your account by having the Account Holder edit the account information.
Please note that you cannot resolve this issue with documentation showing permission to publish this app on behalf of the content owner or institution.
Topic:
App Store Distribution & Marketing
SubTopic:
App Review
Hi
I'm developing an app that autofills Passkeys. The app allows the user to authenticate to their IdP to obtain an access token. Using the token the app fetches from <server>/attestation/options.
The app will generate a Passkey credential using a home-grown module - the extension has no involvement, neither does ASAuthorizationSecurityKeyPublicKeyCredentialProvider. I can confirm the passkey does get created.
Next the credential is posted to <server>/attestation/results with the response JSON being parsed and used to create a ASPasskeyCredentialIdentity - a sample of the response JSON is attached.
Here is my save function:
static func save(authenticator: AuthenticatorInfo) async throws {
guard let credentialID = Data(base64URLEncoded: authenticator.attributes.credentialId) else {
throw AuthenticatorError.invalidEncoding("Credential ID is not a valid Base64URL string.")
}
guard let userHandle = authenticator.userId.data(using: .utf8) else {
throw AuthenticatorError.invalidEncoding("User handle is not a valid UTF-8 string.")
}
let identity = ASPasskeyCredentialIdentity(
relyingPartyIdentifier: authenticator.attributes.rpId,
userName: authenticator.userId, // This is what the user sees in the UI
credentialID: credentialID,
userHandle: userHandle,
recordIdentifier: authenticator.id
)
try await ASCredentialIdentityStore.shared.saveCredentialIdentities([identity])
}
Although no error occurs, I don't get any identities returned when I call this method:
let identities = await ASCredentialIdentityStore.shared.credentialIdentities(
forService: nil,
credentialIdentityTypes: [.passkey]
)
Here is the Info.plist in the Extension:
<plist version="1.0">
<dict>
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>ASCredentialProviderExtensionCapabilities</key>
<dict>
<key>ProvidesPasskeys</key>
<true/>
</dict>
<key>ASCredentialProviderExtensionShowsConfigurationUI</key>
<true/>
</dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.authentication-services-credential-provider-ui</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).CredentialProviderViewController</string>
</dict>
</dict>
</plist>
The entitlements are valid and the app and extension both support the same group.
I'm stumped as to why the identity is not getting saved. Any ideas and not getting retrieved.
attestationResult.json
I'm developing a turn based game. When I present the GKTurnBasedMatchmakerViewController players can opt in for automatch instead of selecting a specific friend as opponent.
How exactly does the matching work if a player doesn't specify anything explicitly?
Does Game Center send push notifications in a round robin fashion to all friends and the first one to accept is then matched as opponent? Is this documented somewhere?
Hello, I just updated my Xcode to 26.2 and downloaded the relevant simulator for it to test how my app looks in general. I use the newest iPhone and mini version, in this case, iPhone 13 mini, and the SE (3rd generation).
Everything is working as expected, but for the iPhone mini simulator, this weird red line is showing. Is anyone having this issue?
Multiple notarization submissions have been stuck at
"In Progress" status for over 2 days with no resolution
or error:
4996643b-4512-4025-9648-028fbafca82f - submitted Jan 18
b6db6cd0-dad7-4a8e-b1fc-379467c1086d - submitted Jan 17
88f269c1-56ea-4404-98ba-edbe9a05b3d2 - submitted Jan 19
No logs available (notarytool log returns "not yet available"). The submissions were uploaded successfully and received submission IDs.
Is there a known issue with the notarization service?
Topic:
Code Signing
SubTopic:
Notarization
I. am working on an app that uses automounted files using nfsv4 where the server has zfs filesystems. As a test I've created a very simple example and the directory in question seems to automount correctly, but when I try to access it, I get strange behavior. The directory is mounted on is /System/Volumes/Data/mnt/subdir and I can change to that directory just fine. However I get the following:
63 rrsum@Anywhere:subdata% pwd
/System/Volumes/Data/mnt/subdata
64 rrsum@Anywhere:subdata% ls -la
total 3
drwxr-xr-x 3 nobody nobody 4 Jan 10 13:03 .
dr-xr-xr-x 3 root wheel 2 Jan 8 17:27 ..
drwxr-xr-x 2 nobody nobody 3 Jan 9 11:20 dir
-rw-r--r-- 1 nobody nobody 12 Jan 10 13:09 file.txt
65 rrsum@Anywhere:subdata% cd dir
cd: string not in pwd: ls
The directory appears in the 'ls -la' properly, but I cannot cd to it.
Keep getting an error saying the tester has 'an invalid name or email address and wasn't added'.
Never had this problem until maybe 1 - 2 days ago.
Please fix I am unable to publish new builds to my early access users.
Hi everyone,
We’re looking for advice regarding an App Store review rejection and would really appreciate insights from developers with similar experience.
Our app is a retro game emulator platform. It provides emulator functionality only (e.g. NES / GB / GBA emulation) and does NOT include, bundle, or download any game ROMs.
Key points about our app design:
❌ No ROMs are bundled or distributed
❌ No in-app ROM downloads
✅ Users can only import their own ROM files that they legally own (e.g. personal backups)
✅ No copyrighted game names, box art, screenshots, or branding are used
✅ The app is positioned as a general-purpose emulator tool, similar to a media player that plays user-provided files
However, during review we received the following rejection:
The app appears to contain copyrighted video game files.
Apps and their content should not infringe upon the rights of another party…
We’re confused about what might have triggered this decision and would appreciate guidance on:
On what basis Apple may conclude that the app “contains” copyrighted game files?
Could this be related to:
App screenshots or preview videos?
Default demo flows or UI text?
The emulator functionality itself?
What changes are typically required to pass review, such as:
Adding stronger legal disclaimers
Requiring user confirmation that imported ROMs are legally owned
Removing any potentially misleading UI wording
Explicitly clarifying ROM ownership responsibility
We’ve noticed that similar emulator apps already exist on the App Store, so we’re trying to understand:
Whether there is a clear compliance path
What modifications have worked for other developers in similar cases
Thanks a lot in advance for any advice or shared experience 🙏
Happy to provide more details if needed.