
React Native vs Native (Swift/Kotlin) 2026-ban: mikor melyiket válaszd
Performance benchmarks, developer experience, ecosystem és 5 use case ajánlás. React Native vagy native — döntsd el szakmai szempontok mentén.
Lépésről lépésre guide az iOS App Store és Google Play Store deployment-hez. Account, certificate, review folyamat és Fastlane automation.

Release pipeline
Xcode Archive vagy Gradle bundleRelease. Fastlane Match a certificate / keystore-management-re.
TestFlight (iOS) vagy Closed Testing (Android). Pre-launch report Firebase Test Lab-on, crash + ANR review.
App Store 24-48h, Google Play 12-24h. Privacy Nutrition Label + Data Safety form pontosan kitöltve.
Production track 1% → 5% → 20% → 50% → 100%. Crashlytics monitoring, halt-rule crash-spike-en.
Egy mobil app fejlesztése kész — a deployment viszont gyakran nehezebbnek tűnik, mint amilyen valójában. A 2-3 hetes csúszás az App Store / Play Store review-on tipikus, de elkerülhető megfelelő felkészüléssel. Ez a guide a teljes flow-t végigjárja, új fejlesztők szemszögéből: account-setup, certificate-management, build-konfiguráció, metadata-feltöltés, review-folyamat, és a Fastlane-alapú automatizáció.
A guide 2026 Q1 állapotot tükröz. Az Apple és Google policy-k gyorsan változnak — érdemes a hivatalos dokumentációt is utánaolvasni, különösen a privacy-deklarációkra és a target API level-re vonatkozóan.
Mielőtt elindulnál, néhány dolog rendben kell, hogy legyen. Ezeket gyakran az utolsó pillanatra hagyják, és ez 1-2 hetes csúszást okoz.
Tipp: Az ikonok és screenshot-ok előkészítése sokszor 1-2 napos design-munka. Tervezz be időt a deployment hetén kívül.
Apple Developer Portal → Certificates, Identifiers & Profiles → Identifiers → új App ID. Bundle ID konvenció: com.cegnev.appnev. Reverse-DNS notation, lowercase, kötőjel megengedett.
Bundle ID examples:
✓ com.corevanix.partneriapp
✓ hu.cegnev.flotta-mobile
✗ com.corevanix.PartneriApp (uppercase tilos)
✗ corevanix.app (nem reverse-DNS)
A Bundle ID-t soha ne változtasd a release után — ez egy új app-nek számít, és minden user-data el lesz hagyva.
Az App ID-ban explicit engedélyezni kell a használt capability-ket:
Minden új capability külön provisioning profile-t igényel — tervezd be előre.
Két certificate kell:
Provisioning Profile a Distribution certificate-hez. Mindezt Xcode automatikusan tud (Automatically manage signing), de production-ben jobb manuálisan kezelni — a CI/CD-environmentben az automatic signing gyakran törik.
# Helyi cert-export iCloud Keychain-ből
security find-identity -p codesigning -v
# Kiírja a tárolt certificate-eket
Xcode → Product → Scheme → Edit Scheme → Run → Build Configuration: Release. Plus:
Cél: az archive a Window → Organizer-ben látszódjon clean, warning-mentesen.
App Store Connect → My Apps → új app:
Ez az időigényes rész. Minden field kötelező:
Az App Privacy nyilatkozat 2020 óta kötelező. A „Data Used to Track You", „Data Linked to You", „Data Not Linked to You" kategóriák — pontosan kell jelölni.
Xcode → Product → Archive → Distribute App → App Store Connect → Upload.
Tipikus build feldolgozási idő: 15-60 perc. Egészen 4-6 órás extreme case-ek is előfordulnak, főleg release-napokon.
# Fastlane-nel:
fastlane ios beta
A build feldolgozása után warnings jönhetnek (Missing Marketing Icon, ITSAppUsesNonExemptEncryption etc.). Ezeket az App Store Connect → TestFlight tab-en látod.
App Store Connect → Version → Build kiválasztása → Submit for Review.
Pre-submission checklist:
Tipikus review idő: 24-48 óra (2025 előtt 3-7 nap volt — sokat gyorsult). Lehetséges kimenetek:
Az első 24-48 óra kritikus:
| Rejection ok | Megoldás |
|---|---|
| Crash on launch | Test minden iOS-verzión (min target → latest) |
| Privacy policy URL hibás | Ellenőrizd manuálisan, magyar + angol nyelvű |
| Sign-in kötelező anélkül, hogy magyarázod | Adj guest-mode vagy magyarázd a value-t |
| In-app purchase nem releváns, de Stripe-flow | Apple csak IAP-ot enged digital-szolgáltatásra |
| Medical/financial claim disclaimer nélkül | Adj megfelelő disclaimer-t |
| Insufficient unique content (clone) | Az app-nek értéket kell hoznia |
| Inappropriate content | Content-policy review |
| Missing required functionality | Az app nem lehet placeholder |
Megjegyzés: Ha rejection-t kapsz, ne kezd újra a flow-t a 0. lépésnél. A Resolution Center válaszán keresztül beszélhetsz a reviewer-rel, sokszor 1-2 reply után tisztázható a kérdés.
Convention: com.cegnev.appnev. Az application ID a build.gradle-ben rögzítve, soha ne változtasd a launch után.
// app/build.gradle.kts
android {
namespace = "com.corevanix.partneriapp"
defaultConfig {
applicationId = "com.corevanix.partneriapp"
versionCode = 1
versionName = "1.0.0"
minSdk = 26
targetSdk = 35 // 2026: Android 15
}
}
keytool -genkey -v -keystore release.keystore \
-alias upload -keyalg RSA -keysize 2048 -validity 10000 \
-storepass <password> -keypass <password> \
-dname "CN=Corevanix Kft., O=Corevanix, C=HU"
A keystore fájlt és a jelszót VESZÍTSD EL = APP-OT VESZÍTESZ EL (új keystore-rel publikálni nem lehet, csak új app-pal). Tárold biztonságos helyen (1Password, Bitwarden, HashiCorp Vault).
A 2021-es változás óta a Google Play maga is signing kulcsot generál és tart. A te „upload key"-eddel signed-AAB-t a Google újra-signolja a saját production-keyje-vel.
Előnye: ha az upload-keystoredet elveszíted, a Google új upload-keyet generálhat — az app NEM vész el.
Play Console → App Signing → Use Google Play App Signing
→ Upload your upload key certificate (or generate new)
Play Console → All apps → Create app:
cd android
./gradlew bundleRelease
Az AAB az app/build/outputs/bundle/release/app-release.aab. Modern alternatíva az APK-nak (kisebb, Google szétszedi platform-specifikus APK-kra dinamikusan).
# RN-nél Fastlane-nel:
fastlane android beta
A release-t mindig először Internal Testing track-re tedd. Korlátlan resubmit ingyenes, 1-2 órán belül beta-szinten van.
Play Console → Internal testing → Create release → Upload AAB.
Google a build-et automatikusan futtatja Firebase Test Lab-on (~30 device-virtuális). Crash, ANR, security issue jelölve.
A pre-launch report 2-6 óra alatt készül el. Eredmények:
Internal után 50-1000 beta user-rel teszt Closed Testing-on. Pozitív feedback után Production track.
Closed Testing előnye: éles felhasználói feedback még a production submission előtt. Tipikusan 2-4 hetes ciklust érdemes futtatni.
Phased rollout: 1% → 5% → 20% → 50% → 100%. Crash analytics monitoring minden szinten. Ha crash spike → halt rollout.
Day 1: 1% rollout
Day 2: 5% rollout
Day 4: 20% rollout
Day 7: 50% rollout
Day 14: 100% rollout
Google Play review: 1-3 nap első submission-ra, később 12-24 óra. Gyakori issue-k:
| Issue | Megoldás |
|---|---|
| Permissions túl tág | Csak a tényleg használt permission-ök |
| Privacy policy / data safety form pontatlan | Frissítsd a Data Safety section-t |
| Adat-deklaráció hiányos | Minden gyűjtött adat-típust deklarálj |
| Target API level túl régi (2026: min 35) | Update minSdk és targetSdk |
| App-content policy violation | Review a Google Play policies-t |
| Spam / clone app | Az app-nek unique value-t kell adnia |
| Restricted content (pl. gyógyszer) | Speciális engedélyezés / disclaimer |
Tipp: A Data Safety form 2024 óta szigorúbb. Minden 3rd party SDK (Firebase, Mixpanel, OneSignal) data-collection-jét deklarálni kell. Ne hagyd ki a Sentry-t sem — az is collect-el data-t.
Egy projekten 2 store-on egyszerre futtatsz buildet. A version-szinkronizációhoz:
// package.json (RN példa)
{
"version": "1.4.2"
}
// Build-scriptek ezt használják mindkét platformra
// iOS: CFBundleShortVersionString
// Android: versionName
A build-szám szintén szinkronban legyen — egyszerűsíti a debug-ot ha bug-report jön.
Ha a két platformon eltérő feature van (pl. csak iOS-en Live Activity), két dolog:
Egy Notion vagy Linear-doc minden store-metadata-val: leírás, screenshot-link, version-history. Onboarding új csapat-tag-nek 30 perc.
A manuális deployment 2-3 órás flow / release. Fastlane → 5-10 perc.
# iOS oldalon
cd ios
fastlane init
# Android oldalon
cd android
fastlane init
# fastlane/Fastfile
default_platform(:ios)
platform :ios do
desc "Push a new beta build to TestFlight"
lane :beta do
increment_build_number(xcodeproj: "MyApp.xcodeproj")
build_app(
scheme: "MyApp",
export_method: "app-store",
output_directory: "./build",
)
upload_to_testflight(
skip_waiting_for_build_processing: true,
changelog: changelog_from_commits,
)
slack(
message: "iOS beta build #{lane_context[SharedValues::BUILD_NUMBER]} uploaded",
)
end
desc "Submit for App Store review"
lane :release do
capture_screenshots
build_app(scheme: "MyApp")
upload_to_app_store(
submit_for_review: true,
automatic_release: false,
)
end
end
platform :android do
desc "Push a new build to Internal Testing"
lane :beta do
gradle(task: "bundleRelease")
upload_to_play_store(
track: "internal",
aab: "app/build/outputs/bundle/release/app-release.aab",
)
end
desc "Production release"
lane :release do
gradle(task: "bundleRelease")
upload_to_play_store(
track: "production",
rollout: "0.05", # 5% phased rollout
)
end
end
# .github/workflows/mobile-beta.yml
name: Mobile Beta
on:
push:
branches: [main]
jobs:
ios-beta:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
bundler-cache: true
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: bundle exec fastlane ios beta
env:
APPLE_ID: ${{ secrets.APPLE_ID }}
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
android-beta:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2
bundler-cache: true
- run: npm ci
- run: bundle exec fastlane android beta
env:
PLAY_STORE_JSON_KEY: ${{ secrets.PLAY_STORE_JSON_KEY }}
A certificate-management Fastlane Match-csel sokkal könnyebb:
# Matchfile
git_url("git@github.com:corevanix/mobile-certificates.git")
storage_mode("git")
type("appstore")
app_identifier(["com.corevanix.partneriapp"])
username("hello@corevanix.com")
A match appstore parancs letölti és telepíti a certificate-eket. CI-en automatic, lokálisan 30 másodperc.
A két beta-csatorna eltérő use case-re jó:
| Szempont | TestFlight (iOS) | Closed Testing (Android) |
|---|---|---|
| Max user | 10,000 | Korlátlan (per-group) |
| Beta-period | 90 nap | Korlátlan |
| Crash-reports | Igen | Igen (Crashlytics) |
| Beta-feedback | In-app + email | Email + Play Console |
| Review needed | Internal: nem; External: igen (24h) | Nem |
| Distribution | Email-invite vagy public-link | Email-invite vagy public-link |
| Setup-time | 1 nap | 2-4 óra |
A „valós beta" 2-4 hét. Az 50-100 user-nek elég ahhoz, hogy a major bug-okat észrevegyék, de nem annyira sok, hogy a feedback management ne legyen kezelhető.
Day 1-2: 5% rollout — figyeld a crash-rate-et
Day 3-5: 20% rollout — ha < 0.5% crash, folytasd
Day 6-10: 50% rollout — még mindig figyeld
Day 11-14: 100% rollout
A halt + hot-fix flow 1-2 nap. Jobb halt-elni, mint a tovább-rollout 100%-ig.
Az iOS-en a rollback nehéz: az app nem „régi" verzióra rollback-elhető. A megoldás: új release-t adsz be a régi build-szel (incremental version).
Android-on a Play Console „Halt rollout" gomb segíti, de a már installed user-eken nincs auto-rollback.
A defenzív stratégia: feature flag-ek. Az új feature alapból off, és server-side flippelhető.
A debug build lassabb, nagyobb, és gyakran tartalmaz dev-only credential-eket. Mindig Release configuration.
Az auto-rejection #1 oka. A privacy policy URL-nek élesben kell mutatnia, magyar + angol nyelvű (multi-locale app-en).
„Best", „top", „guaranteed" — ezek pszt megsérthetik a marketing policy-ket. Csak akkor használd, ha valóban igazolható.
A reviewer a screenshot-okat ránézi, és ha placeholder-szöveg van bennük („Lorem ipsum"), automatikus rejection.
Ha tracking-data van (Firebase, Google Analytics, Facebook SDK), az App Tracking Transparency prompt kötelező. A privacy-violation egyik leggyakoribb auto-rejection-ja.
Témához kapcsolódó saját cikkeink: React Native vs Native 2026 — platform-választás. Push értesítések helyes implementálása — push-flow tervezés. Mobil app GDPR compliance — privacy alapok deployment előtt.
A mobil deployment 2026-ban gyorsabb mint valaha — de a setup-ja továbbra is meredek. Az első store-submission tervezz be 2-4 hetet (cert, metadata, screenshot, első review).
Egy automatikus pipeline beüzemelése (Fastlane + GitHub Actions) 1-2 nap fejlesztés, de utána minden release 5-10 perc. Megéri.
Az első release után minden subsequent release egyre könnyebb. A 3. release-nél már flow-szerű, a 10. release-nél már automatic. Az invesztíció az első setup-ban — utána a deployment-friction gyakorlatilag eltűnik.
Ha mobil app projektet tervezel, beszéljük át a deployment és store-stratégiát — a release process átvétele a build-csomag része. Az első release-en a partner-developerünk személyesen ellenőrzi minden lépést, hogy az átadás-átvétel tisztán menjen.
A szerzőről
Corevanix Kft.
Tech partner
Modern tech partner — SAP/ERP, webfejlesztés, AI automatizáció és mobil app fejlesztés egy szakmai csapatban. KKV-tól enterprise projektig.
LinkedIn →
Performance benchmarks, developer experience, ecosystem és 5 use case ajánlás. React Native vagy native — döntsd el szakmai szempontok mentén.

A push notification a felhasználói retention top-3 eszköze — vagy a top-3 ok a deinstall-ra. 10 tipikus hiba és a helyes implementáció kóddal.

GDPR alapok mobilon, consent management, IDFA / GAID kezelés, analytics tools és audit checklist. A 2026-os compliance-alapok rövid összefoglalója.