Hi everyone,
I’m developing a screen-time and focus app that uses Apple’s Family Controls framework to block distracting apps and reward users through a gamified experience.
Apple approved Family Controls (Distribution) for the main app identifier,
but they did not approve the required extension target (which implements DeviceActivityMonitor, required for the framework to function).
Because of this, I can’t archive or upload the app to TestFlight — and I’ve been stuck in limbo for over 2 months.
This is severely delaying my launch. The app works perfectly, but I can’t release it because the extension wasn’t included in the entitlement approval.
Has anyone else run into this with Family Controls?
Is there any known way to escalate or fast-track approval for additional app IDs or targets?
Would really appreciate any help, advice, or hacks. 🙏
Thanks,
Enzer
General
RSS for tagDelve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
At WWDC25 we launched a new type of Lab event for the developer community - Group Labs. A Group Lab is a panel Q&A designed for a large audience of developers. Group Labs are a unique opportunity for the community to submit questions directly to a panel of Apple engineers and designers. Here are the highlights from the WWDC25 Group Lab for watchOS (part 2).
7. For widget (complication) update budgets, is there an overall budget or are scheduled update separate from APNS updates? For context I have a complication that is updated on a fixed schedule (every 20 min), but there can be times of the day that are more "interesting" where pushes make sense.
Like timeline updates, the system budgets WidgetKit push notifications and delivers them opportunistically. You can use WidgetKit push notification updates as an addition to timeline updates. For more information, see Updating widgets with WidgetKit push notifications.
8. It seems like the new Control Center widgets can be sourced from either the iPhone or directly on the Watch. Can we control whether a control appears in the watch list, or will it always be a combination of all controls from both sources?
iPhone controls will be automatically available on the companion Apple Watch, even if they don’t have an associated watchOS app. When an iPhone control is tapped on the Apple Watch, the action is performed on the iPhone. Controls whose actions foreground the iOS app will not appear on Apple Watch.
If a watchOS app has controls, no controls will appear on Apple Watch from the companion iOS app.
9. From UI/UX perspective, what are the current practices for Designing watchOS apps that feels native.
The WWDC23 session Design and build apps for WatchOS 10 covers the details of watchOS design principles and how to apply them in your app using SwiftUI. A lot of SwiftUI APIs, such as NavigationSplitView, vertical tab view, list view, and etc, already implement the look and feel native to watchOS.
10. When adopting the new design system on watchOS, it seems like the main place we will use the glass effect is for our buttons in toolbar? Standard buttons in system apps seem to continue to use a flat appearance and full width.
We leave the choice to you – You can use the new GlassButtonStyle API or .buttonStyle(.glass) to apply the liquid glass material to buttons.
Learn when to use the Liquid Glass styles in Get to know the new design system.
11. Is there any way to gracefully migrate extensions when their bundleIDs have to change? e.g., converting a multi-target watch app to single-target, which drops the .watchkitextension from both the app and WidgetKit ext bundleIDs
Updating a watchOS app to single-target is covered in TechNote TN3157: Updating your watchOS project for SwiftUI and WidgetKit. Xcode provides a tool that can do the update automatically, and the technote describes the details about how to use it and how to clean up the project after the automatic update. If there's something that technote doesn't address, please reach out to us on the Developer Forums.
12. What is the status of WatchConnectivity? Is that still the preferred way for iOS + watchOS communications?
The Watch Connectivity framework is still supported, and is appropriate for the communication between an watchOS app and its companion iOS app.
The systems also provide other APIs for the apps to exchange data. For example, watchOS supports Apple Push Notification service (APNs). If data for your widget changes on your server, your widget can receive a WidgetKit push notification, and update accordingly. That’s the preferred mechanism for widget updates.
I am still struggling to nail down the screen time between monitoring and showing it in a DeviceActivityReport. It's always off by a couple of percentage points, which results in a difference of a couple of minutes between the time shown for my total screen time in DeviceActivityReport and DeviceActivityMonitor with a threshold set for all apps/websites/categories.
In the report, I am looping through all segment (there is only 1 segement using .daily segment interval for a given day) then loop through all categories and all apps within each category and sum up all totalActivityDuration for each app. Based on avaiable documentation, that should corrolate to DeviceActivityMonitor threshold but it doesn't. Are there any differences in how these 2 places count screen time? Are there any apps/core ios services which are excluded from DeviceActivityMonitor. Would appreciate any help at all, I'm losing my mind here.
My current suspicion is that Apple Developer documentation is counted twice. i.e. this website https://developer.apple.com/documentation/deviceactivity/deviceactivitymonitor shows up in usage as an App with bundleId of apple.developer.wwdc-release and time spent there is counted twice, against this bundleId AND Safari. I don't know why it's not counted as a webdomain.
Is there any way to use the screen time API on Mac?
I'd like to set the recordingYear in my Spotlight File Importer extension but the property is missing from CSSearchableItemAttributeSet
e.g. in the resulting in mdls I'd like to see:
kMDItemRecordingYear = 2008;
This would allow me to search in Finder by the recording year criteria.
There is a recordingDate property and I tried setting it to Date that only has a year but it didn't work. It just resulted in this:
kMDItemRecordingDate = "2008-01-01 00:00:00 +0000";
Hi Apple Dev community,
I want to ask if CallKit and CXCallDirectoryProvider (with addBlockingEntryWithNextSequentialPhoneNumber) doesn't work for 3rd party Phone apps.
Is this a known issue that CallKit doesn't work on 3rd party iOS Phone apps (like WhatsApp, etc)?
Thank you.
I changed the AppIcon in Images.xcassets,and distribute a new version on appstore;The icon have changed on the desktop, but elsewhere, such as when switching between apps, the top left corner shows the old version of the icon.When I restart my phone,the top left corner show the new version of the icon;My phone is iPhone 13 Pro Max,iOS 18.4.1;Is there other ways to resolve the problem without restart the phone?
Topic:
App & System Services
SubTopic:
General
Hello,
I’m currently reviewing and implementing age assurance and parental approval flows using AgeRangeService and PermissionKit (AskCenter) in the context of Texas regulatory compliance requirements.
While the high-level APIs are clear, there are several technical aspects where the intended usage patterns are not fully explicit in the documentation. Clarification on these points would help ensure our implementation aligns with system expectations and regulatory obligations.
⸻
Querying the current approval state for SignificantAppUpdateTopic
AskCenter.ask(...) returns Void, and AskCenter.responses(for:) provides an AsyncSequence of approval events.
Is there an official or recommended way to determine whether a SignificantAppUpdateTopic has already been approved when the app launches, or is listening for future responses events the only supported mechanism?
⸻
Behavior of AskCenter.responses(for:) regarding past approvals
When subscribing to AskCenter.responses(for:):
• Does the stream replay previously recorded approval or decline decisions?
• Or does it only emit events that occur after subscription?
This affects whether the listener must be registered early in the app lifecycle.
⸻
Recommended lifecycle timing for registering a responses(for:) listener
What is the intended or recommended time to register a responses(for:) listener?
• At application launch
• Immediately before calling ask(...)
• When entering a specific gated feature
Clarification on the expected lifecycle usage would be helpful.
⸻
Repeated calls to ask(...) after approval
If AskCenter.ask(...) is called again for the same SignificantAppUpdateTopic after parental approval has already been granted:
• Is the request ignored?
• Is a new approval request sent to the parent?
• Or is the call handled idempotently by the system?
⸻
Delivery of approval results when the child app is not running
If a parent approves or declines a SignificantAppUpdateTopic while the child app is not running:
• Will the approval decision be delivered as a responses(for:) event on the next app launch?
• Or is the app expected to persist approval state locally?
⸻
Persistence of approval state
Is the approval decision for SignificantAppUpdateTopic persisted by the system at the OS level, or is the app responsible for storing approval state?
Additionally, does the approval persist across:
• app restarts?
• app deletion and reinstallation?
⸻
Meaning of activeParentalControls.significantAppChangeApprovalRequired
How is activeParentalControls.significantAppChangeApprovalRequired determined?
• Is this value explicitly configured by a parent (for example via Screen Time)?
• Or is it automatically determined by the system based on region, age, or regulatory requirements?
⸻
Relationship between significantAppChangeApprovalRequired and AgeRangeService
When activeParentalControls contains significantAppChangeApprovalRequired, is it still expected that apps call AgeRangeService.requestAgeRange(...)?
Or can the presence of this flag be treated as sufficient indication that the user is a minor for gating purposes?
⸻
Recommended interpretation of AgeRangeDeclaration
Is the intended usage of AgeRangeDeclaration to handle each case individually, or is it acceptable and recommended to interpret the values as different trust levels (for example, self-declared vs. government ID or payment verified)?
⸻
Clarification on these points would help ensure that implementations of age assurance and parental approval flows are consistent with system behavior while meeting regulatory compliance requirements.
Thank you for your guidance.
My CoreSpotlight extension seems to exceed the 6 MB memory limit. What’s the best way to debug this?
I've tried to attach the debugger on the Simulator but the extension seems to be never launched when I trigger the reindex from Developer settings. Is this supposed to work?
On device, I am able to attach the debugger. However, I can neither transfer the debug session to Instruments, nor display the memory graph. So I've no idea how the memory is used.
Any recommendations how to move forward? Is there a way to temporarily disable the memory limit since even with LLDB attached, the extension is killed.
I’m testing FinanceKit with Apple Cash and noticed that transfers don’t include any counterparty information.
Here’s an example transaction I fetched:
Transaction(
id: 5A96EA49-B7C9-4481-949D-88247210C1D7,
accountID: 28D7C0E2-DC2A-4138-B105-BCE5EE00B705,
transactionAmount: 30 USD,
creditDebitIndicator: .credit,
transactionDescription: "Transfer",
originalTransactionDescription: "",
merchantCategoryCode: nil,
merchantName: nil,
transactionType: .transfer,
status: .booked,
transactionDate: 2025-08-19 21:57:54 +0000,
postedDate: 2025-08-19 21:57:55 +0000
)
As you can see:
transactionDescription is just "Transfer"
originalTransactionDescription is empty
merchantName is nil
No counterparty details are exposed
In contrast, the Wallet app clearly shows the other person’s name and avatar for Apple Cash transfers, making it easy to understand who the payment was with. In FinanceKit, there’s no way to distinguish between transfers with different people — every transfer looks identical.
Questions
Is there a hidden or planned field for Apple Cash counterparty information?
Can FinanceKit provide at least minimal metadata (e.g., contact name, initials, or a privacy-preserving identifier)?
Is there any workaround today to correlate Apple Cash transfers with contacts?
Feature request: Please expose counterparty information for Apple Cash transfers. Even something as simple as a stable identifier or name string would enable developers to build Wallet-quality transaction detail screens.
Thanks!
Topic:
App & System Services
SubTopic:
General
Goal: Manually install an explicit version of Rosetta2
Background:
Me and some customers have an old app (intel) which perfectly worked with Rosetta2. In the last week of April most macheines were updated to Mac Os 15.4.1. and the app still starts but certain functionality is bronken. Some fields ind the forms don't write back to the database, some data can't be read from the database.
(Most installations will fade out over the next month but it would be great to have the app fully working for data migration.)
First try was to step back to 15.4. (Clean Install - Install App - Rosetta installs as expected): no change, app still broken
Second try back to 15: (Clean Install - Install App - Rosetta installs as expected): App still broken (!) This is interesting as the app worked for month using Mac Os 15!
Third try: Back to MacOS 14 (Clean Install - Install App - Rosetta installs as expected): App is working like nothing happend.
(All attempts on same hardware of course.)
Reasoning:
Rosetta2 was the only software (besides the app itself) installed after clean MacOS installs. Now, my guess is that there were might be a change in Rosetta2 as the app worked on MacOs 15 up the update 15.4.1. was installed.
Checking versions (pkgutil --pkg-info com.apple.pkg.RosettaUpdateAuto):
Rosetta version MacOS 14: 1.0.0.0.1.1722778371
Rosetta version on MacOS 15.4.1: 1.0.0.0.1.1744447383
To fully verify the cause it would be great to uninstall Rosetta on MacOS15.4.1 machine and explicit install lower version (1.0.0.0.1.1722778371) which must be available somewhere as MacOS14 still gets this version.
I know how to uninstall - is there a possibility to manually install an explicit version of Rosetta2?
Topic:
App & System Services
SubTopic:
General
Hi everyone,
I'm working on an app for parents and kids where parents can define screen time goals or restrict usage of certain app categories (like social media or games). If the kid follows those rules—for example, by using their device less or avoiding restricted categories—they would earn points or rewards in the app.
I’ve been exploring if the Apple Screen Time API allows developers to access this kind of data (like total screen time, app usage by category, etc.) so that I can track the kid’s behavior and reward them accordingly.
Is it possible to programmatically access this data and implement such a reward system within my app? If so, what’s the best way to get started or which APIs should I look into?
Thanks in advance for your help!
where can we find documentation on the following fields included in payloads? They're not listed alongside the other fields in the documentation linked below:
https://developer.apple.com/documentation/weatherkitrestapi/hourweatherconditions
precipitationIntensity
snowfallAmount
Or if we can get the data type, unit used, and description here that would be great
We have an iOS/iPadOS (mixed use of UIKit/SwiftUI) app on the App Store since a couple of years.
Over the last month or so, we are receiving many user reports complaining about app freezing and behaving very bad generally. The common denominator for all of these users (~10) is that they are using iPad Pro M4, 13 inch, and they are on at least iPadOS 26.2 - some have updated to 26.2.1, 26.3 etc but the problems remain. Some of the users say that they were using our app normally, until the release of 26.2, or perhaps 26.2.1, from when the problems seem to have started.
Some report the problems that go away when they "use another WiFi", or when they hold the device in portrait mode (it seems that many complaints seem to suggest that the problem is in when holding the device in landscape). Other say the app works fine if they start it without network enabled, and after enabling network, continue in the app.
While we currently do not have an iPad Pro M4 13 inch to test with, we haven't been able to reproduce the problem on any other device.
We haven't heard of any similar problems from users of other devices.
While we have no idea what is causing these problems, my feeling is that there might be a possibility that there is some kind of problem with iPad Pro M4 and the recent iPadOS versions.
Just reaching out to see if anyone else have seen anything similar.
I am getting bug reports from users that occasionally the AlarmKit alarms scheduled by my app are going off exactly at midnight.
In my app, users can set recurring alarms for sunrise/sunset etc. I implement this as fixed schedule alarms over the next 2-3 days with correct dates pre-computed at schedule time. I have a background task which is scheduled to run at noon every day to update the alarms for the next 2-3 days.
Are there any limitations to the fixed schedule which might be causing this unintended behavior of going off at midnight?
I'm using FamilyActivityPicker to get consent for app/category management, which returns a FamilyActivitySelection object.
I serialize this FamilyActivitySelection object (just applicationTokens and categoryTokens) and pass it to my DeviceActivityMonitor extension via App Group UserDefaults. I am using the JSON encoder/decoder over PropertyList (though both seem to exhibit the same behavior).
After inspecting the FamilyActivitySelection object immediately after it's returned by FamilyActivityPicker in the main app, the application.bundleIdentifier property is consistently nil for every Application object within selection.applications. Similarly, category.localizedDisplayName is nil for ActivityCategory objects. This happens whether "Select All Apps" is used or if apps/categories are selected individually.
I understand that this is the intended behavior due to Apple's user privacy policies. I read on another post that my app can be provided with bundle identifiers and app names within Shield Configuration extensions and Device Activity Report extensions - I'm not sure which ones or how exactly to do this.
I am aware that I can use Label(applicationToken) SwiftUI view to display the app name/icon, but this doesn't give programmatic access to the bundleIdentifier string.
My app will not log or export these bundleIdentifiers outside of its sandbox. My goal is to create mappings to the FamilyActivitySelection with the publicly accessible bundleIdentifiers.
Any guidance, examples, or clarification on the intended workflow for this scenario would be greatly appreciated!
We integrated DeviceCheck framework into our app to prevent fraudulent call to our app service around one year ago.
Recently, we received a few cases related to this function over Christmas Eve period.
Based on the logs we have, it indicated both the following two functions returned errors. But we don't have the exactly errors logged and now we cannot replicate.
DCAppAttestService.shared.attestKey()
DCAppAttestService.shared.generateAssertion()
The other finding we have is some users reporting this issue recently upgraded their devices from iOS 18 to iOS 26.
So we are suspecting it's due to either the OS upgrading, or Apple's app attest service degrading.
Anyone encountered the similar issues before, or have any idea regarding the root cause? Thanks!
After a user has launched an App Clip Experience from Safari and is done with the activity that the App Clip provides – is there a way for the App Clip to programatically close itself so the user returns to Safari?
Hey Im currently trying to use the weatherkit API and Im seeing the following returned:
{"reason": "OVER_QUOTA"}
Im using the correct service, key and bundle ID.
Ive generated a private key too.
reposting this in case it got missed the first time around here
https://developer.apple.com/forums/thread/775900
We had a question that came up when we comparing data from WeatherKit to other sources - WeatherKit visibility was well beyond the boundaries we had historically, even from Darksky. That raises two questions:
is visibility actually in meters like the docs say?
is this visibility at ground level, 500ft, or some other height?
We were seeing visibility numbers of up to 40 miles (after converting the number the API sent to miles), where all of our other sources are usually within 10 miles