Post

Replies

Boosts

Views

Activity

This app is currently unavailable for Analytics
20 days passed since I released the app. According to Trends it has 30+ installs and 10 In-App purchases. When will I finally get analytics? Can't wait to see it, because I'm actively promoting my app and I wish to know the marketing performance. All that I see now in App Store Connect is this message: Other apps have no signs of this issue, I assume that the analytics is missing because the app is new. The question is "when"? :)
4
0
187
5d
Does Review team have a right to demand video?
The review team started to demand me to make a video of my app: We still need a demo video that shows a physical Apple device and the designated hardware pairing together and interacting during the use of the app. Provide a demo video that shows: The current version of the app in use on a physical Apple device, not on a simulator The initial pairing process between the app and the designated hardware The entire app workflow with the designated hardware Film the demo video to show both the designated hardware and the app running on a physical Apple device. The app is an extremely simple 1-button utility that starts a workout and broadcasts heart rate over Bluetooth. I believe it's way too much. It's a complicated task to film Apple Watch on my hand while also managing hardware (My Mac Book) and somehow operating camera simultaneously. I wonder if I can submit an appeal or replace that reviewer somehow.
5
0
218
1w
App availablitiy issue in New Zeland
Hello, help needed! I released an app to all 175 countries on March 5, 2026. However one of my testers notified me, that the app isn't shows up while being searched in New Zealand. I validated the issue. The US App Store link works: https://apps.apple.com/us/app/heartble-heart-rate-bluetooth/id6758879454 However, if I switch to New Zealand (in the footer on that web page) it navigates me to App Store home. Search results doesn't contain HeartBLE app: https://apps.apple.com/nz/iphone/search?term=HeartBLE Please, help! Should I create a feedback? Or maybe I missing something in the ASC setup?
1
0
101
Mar ’26
Metal debug log in Swift Package
My goal is to print a debug message from a shader. I follow the guide that orders to set -fmetal-enable-logging metal compiler flag and following environment variables: MTL_LOG_LEVEL=MTLLogLevelDebug MTL_LOG_BUFFER_SIZE=2048 MTL_LOG_TO_STDERR=1 However there's an issue with the guide, it's only covers Xcode project setup, however I'm working on a Swift Package. It has a Metal-only target that's included into main target like this: targets: [ // A separate target for shaders. .target( name: "MetalShaders", resources: [ .process("Metal") ], plugins: [ // https://github.com/schwa/MetalCompilerPlugin .plugin(name: "MetalCompilerPlugin", package: "MetalCompilerPlugin") ] ), // Main target .target( name: "MegApp", dependencies: ["MetalShaders"] ), .testTarget( name: "MegAppTests", dependencies: [ "MegApp", "MetalShaders", ] ] So to apply compiler flag I use MetalCompilerPlugin which emits debug.metallib, it also allows to define DEBUG macro for shaders. This code compiles: #ifdef DEBUG logger.log_error("Hello There!"); os_log_default.log_debug("Hello thread: %d", gid); // this proves that code exectutes result.flag = true; #endif Environment is set via .xctestplan and valideted to work with ProcessInfo. However, nothing is printed to Xcode console nor to Console app. In attempt to fix it I'm trying to setup a MTLLogState, however the makeLogState(descriptor:) fails with error: if #available(iOS 18.0, *) { let logDescriptor = MTLLogStateDescriptor() logDescriptor.level = .debug logDescriptor.bufferSize = 2048 // Error Domain=MTLLogStateErrorDomain Code=2 "Cannot create residency set for MTLLogState: (null)" UserInfo={NSLocalizedDescription=Cannot create residency set for MTLLogState: (null)} let logState = try! device.makeLogState(descriptor: logDescriptor) commandBufferDescriptor.logState = logState } Some LLMs suggested that this is connected with Simulator, and truly, I run the tests on simulator. However tests don't want to run on iPhone... I found solution running them on My Mac (Mac Catalyst). Surprisingly descriptor log works there, even without MTLLogState. But the Simulator behaviour seems like a bug...
1
1
754
Jan ’26
WidgetInfo - intent is nil until edit face
We have a watchOS app that provides many configurable widgets. Those widgets are configured and installed with help of AppIntent: public struct RectComplAppIntent: AppIntent, WidgetConfigurationIntent, CustomIntentMigratedAppIntent { @Parameter(title: "Style") var style: String? .... } However when I print WidgetInfos with getCurrentConfigurations(), I sometimes got nil for configuration. At the same time widgets are not loaded. Exact steps: User installs the pre-cofnigured .watchface. Complications are not loaded since configuration is missing. I print getCurrentConfigurations() and get entries like this: WidgetInfo: - configuration: nil - widgetConfigurationIntent: nil - family: accessoryRectangular - kind: Rectangle Then user force-touches a face and opens editing mode. Returns to watch app, prints infos: WidgetInfo: - configuration: <INIntent: 0x780d290> { style = vol1Logo; } - widgetConfigurationIntent: nil - family: accessoryRectangular - kind: Rectangle – Suddenly intent appears with the correct style and complications start to show up. How do you think, why it happens? Why after .watchface install all the WidgetInfo has nil intent (configuration)? What helps them to load later? You can try this face yourself: https://cdn.watchfaces.co/watchfaces/glance-minimalist.watchface
1
0
376
Mar ’25
Does DynamicOptionsProvider work on watchOS?
I'm curious, why DynamicOptionsProvider is available on watchOS? Is there any way to present options to the user? For example in Emoji Rangers project: struct EmojiRangerSelection: AppIntent, WidgetConfigurationIntent { static let intentClassName = "EmojiRangerSelectionIntent" static var title: LocalizedStringResource = "Emoji Ranger Selection" static var description = IntentDescription("Select Hero") @Parameter(title: "Selected Hero", default: EmojiRanger.cake, optionsProvider: EmojiRangerOptionsProvider()) var hero: EmojiRanger? struct EmojiRangerOptionsProvider: DynamicOptionsProvider { func results() async throws -> [EmojiRanger] { EmojiRanger.allHeros } } func perform() async throws -> some IntentResult { return .result() } } On watchOS we usually use recommendations() to give the user predefined choice of configured widgets. Meanwhile in AppIntentProvider recommendations are empty: struct AppIntentProvider: AppIntentTimelineProvider { ... func recommendations() -> [AppIntentRecommendation<EmojiRangerSelection>] { [] } } Does it imply that there's a way to use DynamicOptionsProvider on watchOS somehow? BTW, WidgetConfiguration.promptsForUserConfiguration() is one of the methods that are not available on watchOS. And also, the Emoji Ranger project doesn't show widgets (complications) on watchOS out of the box.
0
2
389
Mar ’25
Pay attention to StoreKit Configuration settings
It's not a question, I just want to share my experience of resolving a bug. We where adding a new product to the app and couldn't get why it's not loading. StoreKit 2 simply did not return the product, so we switched to StoreKit 1 to get invalidProductIdentifiers from the response. The product was there of course. So many time was spend... We checked App Store configuration, everything was approved. Checked id, localization, multiple devices. Everyone start to get mad, we filled issues for RevenueCat and Apple. Then we uploaded a TF build (because product wasn't loading when running from Xcode). And, suddenly the product did appear there! I understood that it can be connected to StoreKit Configuration, since it works only in debugger mode (Debug or Release), but not in TF. But there was no any .storekit files in the project folder. I search it many times - no success. And finally the bug was resolved when I checked Run Scheme. As you can see on the screenshot, it has red value under StoreKit Configuration. That means there where a file before, but than it was removed. So I changed it to None and the product started to work in debug. Great! I hope this post helps, don't fall to the same error as me! Related article: Setting up StoreKit Testing in Xcode
0
0
800
Jul ’24
Extract metadata from a .watchface
Hello, fellow developers! How would you approach .watchface file to extract it's metadata? I need to know in which version of the app the face was created, to prompt the user to update the app if necessary. Looking at binary I suppose that a .watchface file consists of a PNG previews and JSON metadata and it all packed in one file somehow. Probably archived with gzip.
0
0
661
Jul ’24
Xcode Preview Broken
On May 1 I started to see this image instead of watch UI preview. It worked well before. I didn't update Xcode, neither I deleted or installed any new simulator OS. It was harmful to my work, since simulator download is 4GB and I need to wait when it downloads, instead of reviewing PRs and closing tasks. Did anyone had the same issue? Do you know how to prevent it?
2
0
1k
May ’24
Search app by bundleID - PARAMETER_ERROR.ILLEGAL
Trying to get the relevant app (it exists and published) by this endpoint: https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/app Receiving error 404: "errors" : [ { "id" : "ec7b1469-fe54-4ad5-9f2b-f665c31a6358", "status" : "404", "code" : "PATH_ERROR_REALTIONSHIP", "title" : "The URL path is not valid", "detail" : "The relationship 'app' does not exist on resource 'bundleIds'" } ] Doing everything according to documentation. Tried to pass both Bundle ID id and Bundle ID itself. What could be the problem?
1
0
799
Apr ’24
How to reduce complication extension executable size?
Hello! I'm working on the watchOS app that provides user with multiple fancy complication sets. There are about 50 widgets in our WidgetBundle now. With this amount we reached memory limit and the app crashes: Thread 1: EXC_RESOURCE (RESOURCE_TYPE_MEMORY: high watermark memory limit exceeded) (limit=15 MB) I inspected complicationExtension.appex content and find out that most volume is occupied by the executable: Localized strings (12 langs) altogether - 165 KB Assets.car - 1.1 MB Imported fonts TTF files altogether - 866 KB complicationsExtension executable file - 8.2 MB Why it takes so much space and how can it be made smaller?
8
0
2.2k
Feb ’24
This app is currently unavailable for Analytics
20 days passed since I released the app. According to Trends it has 30+ installs and 10 In-App purchases. When will I finally get analytics? Can't wait to see it, because I'm actively promoting my app and I wish to know the marketing performance. All that I see now in App Store Connect is this message: Other apps have no signs of this issue, I assume that the analytics is missing because the app is new. The question is "when"? :)
Replies
4
Boosts
0
Views
187
Activity
5d
How does Associated Domains Development works on watchOS?
How does Associated Domains Development work on watchOS? In comparison, on iOS we have Diagnostics menu that allows to input a link and test the setup. How to achieve the same on a watch? watchOS: iOS:
Replies
5
Boosts
0
Views
195
Activity
1w
Does Review team have a right to demand video?
The review team started to demand me to make a video of my app: We still need a demo video that shows a physical Apple device and the designated hardware pairing together and interacting during the use of the app. Provide a demo video that shows: The current version of the app in use on a physical Apple device, not on a simulator The initial pairing process between the app and the designated hardware The entire app workflow with the designated hardware Film the demo video to show both the designated hardware and the app running on a physical Apple device. The app is an extremely simple 1-button utility that starts a workout and broadcasts heart rate over Bluetooth. I believe it's way too much. It's a complicated task to film Apple Watch on my hand while also managing hardware (My Mac Book) and somehow operating camera simultaneously. I wonder if I can submit an appeal or replace that reviewer somehow.
Replies
5
Boosts
0
Views
218
Activity
1w
App availablitiy issue in New Zeland
Hello, help needed! I released an app to all 175 countries on March 5, 2026. However one of my testers notified me, that the app isn't shows up while being searched in New Zealand. I validated the issue. The US App Store link works: https://apps.apple.com/us/app/heartble-heart-rate-bluetooth/id6758879454 However, if I switch to New Zealand (in the footer on that web page) it navigates me to App Store home. Search results doesn't contain HeartBLE app: https://apps.apple.com/nz/iphone/search?term=HeartBLE Please, help! Should I create a feedback? Or maybe I missing something in the ASC setup?
Replies
1
Boosts
0
Views
101
Activity
Mar ’26
Metal debug log in Swift Package
My goal is to print a debug message from a shader. I follow the guide that orders to set -fmetal-enable-logging metal compiler flag and following environment variables: MTL_LOG_LEVEL=MTLLogLevelDebug MTL_LOG_BUFFER_SIZE=2048 MTL_LOG_TO_STDERR=1 However there's an issue with the guide, it's only covers Xcode project setup, however I'm working on a Swift Package. It has a Metal-only target that's included into main target like this: targets: [ // A separate target for shaders. .target( name: "MetalShaders", resources: [ .process("Metal") ], plugins: [ // https://github.com/schwa/MetalCompilerPlugin .plugin(name: "MetalCompilerPlugin", package: "MetalCompilerPlugin") ] ), // Main target .target( name: "MegApp", dependencies: ["MetalShaders"] ), .testTarget( name: "MegAppTests", dependencies: [ "MegApp", "MetalShaders", ] ] So to apply compiler flag I use MetalCompilerPlugin which emits debug.metallib, it also allows to define DEBUG macro for shaders. This code compiles: #ifdef DEBUG logger.log_error("Hello There!"); os_log_default.log_debug("Hello thread: %d", gid); // this proves that code exectutes result.flag = true; #endif Environment is set via .xctestplan and valideted to work with ProcessInfo. However, nothing is printed to Xcode console nor to Console app. In attempt to fix it I'm trying to setup a MTLLogState, however the makeLogState(descriptor:) fails with error: if #available(iOS 18.0, *) { let logDescriptor = MTLLogStateDescriptor() logDescriptor.level = .debug logDescriptor.bufferSize = 2048 // Error Domain=MTLLogStateErrorDomain Code=2 "Cannot create residency set for MTLLogState: (null)" UserInfo={NSLocalizedDescription=Cannot create residency set for MTLLogState: (null)} let logState = try! device.makeLogState(descriptor: logDescriptor) commandBufferDescriptor.logState = logState } Some LLMs suggested that this is connected with Simulator, and truly, I run the tests on simulator. However tests don't want to run on iPhone... I found solution running them on My Mac (Mac Catalyst). Surprisingly descriptor log works there, even without MTLLogState. But the Simulator behaviour seems like a bug...
Replies
1
Boosts
1
Views
754
Activity
Jan ’26
Why there's no rgb32Float in Metal?
I noticed that MTLPixelFormat has this cases: case r32Float = 55 case rg32Float = 105 case rgba32Float = 125 But no case rgb32Float. What's the reason for such a discrimination?
Replies
1
Boosts
0
Views
287
Activity
Jan ’26
How to edit a question?
I posted a question 7 days ago and now it looks like I can't edit or delete it.
Replies
3
Boosts
0
Views
177
Activity
Mar ’25
WidgetInfo - intent is nil until edit face
We have a watchOS app that provides many configurable widgets. Those widgets are configured and installed with help of AppIntent: public struct RectComplAppIntent: AppIntent, WidgetConfigurationIntent, CustomIntentMigratedAppIntent { @Parameter(title: "Style") var style: String? .... } However when I print WidgetInfos with getCurrentConfigurations(), I sometimes got nil for configuration. At the same time widgets are not loaded. Exact steps: User installs the pre-cofnigured .watchface. Complications are not loaded since configuration is missing. I print getCurrentConfigurations() and get entries like this: WidgetInfo: - configuration: nil - widgetConfigurationIntent: nil - family: accessoryRectangular - kind: Rectangle Then user force-touches a face and opens editing mode. Returns to watch app, prints infos: WidgetInfo: - configuration: <INIntent: 0x780d290> { style = vol1Logo; } - widgetConfigurationIntent: nil - family: accessoryRectangular - kind: Rectangle – Suddenly intent appears with the correct style and complications start to show up. How do you think, why it happens? Why after .watchface install all the WidgetInfo has nil intent (configuration)? What helps them to load later? You can try this face yourself: https://cdn.watchfaces.co/watchfaces/glance-minimalist.watchface
Replies
1
Boosts
0
Views
376
Activity
Mar ’25
Does DynamicOptionsProvider work on watchOS?
I'm curious, why DynamicOptionsProvider is available on watchOS? Is there any way to present options to the user? For example in Emoji Rangers project: struct EmojiRangerSelection: AppIntent, WidgetConfigurationIntent { static let intentClassName = "EmojiRangerSelectionIntent" static var title: LocalizedStringResource = "Emoji Ranger Selection" static var description = IntentDescription("Select Hero") @Parameter(title: "Selected Hero", default: EmojiRanger.cake, optionsProvider: EmojiRangerOptionsProvider()) var hero: EmojiRanger? struct EmojiRangerOptionsProvider: DynamicOptionsProvider { func results() async throws -> [EmojiRanger] { EmojiRanger.allHeros } } func perform() async throws -> some IntentResult { return .result() } } On watchOS we usually use recommendations() to give the user predefined choice of configured widgets. Meanwhile in AppIntentProvider recommendations are empty: struct AppIntentProvider: AppIntentTimelineProvider { ... func recommendations() -> [AppIntentRecommendation<EmojiRangerSelection>] { [] } } Does it imply that there's a way to use DynamicOptionsProvider on watchOS somehow? BTW, WidgetConfiguration.promptsForUserConfiguration() is one of the methods that are not available on watchOS. And also, the Emoji Ranger project doesn't show widgets (complications) on watchOS out of the box.
Replies
0
Boosts
2
Views
389
Activity
Mar ’25
CloudKit High Latency
Is it ok to have latency about 4 sec? The amount of downloaded data is less than 1 MB. Maybe I need to setup an index for every field requested?
Replies
1
Boosts
0
Views
657
Activity
Dec ’24
Pay attention to StoreKit Configuration settings
It's not a question, I just want to share my experience of resolving a bug. We where adding a new product to the app and couldn't get why it's not loading. StoreKit 2 simply did not return the product, so we switched to StoreKit 1 to get invalidProductIdentifiers from the response. The product was there of course. So many time was spend... We checked App Store configuration, everything was approved. Checked id, localization, multiple devices. Everyone start to get mad, we filled issues for RevenueCat and Apple. Then we uploaded a TF build (because product wasn't loading when running from Xcode). And, suddenly the product did appear there! I understood that it can be connected to StoreKit Configuration, since it works only in debugger mode (Debug or Release), but not in TF. But there was no any .storekit files in the project folder. I search it many times - no success. And finally the bug was resolved when I checked Run Scheme. As you can see on the screenshot, it has red value under StoreKit Configuration. That means there where a file before, but than it was removed. So I changed it to None and the product started to work in debug. Great! I hope this post helps, don't fall to the same error as me! Related article: Setting up StoreKit Testing in Xcode
Replies
0
Boosts
0
Views
800
Activity
Jul ’24
Extract metadata from a .watchface
Hello, fellow developers! How would you approach .watchface file to extract it's metadata? I need to know in which version of the app the face was created, to prompt the user to update the app if necessary. Looking at binary I suppose that a .watchface file consists of a PNG previews and JSON metadata and it all packed in one file somehow. Probably archived with gzip.
Replies
0
Boosts
0
Views
661
Activity
Jul ’24
Xcode Preview Broken
On May 1 I started to see this image instead of watch UI preview. It worked well before. I didn't update Xcode, neither I deleted or installed any new simulator OS. It was harmful to my work, since simulator download is 4GB and I need to wait when it downloads, instead of reviewing PRs and closing tasks. Did anyone had the same issue? Do you know how to prevent it?
Replies
2
Boosts
0
Views
1k
Activity
May ’24
Search app by bundleID - PARAMETER_ERROR.ILLEGAL
Trying to get the relevant app (it exists and published) by this endpoint: https://api.appstoreconnect.apple.com/v1/bundleIds/{id}/app Receiving error 404: "errors" : [ { "id" : "ec7b1469-fe54-4ad5-9f2b-f665c31a6358", "status" : "404", "code" : "PATH_ERROR_REALTIONSHIP", "title" : "The URL path is not valid", "detail" : "The relationship 'app' does not exist on resource 'bundleIds'" } ] Doing everything according to documentation. Tried to pass both Bundle ID id and Bundle ID itself. What could be the problem?
Replies
1
Boosts
0
Views
799
Activity
Apr ’24
How to reduce complication extension executable size?
Hello! I'm working on the watchOS app that provides user with multiple fancy complication sets. There are about 50 widgets in our WidgetBundle now. With this amount we reached memory limit and the app crashes: Thread 1: EXC_RESOURCE (RESOURCE_TYPE_MEMORY: high watermark memory limit exceeded) (limit=15 MB) I inspected complicationExtension.appex content and find out that most volume is occupied by the executable: Localized strings (12 langs) altogether - 165 KB Assets.car - 1.1 MB Imported fonts TTF files altogether - 866 KB complicationsExtension executable file - 8.2 MB Why it takes so much space and how can it be made smaller?
Replies
8
Boosts
0
Views
2.2k
Activity
Feb ’24