Navigate the App Store landscape. Share strategies for app submission, distribution, marketing, and user acquisition. Discuss best practices for getting your app discovered and downloaded.

All subtopics
Posts under App Store Distribution & Marketing topic

Post

Replies

Boosts

Views

Activity

TestFlight build appears but will not install on device (“The requested app is not available or doesn’t exist”)
Hi everyone, I’m preparing an updated version of my older game Plum Nut so I can eventually return it to the App Store. I’ve uploaded a new build (1.1 build 8) and it shows up correctly in TestFlight for beta testing. However, when I try to install it on a supported device (iPad Pro 2020, iOS), I get this popup: “Could not install Plum Nut. The requested app is not available or doesn’t exist.” The build is processed and available in TestFlight, but installation always fails with this message. I have several games that install fine on TestFlight. This is the first and only case and time where I have encountered this. Details: Platform: iOS Build: 1.1 (8) TestFlight status: Available for testing Issue first occurred: Nov 18, 2025 I contacted Apple Developer Support, but they directed me to the forums for technical guidance. If anyone has encountered this issue or has suggestions on what might cause it, I would be very grateful for any insight. Thank you! — Rob / Protopop Games
0
0
40
11h
Sign in with Apple error reported by App Review, but impossible to reproduce (iPadOS 26.1)
Hi everyone, I’m currently facing a blocking issue during App Review, and I’d really appreciate some help from anyone who has experienced something similar. My app was rejected under Guideline 2.1 – App Completeness with the following message: “An error message appeared after trying to Sign in with Apple. Device: iPad Air (5th generation), iPadOS 26.1.” The problem is: I cannot reproduce this bug at all, even when testing under the same conditions. ✔ What I tested: Physical iPad Air M2 on iPadOS 26.1 Physical iPhone devices iOS/iPadOS simulators (latest Xcode) TestFlight build (clean install) Debug build installed via Xcode (device connected) In every case, Sign in with Apple works correctly: Authentication sheet displays properly Callback returns the credential User is created/logged in without error No crash, no rejected promise, no empty credential ✔ Environment Using ASAuthorizationAppleIDProvider + ASAuthorizationController Default Apple Sign In button No custom nonce/redirect modifications No backend processing at login (client-side only) Works 100% on iPhone and iPad on my side ✔ Additional context The app review team also noted a second point: They couldn’t locate a secondary subscription paywall, which is displayed only after dismissing the first paywall. I already clarified this with them, but I'm mentioning it in case it's related to the Sign in with Apple issue — maybe something in the sandbox environment is causing unexpected UI behavior. ❓ My question Has anyone already seen Sign in with Apple fail ONLY for the App Review team, while: It works in TestFlight It works via Xcode installs It works on the same OS version It works on the same hardware Could it be an issue related to: Sandbox Apple ID? iPadOS 26.1 on App Review internal builds? Reviewers blocking popup presentation context? Missing entitlement although everything is configured correctly? Presentation anchor issues specific to iPad? Any help or ideas would be greatly appreciated. I’ve been trying to reproduce this bug for hours without success, so any insight is welcome. Thanks!
0
0
87
20h
Remove support for ipad issue
Hi, I uploaded my app to TestFlight and released but mistakenly enabled support for iPads. However, the app does not support iPads, and whenever I submit it for approval, the App Store rejects it due to design issues. When I disable iPad support and re-upload it to TestFlight, I get an error stating that it does not support the previously uploaded platforms. Can anyone please guide me how can i disable it any way around?
3
0
161
22h
DeclaredAgeRange framework new cases and properties cause runtime crash with missing symbol
I'm making a wrapper library to abstract away some of the 'missing platform support' of DeclaredAgeRange until hopefully it expands to additional platforms. When I'm trying to fully enumerate all of the cases of AgeRangeDeclaration, which they all state available starting 26.0 (mysteriously added in Xcode 26.2 beta), the app crashes due to a missing symbol at launch time. This happens both for Xcode 26.1, 26.2 beta 2, and matching Xcode Cloud builds. So I've isolated it beyond "doesn't work on my machine". I just made a handful of crashes and attached a sysdiagnose to a fresh feedback. FB21121092 - DeclaredAgeRange: Eligibility property and new declaration cases unavailable on iOS 26.1 device contradicting documentation - causes runtime symbol not found crash If anyone is curious what these crashes look like I've attached the DiagnosticPayload.jsonRepresentation() generated from one of my favorite frameworks, MetricKit. Very clearly articulated in the diagnostic metadata you can see the symbol not found. "diagnosticMetaData" : { "platformArchitecture" : "arm64e", "terminationReason" : "Symbol not found: _$s16DeclaredAgeRange0bC7ServiceV0bC11DeclarationO14paymentCheckedyA2EmFWC\nReferenced from: <1894EDCB-3263-3604-8938-97D465FF3720> \/Volumes\/VOLUME\/*\/PerformanceOrganizer.app\/PerformanceOrganizer\nExpected in: <B8FD2C23-0CC9-3D94-902D-875900307A7A> \/System\/Library\/Frameworks\/DeclaredAgeRange.framework\/DeclaredAgeRange", "exceptionType" : 10, "appBuildVersion" : "745", "isTestFlightApp" : true, "osVersion" : "iPhone OS 26.1 (23B85)", "bundleIdentifier" : "dev.twincitiesapp.performanceorganizer", "deviceType" : "iPhone18,1", "exceptionCode" : 0, "signal" : 6, "regionFormat" : "US", "appVersion" : "2.0.0", "pid" : 22987, "lowPowerModeEnabled" : false } DiagnosticPayload.json This is the offending code in a type I control and make available on other platforms but leave unused. extension AgeRangeDeclaration { // A factory or initializer that takes the AgeRangeService.AgeRangeDeclaration and maps to the common AgeRangeDeclaration type public init?(platform value: AgeRangeService.AgeRangeDeclaration?) { guard let value else { return nil } switch value { // Xcode 26.1 visible cases case .selfDeclared: self = .selfDeclared case .guardianDeclared: self = .guardianDeclared // Xcode 26.2 visible cases // This is the first culprit, all of the following symbols would crash, this is just the first case .checkedByOtherMethod: self = .checkedByOtherMethod case .guardianCheckedByOtherMethod: self = .guardianCheckedByOtherMethod case .governmentIDChecked: self = .governmentIDChecked case .guardianGovernmentIDChecked: self = .guardianGovernmentIDChecked case .paymentChecked: self = .paymentChecked case .guardianPaymentChecked: self = .guardianPaymentChecked @unknown default: // Apple added new cases in Xcode 26.2 betas that were available in iOS 26.0, // so it is probable that this could happen again. If it does, assert to let developers // bring it to my attention. assertionFailure("Invalid or out of date knowledge of age range declaration \(value)") self = .unknown } } } For what it is worth, the same is also true for isEligibleForAgeFeatures which I suspect was also added to Xcode 26.2 somehow but not made available to real devices running [26.0 - 26.2). As a side note, thank you for this property, it will let me check what states I need to perform extra checks for in a clean way, I just will need it to now not crash my app on 26.0 and 26.1 runtime devices. :) Edit: DTS did confirm on a comment I had in another thread that this is a bug. Now just to wait for an Xcode beta update. https://developer.apple.com/forums/thread/807906?answerId=867205022#867205022 In any case, this is a great example of how MetricKit totally rocks capturing things other off the shelf crash tools might not have a chance to get. I did have to roll back my TestFlight to an earlier build, but MetricKit was there to send me the previous crashes as soon as the app could launch. Thanks MetricKit team!
0
0
58
1d
DeclaredAgeRange framework and types missing much needed Sendable and Hashable conformance
Like any good developer, I try to add tests where I can. The AgeRangeService.AgeRange type does not provide an initializer. I know the routine, create an interface or a simple struct that I control and use that instead. Thanks to extensive time with frameworks like Core Bluetooth or Core Location, this is a well understood practice (looking at you CBPeripheral...). Great I'll make my own 'AgeRange' struct. Make it Hashable, make it Sendable, use the framework types as properties. Scratch that, most of the properties on AgeRangeService.AgeRange type are not Sendable and many are also not Hashable. This is proving to be challenging. I hope to open source my little Swift Package wrapper library for DeclaredAgeRange which will add types with full Hashable and Sendable conformance. I hope Apple updates the API and makes this obsolete. I don't see why these simple types can't be Hashable and Sendable. They're structs, enums, and OptionSets (structs). FB20959748 - DeclaredAgeRange: DeclaredAgeRangeAction is not sendable causing main actor compile errors with default isolation settings FB20960560 - DeclaredAgeRange: AgeRangeService.AgeRangeDeclaration is not sendable as expected FB20960574 - DeclaredAgeRange: AgeRangeService.ParentalControls is not sendable as expected FB20960590 - DeclaredAgeRange: AgeRangeService.ParentalControls is not hashable as expected On the note of the library and using the types as-is, there are some issues using the new cases in AgeRangeDeclaration and the isEligibelForAgeFeatures property. I started another thread over here: https://developer.apple.com/forums/thread/808144
0
0
47
1d
Feedbacks for DeclaredAgeRange - missing platform support
I've been writing about the DeclaredAgeRange a bit on LinkedIn and now it is time to take to the developer forums. In my efforts to prepare my apps for new local requirements, I've run across some rough edges. The DeclaredAgeRange API is missing on several platforms, and extension types. First and foremost, watchOS. An Apple Watch is a clear single user platform and for standalone apps, the DeclaredAgeRange being absent is felt by developers. FB20954931 - DeclaredAgeRange: Framework not available on watchOS making compliance a challenge for watchOS standalone apps In the same vein of thinking, while users on Apple Vision Pro are far fewer numbers than Apple Watch, it is also a miss. The tricky part would be testing on the simulator. So far I haven't gotten the simulator and sandbox testing to work and give real values across any platform. I don't think an Apple Store will let me try my app out via TestFlight on their devices and they're still too expensive to reasonably buy for most developers. Too bad Feedbacks are not a currency that developers can trade in for gear. FB20955020 - DeclaredAgeRange: Framework not available on visionOS making compliance a challenge for visionOS apps I'll recognize that the user model is different on tvOS, and that as a user while I have family group setup, I don't have any children on the account. I have to imagine that child accounts on an Apple TV exist and would be able to account for the sharing of age ranges to apps. Yes, the user could just switch profiles, but, app developers could still integrate the age range into their apps. Maybe it needs more robust system level support but here is the feedback just the same. FB20955029 - DeclaredAgeRange: Framework not available on tvOS making compliance a challenge on tvOS apps And finally, let's not forget about App Clips. While the App Clips might not be 'downloaded' from App Store itself, it is powered by App Store technologies to an extent. I'd rather not bifurcate my code more than it already is for the shared code between my apps and app clips. Rounding out platform support to App Clips, since it is iOS, would close the loop. FB20954846 - DeclaredAgeRange / App Clips: Add support for DeclaredAgeRange framework for App Clip targets - capability exist, Xcode cannot generate entitlement for it Oh wait, actually, not quite. To fully close the loop, make the DeclaredAgeRange work fully on macCatalyst. The documentation says it is compatible, but from my experiments trying to get it to even compile when targeting macCatalyst apps simply doesn't build. FB21117325 - DeclaredAgeRange: API documentation states available on mac catalyst - but fails to compile in Xcode 26.2
0
0
41
1d
4.3(a) Spam Issue – Appeal Not Receiving Any Updates
Hello, I’m contacting you for assistance regarding an App Review issue that our company is currently facing. Background Several months ago, a former employee submitted an early prototype of our app using his personal Apple Developer account. That submission was never approved, and after the employee left the company, he removed the app from his account. It is no longer available on the App Store and no longer listed under that account. Recently, we rebuilt the product completely — new UI, new codebase, and a fully updated design — and submitted it under our company’s official Apple Developer account. Issue Our recent submission was rejected with 4.3 – Spam, indicating that our app is considered a duplicate of another existing app. However, the only similar app is the old prototype submitted several months ago by the former employee, which was removed and never published. It seems likely that our submission is being linked to that previous prototype, even though it no longer exists and was submitted under a different personal account. Appeal Status We submitted an Appeal right after receiving the 4.3 rejection. It has now been one week, and we have not received any update or confirmation: No email response No status change in App Review The Appeal does not appear in the Resolution Center The app remains unable to move forward in the review process Request for Assistance Could you please help us with the following? Could you confirm whether our Appeal was successfully received? What is the typical response time for Appeals in cases like this? Is any additional information required from us to continue the review? If the previous submission under the former employee’s personal account is influencing the review, how can we resolve this issue permanently? Is there a recommended way to escalate this situation, given that this app is critical for our company? We sincerely appreciate your time and assistance. Thank you, and we look forward to your guidance.
1
0
34
1d
App rejected under 4.3
I have invested significant money building a proximity application that shows hotspots for nightlife, and also if there are other single people in the same vicinity. I have labeled it under Social Networking, but the app reviews have labeled me as a dating app and hit me with the 4.3 spam tag. My app has many unique features that don't exist with other apps, but because of the matching part of the app, I am SOL. I am waiting on an appeal, but based on what I have read, I will most likely be doomed. Talk about killing the American Dream and stifling innovation! What are my options? If I get 10K users testing it on Test Flight, will I have a better chance of getting approved? Has anyone been successful by offering an app through a developer's website?
2
0
99
1d
Help with App rejection
I developed a mobile game which is a shooter/endless waves type of game. I submitted a few months ago and got rejected under guideline 4.3.0 -design spam. I went and redesigned the while thing, ADDED A COMPLETE MULTIPLAYER functionality where you can battle other real players. Submitted it again last Friday, week ago. Got the same rejection reason 4.3.0 - design spam. After explaining the features I added they wrote me back saying that the issue is resolved and then rejected due to some technical error I did when filling out the age rating settings. Fixed that and AGAIN they rejected under guideline 4.3.0 - design spam!! Even after attaching them a screenshot of the message that CLEARLY shows they resolved that issue, they keep on rejecting under 4.3.0 it’s like they are not even looking at the screenshot, or even looking in the message history. Does this make any sense to anyone? That 2 days ago they said 4.3.0 was resolved, then not? the app was developed entirely from scratch, no free assets, no templates, I have adobe files to prove it. please advise, I am loosing my mind.
1
0
74
1d
Same app name and Logo
Can multiple apps be published under the same organization that use the same logo and the same app name, but are intended for different regions? Each app will target a specific country or region, and the core functionality will be similar. I could not find any specific App Store Review Guideline stating whether it is allowed to have the same app name and branding for different regional versions. Is it necessary to differentiate the branding or name for each regional version to get approval during App Review?
1
0
69
1d
App Stuck in “Waiting for Review” Since November 17
Hi everyone, On Monday, November 17, our company submitted an app to the App Store, and it has been stuck in “Waiting for Review” ever since. From what I’ve read, the usual review time is around 24–48 hours, so we’re a bit worried that the review hasn’t even started yet. Has anyone else seen similar delays recently? Any insight or advice would be greatly appreciated. Thank you!
2
0
84
1d
My account "Pending Termination Notice"
Need Clarification on Pending Termination Notice for “Ethereum Cloud Miner Sim” App Hello Apple Developer Community, My developer account recently received a Pending Termination Notice, stating that my account may have been used for dishonest or fraudulent activity. I am very concerned and would like clear guidance on how to properly resolve this situation. My app is “Ethereum Cloud Miner Sim”, which is a simulation-only app, not real mining. To avoid misunderstanding, I clearly included: “Sim” in the app name A full disclaimer in the description No external payments, no misleading claims, no incentives, and no financial functionality Despite this, the app was removed and my account received the termination warning. I want to understand: What specific part of my app or metadata was interpreted as dishonest or fraudulent? How can I correct the issue so my account is not terminated? Is there any additional clarification or documentation I should provide? Does Apple consider simulation apps (non-functional mining simulations) as violating Guideline 5.6? My intention has always been to follow Apple's guidelines carefully, and I am ready to make any changes required. I kindly request direction from Apple or anyone in the community who has experienced a similar issue. Thank you for your time and guidance.
1
0
88
1d
Question about Preregistration Campaigns & Rewards
We are doing this for the 5,000 users who signed up for our preregistration campaign where they get 30 days of our paid plan at no charge. So to accomplish this, is Apple's recommendation to just make people sign up for any of our paid subscription plans (monthly, quarterly or yearly) and then just get the 30 days free? We also have a Free plan in addition to the monthly, yearly and quarterly plans. So how do we set this up to automatically give the paid plan features to free plan users? Or is the only way of doing this is to make them sign up for a paid plan subscription that is 30 days free? Will making any of these changes ruin my preregistration campaign or cause me any problems? How do we communicate to users that at least as it stands now, they have to choose a subscription and subscribe and they will get 30 days free? Should we be running a marketing campaign to let users know that to get their 30 days free of the paid plan, that they have to sign up for a subscription first? When do I change the 30 days free back to 7 days as this is only for those who preregistered? Please advise as I want to do this correctly.
0
0
15
1d
Application upload failure
I am trying to upload application update using altool: xcrun altool --upload-app -f myapp.ipa --apiKey API_KEY --apiIssuer API_ISSUER --type iOS But upload fails with the following error: ERROR: [altool.600000970040] Validation failed (409) This bundle is invalid. The bundle identifier cannot be changed from the current value, 'com.company.app.debug'. If you want to change your bundle identifier, you will need to create a new application in App Store Connect. (ID: 590e09ef-1502-4e67-a3b0-38d4f922ac94) NSUnderlyingError : Validation failed (-19241) This bundle is invalid. The bundle identifier cannot be changed from the current value, 'com.company.app.debug'. If you want to change your bundle identifier, you will need to create a new application in App Store Connect. For context, we have 2 apps in iTunes Connect, with ids com.company.app and com.company.app.debug, the debug version is used to test staging environment through TestFlight. This setup was created a while ago and worked fine until now. I verified that the bundle I am uploading has proper bundle id (com.company.app) and version number. How can I resolve this?
1
0
52
1d
Repeated Guideline 4.3 Rejection for Update – Requesting Insight From Fellow Developers And App Review Team
Hello everyone, I hope you are all doing well. I’m opening this discussion because we’ve encountered a repeated Guideline 4.3 rejection for an update, despite having previously addressed the same concern with the App Review team and reaching a resolution. Several weeks ago, we went through a detailed review process regarding Guideline 4.3. We provided full technical explanations, clarified our development structure, redesigned parts of the UI, and made all adjustments requested by the App Review team. That update was ultimately approved, and the app has been live on the App Store since then without any issues. However, our new submission—which includes only a critical bug fix—is now being rejected again for the same 4.3 reason. No changes have been made to the concept, design, or core functionality since the previously approved version. The update is not introducing new features or new UI; it simply resolves a performance bug affecting downloads and uploads, which users are already experiencing in the live version. We operate a single developer account, and our apps are entirely built in-house. Although we use open-source VPN cores (such as Xray-core and Clash), these frameworks are publicly available on GitHub and are commonly used by many developers. Our implementations, configurations, and UI are fully custom and not shared with any other apps. This was already reviewed and confirmed in our previous submission. We have already sent clear and detailed technical explanations through the Resolution Center—similar to what was accepted in our earlier approval—but unfortunately, it hasn’t resolved the issue this time. This situation is becoming difficult for us because: The current live version has a performance bug that users are already affected by. We are in the middle of ongoing campaigns, meaning delays can lead to financial impact. Negative user feedback due to this unresolved bug could permanently damage the app’s reputation. Since this exact concern was previously reviewed, discussed, and resolved with App Review, we are unsure why the same guideline is suddenly being applied to a simple bug-fix update. So I wanted to ask the community: Has anyone faced a similar situation where a previously resolved 4.3 issue resurfaced on later updates? Are there any specific details or approaches that helped clarify the situation for the review team? Is there anything additional we should highlight to prevent misunderstanding on automated or manual review? Any insights or shared experiences from other developers would be extremely valuable. Thank you in advance for your time and support.
2
1
115
1d
How can responding to user reviews effectively contribute to improving ASO performance?
Responding to reviews helps ASO because it encourages better user sentiment, improves rating recovery, and builds trust for new users checking your app. Converting negative reviews into positive ones has a strong impact on ranking. Engaging consistently with users is one of the simplest ways to strengthen overall ASO performance.
0
0
32
2d
App Store Connect API `inAppPurchaseV2` returns `links.next`, even when there's no more `data`
I think there's been a recent change to the App Store Connect API; I claim that it's a bug. When querying App Store Connect API endpoints that return arrays, like https://api.appstoreconnect.apple.com/v1/apps, the response includes a links property, of type PagedDocumentLinks. https://developer.apple.com/documentation/appstoreconnectapi/pageddocumentlinks links should include a next link only if there's more data to provide, and, indeed, this is how it works for the /v1/apps endpoint. But when querying inAppPurchasesV2, I find that starting very recently (this week?) the API always returns a next link, even if there's no more data to show. { data: [], links: { self: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?cursor=APo&limit=50', first: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?limit=50', next: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?cursor=ASw' }, meta: { paging: { total: 223, nextCursor: 'ASw', limit: 50 } } } If I request the next link, it will generate me another response with empty data and with a new cursor. { data: [], links: { self: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?cursor=ASw&limit=50', first: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?limit=50', next: 'https://api.appstoreconnect.apple.com/v1/apps/1363309257/inAppPurchasesV2?cursor=AV4' }, meta: { paging: { total: 223, nextCursor: 'AV4', limit: 50 } } } Code I've written against this API (including my open-source library https://github.com/dfabulich/node-app-store-connect-api) assumes that if there's another links.next link, we should follow it; as a result, my code is looping infinitely, requesting empty data until eventually I have to give up. This issue doesn't affect other endpoints, like /v1/apps, just this inAppPurchasesV2 endpoint. Was this an intentional change? It seems to be a bug.
4
4
380
2d