# Guideline 2.5.1: publikus API-k és friss SDK Expóval

> Guideline 2.5.1: csak publikus API, az aktuális iOS-en futó app, rendeltetésszerűen használt frameworkök. Expóval először a natív modulokat ellenőrizd.

Eredeti oldal: [Guideline 2.5.1: publikus API-k és friss SDK Expóval](https://devoria.fr/hu/blog/guideline-2-5-1-publikus-api-expo-sdk)
Szerző: [Mehdi Azizi](https://devoria.fr/hu/mehdi-azizi)
Megjelenés: 2026-11-04
A tartalom utolsó frissítése: 2026-11-04


A 2.5.1-es guideline négy követelményt támaszt: csak publikus API-kat használj, az app fusson az aktuális iOS-verzión, vezesd ki, amit az Apple elavultnak nyilvánít, és minden frameworköt a rendeltetésének megfelelően használj. **Expóval a kockázat ritkán a JavaScript-kódodból jön: a telepített natív modulokból és abból az SDK-ból jön, amellyel buildelsz.**

A Solyst, a TradaZent és a Nolerát Expo SDK 57-tel adom ki. A Solys az Apple Screen Time API-jára épül, ami egy szabályozott használatú framework. Ez az útmutató a review-szabállyal foglalkozik. A build feltöltésekor kapott hibához olvasd el az [ITMS-90338](https://devoria.fr/hu/blog/itms-90338-non-public-api-usage-expo) útmutatót. A háttérmódokhoz, amelyek ugyanebben a részben vannak, olvasd el a [2.5.4-es guideline](https://devoria.fr/hu/blog/guideline-2-5-4-hattermod-elutasitas-apple) útmutatóját.

## Mit mond a 2.5.1-es guideline?

A szabály az [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#2.5.1) 2.5-ös, „Software Requirements” részében található: „Apps may only use public APIs and must run on the currently shipping OS. 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. Apps should use APIs and frameworks for their intended purposes and indicate that integration in their app description.”

Egyszerűen fogalmazva, négy kötelezettség:

1. **Csak publikus API-k**, vagyis amiket az Apple dokumentál.
2. **Az app fusson az aktuális iOS-verzión**, ami 2026 szeptembere óta az iOS 27.
3. **Semmi olyan elavult dolog, ami meg fog szűnni**: lecseréled, amiről az Apple bejelenti, hogy kivezeti.
4. **Minden framework a helyén, és szerepeljen a leírásban**: HomeKit az okosotthonhoz, HealthKit az egészséghez és a sporthoz, az Egészség apphoz kötve.

Innen jön az elutasítás címe: „Guideline 2.5.1 - Performance - Software Requirements”.

## Publikus API-k: hol bújik meg a kockázat egy Expo appban

A privát API a rendszer olyan funkciója, amelyet az Apple nem dokumentál. Az Apple sem a viselkedését, sem azt nem garantálja, hogy a következő iOS-verzióban is ott lesz, ezért tilos.

A JavaScript-kódod soha nem nyúl közvetlenül az iOS-hez: natív modulokon keresztül megy. Az Expo SDK moduljait az Expo csapata tartja karban. **A többiek olyan kódot hoznak magukkal, amit nem te írtál, és az Apple ugyanúgy vizsgálja, mint a sajátodat.** Az [ITMS-90683](https://devoria.fr/hu/blog/itms-90683-missing-purpose-string-expo) útmutató ugyanezt a mechanizmust mutatja be az engedélykérő szövegekkel: az Apple a buildben lévő kódot ítéli meg, nem azt, amit az app csinál.

A Solysban 2026. október 15-én 42 közvetlen függőség tartalmaz natív iOS-kódot, ebből 14 az Expo SDK-n kívüli. Köztük van a RevenueCat, a Sentry, az AppsFlyer és a `react-native-device-activity`, a híd a Screen Time API felé.

Egy privát API két ponton bukhat le. Feltöltéskor az App Store Connect automatikus elemzése ITMS-90338-as hibát adhat. A review során pedig a reviewer a 2.5.1-et hivatkozza.

## Elavult API-k: a UIWebView-tól a UIScene-ig

A legismertebb példa a UIWebView, a webes tartalom megjelenítésére szolgáló régi komponens. Az Apple 2020 áprilisában [már nem fogadta el](https://developer.apple.com/news/?id=12232019b) az új appokban, majd 2020 decemberében a frissítésekben sem. Egy régi könyvtár, amely még hivatkozott rá, blokkolta a feltöltést. A Solysban a lenti check-lista keresése egyetlen hivatkozást sem talál.

A következő változást már bejelentették. Az Apple [TN3187](https://developer.apple.com/documentation/technotes/tn3187-migrating-to-the-uikit-scene-based-life-cycle) technikai jegyzete ezt írja: „In the next major release following iOS 26, UIScene lifecycle will be required when building with the latest SDK; otherwise, your app won't launch.” Magyarul: az iOS 27 SDK-val, scene-alapú életciklus nélkül buildelt app el sem indul.

Három dátumot érdemes összekötni:

- **2026 áprilisa óta** az Apple Xcode 26-ot követel meg: erről szól az [ITMS-90725](https://devoria.fr/hu/blog/itms-90725-sdk-version-issue-javitasa-expo) útmutató.
- **2027 áprilisától** az Apple [feltöltési oldala](https://developer.apple.com/app-store/submitting/) szerint kötelező lesz az iOS 27 SDK.
- **Az Expo SDK 58**, amely 2026. szeptember 15. óta bétában van, az [Expo bejelentése](https://expo.dev/changelog/sdk-58-beta) szerint már legenerálja a scene-kezelést.

Expo SDK 57-tel és Xcode 26-tal még az iOS 26 SDK-val buildelsz: ma semmi nem törik el. **Az AppDelegate-et módosító moduloknak 2027 áprilisa előtt követniük kell a változást.**

## Rendeltetésüktől eltérően használt frameworkök

A reviewer ellenőrzi, hogy egy érzékeny framework látható funkciót szolgál-e, és hogy az adatlapod megemlíti-e.

- **A HealthKit** az egészséget és a sportot szolgálja. Az Apple [felületi irányelvei](https://developer.apple.com/design/human-interface-guidelines/healthkit) ki is mondják: „If your app doesn't provide health and fitness functionality, don't request access to people's private health data.”
- **A HomeKit** az okosotthont szolgálja, semmi mást.
- **A PushKit** a VoIP-hívásokat szolgálja. A [PushKit dokumentációja](https://developer.apple.com/documentation/pushkit/responding-to-voip-notifications-from-pushkit) egyértelmű: „If you are unable to support CallKit in your app, you cannot use PushKit to handle push notifications.” Egy VoIP-értesítés, amely hívás nélkül ébreszti fel az appot, visszaélésnek számít.
- **A Family Controls**, vagyis a Screen Time API, külön engedélyt igényel. A [dokumentációja](https://developer.apple.com/documentation/familycontrols) leírja: „Before submitting your app to the App Store, you must request permission to use the entitlement.”

A Solyshoz 2026. szeptember 23-án kértem ezt a terjesztési engedélyt, és az Apple még aznap megadta. A használat illeszkedik a frameworkhöz: a felhasználó kiválasztja a szüneteltetendő appokat, a Solys pedig ébredés után 30, 45 vagy 60 percre blokkolja őket. Az adatlap leírása ezt egy mondatban mondja el: „A Solys az Apple Screen Time engedélyét használja a kiválasztott appok szüneteltetésére.” **Pontosan ezt kéri a 2.5.1 vége: az integrációt említsd meg a leírásban.**

## Bétaverziók: TestFlight igen, App Store nem

Az [App Store Connect kiadási jegyzetei](https://developer.apple.com/help/app-store-connect/release-notes/) mutatják a szabályt a gyakorlatban. 2026. október 14-én az Xcode 27.2 beta 3-mal készült buildeket „for internal and external testing” fogadják el, vagyis TestFlightra. Október 5-én az Xcode 27.1 RC-vel készülteket „for the App Store” fogadják el.

**Az Xcode bétájával buildelt app TestFlightra mehet, review-ra soha.** A beküldéshez végleges verzió kell, vagy olyan RC, amelyet az Apple megnyitott az App Store felé.

Két pontosítás Expo apphoz:

- **Az Expo bétája nem Apple-béta.** Az Apple az Xcode és az iOS SDK verzióját ellenőrzi, nem az Expóét. Az SDK 58 bejelentése hozzátette, hogy az Xcode 27-es EAS image-ek hamarosan érkeznek.
- **Az aktuális iOS-en tesztelni továbbra is kötelező**, akkor is, ha az iOS 26 SDK-val buildelsz. Indítsd el az appot hidegindítással egy frissített iPhone-on vagy szimulátoron.

## Check-lista: natív függőségek beküldés előtt

Fusd végig minden production build előtt. A parancsokat az Expo projekt gyökerében futtasd:

```bash
npx expo-doctor
npx expo install --check
grep -rlw "UIWebView" node_modules --include='*.m' --include='*.mm' --include='*.swift' --include='*.h'
```

1. **Az `npx expo-doctor` nem jelez hibát.** A Solysban 2026. október 15-én: 21 ellenőrzésből 20 sikeres. A hibát 13 Expo-csomag okozta, amelyek egy javítással le voltak maradva; ezeket az `npx expo install --check` hozza szinkronba.
2. **Minden Expo SDK-n kívüli modul szerepel a React Native Directoryban.** Az Expo Doctor alapból elvégzi ezt az ellenőrzést, ahogy az [Expo dokumentációja](https://docs.expo.dev/versions/latest/config/package-json/) írja. Egy ismeretlen csomag iOS-kódját érdemes átolvasni.
3. **Minden natív modul követi a React Native verziódat.** Az [Expo verziótáblázata](https://docs.expo.dev/versions/latest/) az SDK 57-et a React Native 0.86-hoz rendeli. Egy modul, amelyből több verzió óta nem jelent meg kiadás, figyelmeztető jel.
4. **A UIWebView-keresés semmit nem ad vissza.** Tedd ugyanezt minden API-val, amelynek kivezetését az Apple bejelenti.
5. **Minden érzékeny frameworknek van látható funkciója**: egészség, Screen Time, hívások, otthon. A leírás megemlíti, és a külön engedélyt megkaptad.
6. **A build végleges Xcode-ból jön.** Ellenőrizd a verziót az EAS build naplóiban.
7. **Az app hidegindítással elindul az aktuális iOS-verzión**, új fiókkal.
8. **Az AppDelegate-hez nyúló modulok jelzik a UIScene támogatását**, mielőtt átállsz az iOS 27 SDK-ra.

## Hogyan válaszolj egy 2.5.1-es elutasításra?

Az üzenet általában megnevezi az érintett API-t vagy frameworköt. Két eset van:

- **A framework semmi látható célt nem szolgál**: távolítsd el a modult vagy a capabilityt, buildelj újra, majd válaszolj két mondatban.
- **A framework valódi funkciót szolgál**: add meg a pontos útvonalat, egy képernyőképet vagy rövid videót, és hivatkozz az integrációra az adatlap leírásában.

**Egy natív modul eltávolítása megváltoztatja a binárist: egy távoli frissítés nem elég.** A [2.1-es guideline](https://devoria.fr/hu/blog/guideline-2-1-app-store-elutasitas-javitasa) útmutatója elmagyarázza, miért csak a beépített kódot látja a reviewer. A beszélgetés ezután az App Store Connectben folyik, ahogy az [App Review-nak való válaszadásról](https://devoria.fr/hu/blog/apple-resolution-center-valasz-app-review-elutasitas) szóló útmutatóban.

## Ellenőrizd a projektedet feltöltés előtt

A [Review Kit](https://devoria.fr/hu/kits/app-review) tartalmazza a feltöltés előtti check-listámat, a kijavított elutasításaimat és Claude Code skilleket, amelyek átnézik az Expo projektedet. Ha emberi szemre van szükséged, [foglalj velem egy órát](https://devoria.fr/hu/coaching): együtt átolvassuk az Apple üzenetét és a függőségeidet. A teljes folyamat az [Apple által elutasított app](https://devoria.fr/hu/expertise/apple-altal-elutasitott-alkalmazas) oldalon található.

Az első megjelenésedre készülsz? [Töltsd ki az ingyenes diagnosztikát](https://devoria.fr/hu/diagnostic): elküldi neked az Apple-elutasítások elleni check-listámat.

## Gyakori kérdések

### Mit jelent a „Guideline 2.5.1 - Performance - Software Requirements”?

Ez az elutasítás címe, amikor az Apple úgy ítéli meg, hogy az appod nem publikus API-t, elavult technológiát vagy rendeltetésétől eltérően használt frameworköt használ. Az üzenet általában megnevezi az érintett elemet.

### Mi a különbség a 2.5.1-es guideline és az ITMS-90338-as hiba között?

Az ITMS-90338 automatikus hiba, amelyet a build feltöltésekor kapsz, ha az elemzés nem publikus szimbólumot talál. A 2.5.1 egy ember által alkalmazott review-szabály, amely a visszaélésszerűen használt frameworköket és az elavult technológiákat is lefedi.

### Beküldhető egy Xcode-bétával buildelt app?

Nem. Az App Store Connect ezeket a buildeket csak TestFlightra fogadja el. A review-hoz végleges Xcode-verzióval buildelj, vagy olyan RC-vel, amelyet az Apple a kiadási jegyzeteiben megnyitott az App Store felé.

### Használhat egy Expo app privát API-t anélkül, hogy tudna róla?

Igen, egy harmadik féltől származó natív modulon keresztül. A JavaScript-kódod maga nem hívja az iOS-t, de minden natív csomag Objective-C vagy Swift kódot tartalmaz. Minden verzió előtt nézd át az Expo SDK-n kívüli modulok listáját.

### Át kell állni azonnal az Expo SDK 58-ra?

A 2.5.1 miatt 2026. október 15-én nem: az SDK 57 az iOS 26 SDK-val buildel, ami még elfogadott. Tervezd be a frissítést 2027 áprilisa előttre, amikor az Apple megköveteli az iOS 27 SDK-t és a scene-alapú életciklust.


## A projekted

[Review Kit](https://devoria.fr/hu/kits/app-review): Az App Store review checklistem, a javított Apple-elutasításaim, a Google Play checklist és három Claude Code skill. 17 990 Ft.

[iOS & Android Kit](https://devoria.fr/hu/kits/ios): Készítsd el iPhone- és Android-appodat Claude Code-dal: az appjaim kezdőkódja, az út a store-okig és az összes kit. 35 990 Ft.

[Diagnózis: mi választ el az iPhone-appodtól](https://devoria.fr/hu/diagnostic): 7 kérdés, 60 másodperc: megtudod, mi akadályoz valójában abban, hogy kiadd az iPhone-appodat, megkapod a 4 lépéses utadat és a hozzád illő kitet.
