Guideline 2.5.1: publikus API-k és friss SDK Expóval
Írta: Mehdi Azizi
Megjelent: , 9 p
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.
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 útmutatót. A háttérmódokhoz, amelyek ugyanebben a részben vannak, olvasd el a 2.5.4-es guideline útmutatóját.
Mit mond a 2.5.1-es guideline?
A szabály az App Review Guidelines 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:
- Csak publikus API-k, vagyis amiket az Apple dokumentál.
- Az app fusson az aktuális iOS-verzión, ami 2026 szeptembere óta az iOS 27.
- Semmi olyan elavult dolog, ami meg fog szűnni: lecseréled, amiről az Apple bejelenti, hogy kivezeti.
- 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 ú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 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 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 útmutató.
- 2027 áprilisától az Apple feltöltési oldala 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 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 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 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 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 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:
npx expo-doctor
npx expo install --check
grep -rlw "UIWebView" node_modules --include='*.m' --include='*.mm' --include='*.swift' --include='*.h'
- Az
npx expo-doctornem 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 aznpx expo install --checkhozza szinkronba. - 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 írja. Egy ismeretlen csomag iOS-kódját érdemes átolvasni.
- Minden natív modul követi a React Native verziódat. Az Expo verziótáblázata 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.
- A UIWebView-keresés semmit nem ad vissza. Tedd ugyanezt minden API-val, amelynek kivezetését az Apple bejelenti.
- 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.
- A build végleges Xcode-ból jön. Ellenőrizd a verziót az EAS build naplóiban.
- Az app hidegindítással elindul az aktuális iOS-verzión, új fiókkal.
- 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 ú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 szóló útmutatóban.
Ellenőrizd a projektedet feltöltés előtt
A Review Kit 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: együtt átolvassuk az Apple üzenetét és a függőségeidet. A teljes folyamat az Apple által elutasított app oldalon található.
Az első megjelenésedre készülsz? Töltsd ki az ingyenes diagnosztikát: 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.

