# Guideline 2.5.1 - Performance - Software Requirements

> Apple rejected your app under Guideline 2.5.1, Software Requirements. Private APIs, deprecated frameworks, and HealthKit or HomeKit not named in the listing.

Canonical: https://app369.com/fix/app-store-guideline-2-5-1-software-requirements/
Last updated: 2026-11-09

App Review rejected the build under Guideline 2.5.1 because of how the app uses Apple’s APIs. The 4 usual triggers are a private API, a deprecated framework, a framework used for the wrong purpose, and HealthKit or HomeKit missing from the description. Each one is a code or listing change.

**Short answer**

Find the API or framework the rejection names. Remove any private API call, often one that comes from a third-party SDK, update dependencies that still use deprecated frameworks, and turn off capabilities the app doesn’t use. If the app uses HealthKit, HomeKit or a similar framework, say so in the App Store description. Then reply in App Store Connect and resubmit.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **The usual causes, and the fix**

1. 01 ### **A private API, often inside an SDK**
  > “Apps may only use public APIs and must run on the currently shipping OS.” [**Apple, Guideline 2.5.1**](https://developer.apple.com/app-store/review/guidelines/#2.5.1) App Review checks the binary for calls to APIs that aren’t public. The call is often in a third-party library, not in your own code. If the rejection names a symbol or selector, search your code and your dependencies for it, update or remove the library that uses it, and upload a new build.
2. 02 ### **A deprecated framework or technology**
  > “Keep your apps up-to-date and make sure you phase out any deprecated features, frameworks or technologies that will no longer be supported in future versions of an OS.” [**Apple, Guideline 2.5.1**](https://developer.apple.com/app-store/review/guidelines/#2.5.1) An old plugin or SDK can keep a framework in the app that Apple is phasing out. Update the dependency to a release that no longer uses it, and build with the current Xcode and SDK.
3. 03 ### **The description doesn’t mention the framework**
  > “Apps should use APIs and frameworks for their intended purposes and indicate that integration in their app description.” [**Apple, Guideline 2.5.1**](https://developer.apple.com/app-store/review/guidelines/#2.5.1) If the app uses HealthKit, HomeKit or a similar framework, the App Store description has to say so. Add a plain line such as "Syncs your workouts with the Health app", and point App Review to the feature in your reply.
4. 04 ### **A capability left on with no feature behind it**
  > “For example, the HomeKit framework should provide home automation services; and HealthKit should be used for health and fitness purposes and integrate with the Health app.” [**Apple, Guideline 2.5.1**](https://developer.apple.com/app-store/review/guidelines/#2.5.1) A HealthKit capability copied from a template, with nothing in the app that uses it for health or fitness, reads as a framework used for the wrong purpose. Remove the capability in Xcode if the app doesn’t need it, or build the feature it is for.

Checked against the vendor’s docs on November 9, 2026: [Apple: App Review Guidelines, 2.5.1 Software Requirements](https://developer.apple.com/app-store/review/guidelines/#2.5.1); [Apple: App Review (replying and appeals)](https://developer.apple.com/distribute/app-review/).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

**Resubmit before Apple’s holiday slowdown**

Pay for the Diagnosis and send the rejection and access to the app by Monday, December 7 (US Eastern). The Diagnosis is back by Thursday, December 10. Pay for the Fix that day and it arrives as a pull request by Thursday, December 17, in time to build and resubmit before December 20.

In past years Apple said reviews may take longer around the holidays: [December 20 to 26 in 2024 (opens in a new tab)](https://developer.apple.com/news/?id=iwvebnw2), [December 22 to 27 in 2023 (opens in a new tab)](https://developer.apple.com/news/?id=uijoypq9), [December 23 to 27 in 2022 (opens in a new tab)](https://developer.apple.com/news/?id=xpkhwg3l). Apple hasn’t posted its 2026 dates yet (checked October 30). Approval stays Apple’s decision.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**App Store Guideline 2.1**](https://app369.com/fix/app-store-guideline-2-1-app-completeness/) · [**App Store Guideline 2.3**](https://app369.com/fix/app-store-guideline-2-3-accurate-metadata/) · [**App Store Guideline 5.1.1**](https://app369.com/fix/app-store-guideline-5-1-1-data-collection/) · [**App Store Guideline 2.5.2**](https://app369.com/fix/app-store-guideline-2-5-2-executable-code/)

Questions

## **More on this rejection**

<details>

<summary>**Should I reply to App Review or appeal? **+</summary>

Reply first. Apple says you can correspond with App Review in App Store Connect to resolve the issues before resubmitting, which is the place for a demo account, a screen recording or an explanation. Appeal to the App Review Board only if you believe App Review misunderstood the app or treated you unfairly. Apple allows one appeal per rejected submission and asks for specific reasons the app complies.

</details>

<details>

<summary>**Do I need to upload a new build? **+</summary>

For a private API, a deprecated framework or an unused capability, yes: the problem is in the binary. If the only problem is that the description doesn’t mention HealthKit or HomeKit, change the description and resubmit the same build.

</details>

<details>

<summary>**The private API is in a library I didn’t write. What now? **+</summary>

Update the library first, since a newer release may have removed the call. If no release has, replace the library or remove the feature that needs it. Apple’s rule covers the whole binary, including third-party code.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

Yes, through the App Fix Ticket: you send the rejection message and access to the app, Simon writes a diagnosis of what App Review hit and how to fix it, then fixes the code so you can resubmit. Each step has a fixed price, paid upfront. Approval stays Apple’s decision; the ticket covers the fix.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)