Appearance
Déploiement sur les stores mobiles
Ce document couvre les règles de soumission Apple App Store (et Google Play), les pièges courants, et les options de distribution adaptées à ce projet.
Contexte du projet
L'app est une Nuxt 3 SPA (WebView potentielle via Capacitor). C'est un outil B2B interne. La distribution Apple Developer Enterprise Program est probablement la meilleure option — voir Distribution recommandée.
Apple App Store — Règles clés
Ce qui est bien vu
Technique
- App stable, sans crash au lancement et sur les flows principaux
- Respect des Human Interface Guidelines (navigation native, touch target ≥ 44pt)
- Permissions demandées uniquement si nécessaires, avec
NSUsageDescriptionexplicite - Support offline gracieux ou message d'erreur clair si connexion requise
- Pas de code obfusqué ni de téléchargement de code externe post-installation
Contenu & métadonnées
- Screenshots réels (pas de maquettes trompeuses)
- Description qui correspond exactement à ce que fait l'app
- Onboarding clair ; app utilisable sans compte si les fonctionnalités le permettent
Ce qui fait rejeter
🚫 Règle 3.1.1 — In-App Purchase (IAP)
Tout achat numérique doit passer par le système IAP Apple (commission 30%, 15% < 1M$/an via Small Business Program).
| Cas | Autorisé |
|---|---|
| Bouton "Acheter sur le web" dans l'app | ❌ |
| Lien vers votre site pour payer | ❌ (sauf US depuis 2024, avec avertissement Apple) |
| App "Reader" sans IAP ni lien externe | ✅ (modèle Spotify/Netflix) |
| IAP natif Apple | ✅ |
🚫 Règle 4.2 — Minimum Functionality (piège WebView)
Les apps qui ne font que wrapper un site web sont rejetées. Une app Capacitor/WebView doit apporter une valeur native réelle :
- Notifications push
- Mode offline
- Accès fichiers, caméra, biométrie (Face ID)
- Intégration Contacts/Calendrier
Apple vérifie si l'app est disponible sur le web — si oui, elle doit apporter quelque chose en plus.
🚫 Règle 4.3 — Apps clone / spam
Une app qui reproduit une app existante sans valeur ajoutée est rejetée.
🚫 Règle 2.1 — Complétude
Les apps "démo", "en construction" ou avec des features cassées sont rejetées. Chaque bouton et lien doit fonctionner.
🚫 Données privées
- Collecter plus de données que nécessaire
- Tracker inter-apps sans ATT consent (App Tracking Transparency — obligatoire depuis iOS 14.5)
- Ne pas déclarer les données tierces dans la Privacy Nutrition Label
🚫 Login obligatoire pour fonctionnalités de base
Si l'app peut fonctionner sans compte, cette option doit être offerte. Compte obligatoire = justification écrite requise dans les notes de review.
Ce qui a changé récemment (2024-2025)
| Changement | Impact |
|---|---|
| DMA européen (mars 2024) | Stores alternatifs autorisés en UE, sideloading via "Notarization" Apple |
| Liens web (US) | Autorisé avec feuille d'avertissement Apple imposée |
| Interopérabilité | Apple ouvre certaines APIs (NFC, etc.) à des tiers en UE |
| Small Business Program | 15% de commission pour revenus < 1M$/an |
Google Play — Différences principales
- Review généralement plus rapide (quelques heures vs 1-3 jours chez Apple)
- Moins strict sur les WebView — une PWA-to-APK passe plus facilement
- Règles IAP similaires (commission 30%, 15% < 1M$/an)
- Depuis 2022 : obligation de proposer des alternatives de paiement dans certains pays (Corée du Sud, etc.)
- Data Safety (équivalent de la Privacy Nutrition Label) obligatoire depuis 2022
Distribution recommandée
Option A — Apple Developer Enterprise Program ⭐ (recommandé pour usage interne)
- Coût : 299 $/an
- Distribution : installation directe sur appareils de l'entreprise, sans passer par l'App Store
- Avantages : zéro review Apple, déploiement immédiat, contrôle total
- Contrainte : réservé aux apps à usage interne — interdit de distribuer à des clients externes
Option B — App Store public
- Coût : 99 $/an (Apple Developer Program)
- Distribution : App Store public, review obligatoire (1-3 jours)
- À prévoir : Privacy Nutrition Label, ATT, compte de test pour le reviewer
Option C — TestFlight (bêta)
- Inclus dans le Developer Program (99$/an)
- Jusqu'à 10 000 testeurs externes, sessions de 90 jours
- Review allégée (pas de review complète avant la beta publique)
- Idéal pour valider l'app avant soumission publique
Option D — PWA (sans store)
- Coût : 0
- Accessible depuis Safari sur iOS (iOS 11.3+)
- Push notifications disponibles depuis iOS 16.4 (Web Push dans Safari)
- Limitations : stockage limité (~50MB, supprimable par iOS), pas de Face ID/NFC/Bluetooth
- Pas d'icône sur l'App Store — l'utilisateur doit "Ajouter à l'écran d'accueil" manuellement
Si on passe par Capacitor (WebView)
Capacitor.js est le wrapper le plus adapté pour transformer cette app Nuxt en app native.
bash
npm install @capacitor/core @capacitor/cli
npx cap init
npx cap add ios
npx cap add android
# Après chaque build Nuxt :
npx cap sync
npx cap open ios # Ouvre Xcode
npx cap open androidPoints d'attention pour passer la review Apple :
- Implémenter les push notifications (valeur native réelle)
- Mode offline au moins partiel (cache TanStack Query)
- Intégrer Face ID pour le login (biométrie = valeur native)
- Ne pas avoir de lien "Ouvrir dans le navigateur" visible
Checklist avant soumission App Store
[ ] Privacy Nutrition Label complète (quelles données, pourquoi, avec qui partagées)
[ ] ATT implémenté si tracking inter-apps (sinon, pas nécessaire)
[ ] Compte de test fourni dans les notes de review (login + mot de passe)
[ ] Chaque lien, bouton et feature fonctionne
[ ] Pas de références à Android, concurrents, ou prix hors IAP
[ ] Screenshots sur tous les formats requis (iPhone 6.7", 5.5", iPad si universel)
[ ] Pas d'icônes Apple modifiées (règles d'usage des symboles SF)
[ ] Description App Store ≤ 4000 caractères, subtitle ≤ 30 caractères
[ ] Age rating configuré correctement
[ ] URL de politique de confidentialité fournie (obligatoire)