Soumettre à la validation et répondre aux rejets
Téléversez le build avec EAS Submit ou Transporter, sélectionnez-le pour validation dans App Store Connect, puis découvrez les motifs de rejet les plus courants et comment y remédier.
Soumettre à la validation et répondre aux rejets est une leçon React Native Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Native Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Native Academy comprend 4 leçons au total.
Le processus d’examen de l’app
Après l’envoi de votre app à l’examen, l’équipe d’examen d’Apple la teste manuellement et automatiquement au regard des lignes directrices de l’App Store. Le délai d’examen moyen est de 1 à 3 jours ouvrés pour un premier envoi, et souvent inférieur pour les mises à jour. Vous pouvez vérifier le statut dans App Store Connect : En attente d’examen, En cours d’examen, Prête à la vente ou Rejetée. Apple peut poser des questions de clarification via le Centre de résolution avant de terminer l’examen.
Envoyer la version à l’examen
Une fois toutes les métadonnées complétées et une version sélectionnée, cliquez sur Ajouter pour examen dans App Store Connect, puis sur Envoyer à l’examen de l’app. Apple vérifie que vous avez répondu à toutes les questions juridiques (conformité à l’exportation, droits sur le contenu, classification du contenu). Après l’envoi, vous recevez un e-mail de confirmation. L’app passe à l’état En attente d’examen — vous ne pouvez pas modifier les métadonnées pendant l’examen, mais vous pouvez retirer l’envoi et le soumettre à nouveau si vous détectez un problème critique.
# Alternatively, use EAS Submit to upload AND trigger review:
eas submit --platform ios --latest
# EAS submit options:
# --latest Use the most recent build
# --id <build-id> Submit a specific build
# --non-interactive For CI pipelines
# Check submission status:
eas submission:list --platform iosMotifs fréquents de rejet
Comprendre les motifs fréquents de rejet vous aide à les éviter de manière proactive. Les causes les plus courantes sont : des plantages pendant l’examen (testez soigneusement avant l’envoi), des liens brisés dans l’URL d’assistance ou de confidentialité, des captures d’écran trompeuses qui ne correspondent pas au comportement réel de l’app, des fonctionnalités manquantes (l’examinateur ne peut pas se connecter sans identifiants de test) et des violations des règles de confidentialité (collecte de données sans information ni consentement de l’utilisateur).
// Top rejection categories (from Apple data):
// Guideline 2.1 - App Completeness:
// Crashes, broken links, test content visible in production
// Guideline 4.0 - Design:
// UI that doesn't match screenshots, placeholder text left in
// Guideline 5.1 - Privacy:
// Collecting user data without disclosure or tracking without ATT
// Guideline 3.1 - Payments:
// Selling digital goods outside of Apple's IAP system
// Guideline 1.0 - Objectionable Content:
// Offensive content, hate speech, graphic violenceLe Centre de résolution
Lorsque votre app est rejetée, Apple publie le motif dans le Centre de résolution d’App Store Connect. Vous pouvez répondre directement à l’examinateur, poser des questions de clarification et fournir des informations supplémentaires. Si vous pensez que le rejet est injustifié, vous pouvez faire appel ou demander un appel téléphonique avec l’équipe d’examen de l’app. Les messages du Centre de résolution sont horodatés — Apple répond généralement sous 1 à 2 jours ouvrés.
// Resolution Center communication tips:
// 1. Read the full rejection message carefully
// Apple often quotes the specific guideline violated
// 2. Ask clarifying questions if the rejection is vague
// 'Could you clarify which specific screen had the crash?'
// 3. Explain your fix clearly
// 'We have fixed the crash by adding a null check in line 45.
// The updated build (version 1.0.1) addresses this.'
// 4. Provide a video if the feature is hard to find
// Attach a screen recording to your replyLigne directrice 2.1 : intégralité de l’app
Les rejets au titre de la ligne directrice 2.1 signifient que l’examinateur a trouvé l’app incomplète ou non fonctionnelle. Les causes courantes incluent : des parcours interrompus que l’examinateur n’a pas pu terminer, des identifiants de test manquants, une fonctionnalité qui ne fonctionne que sur certains modèles d’appareils ou une connexion qui échoue (peut-être parce que votre serveur principal de préproduction est indisponible). Testez toujours l’app sur un appareil vierge avec un compte nouvellement créé, en utilisant exactement les identifiants fournis dans les notes pour l’examen.
// Pre-submission checklist to avoid 2.1:
// 1. Test on a REAL device (not just simulator)
// 2. Create a dedicated review account and TEST IT
// - Log in fresh (don't use a pre-seeded account)
// - Complete the sign-up flow from scratch
// 3. Test every tab / navigation path
// 4. Test with a fresh install (no leftover cached state)
// 5. Check that all images, API calls, and links load
// 6. Verify screenshot accuracy matches current app UILigne directrice 5.1 : violations de la confidentialité
Apple applique strictement les règles de confidentialité. La ligne directrice 5.1 couvre : la collecte de données de l’appareil sans le consentement de l’utilisateur, l’utilisation de l’IDFA ou de l’empreinte de l’appareil sans l’invite ATT (App Tracking Transparency), l’absence de chaînes de description d’utilisation dans Info.plist et l’absence de déclaration des données collectées dans la section Sécurité des données. Le cadre ATT doit être mis en œuvre si vous suivez les utilisateurs entre plusieurs apps ou sites web — en appelant requestTrackingAuthorization() avant toute activité de suivi.
// App Tracking Transparency (ATT) - required for tracking
import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency';
async function requestTracking() {
const { status } = await requestTrackingPermissionsAsync();
if (status === 'granted') {
// User opted in — enable analytics/ads
initializeAnalytics();
} else {
// User declined — use anonymous/aggregated data only
initializeAnonymousAnalytics();
}
}
// Info.plist required:
// NSUserTrackingUsageDescription: 'We use tracking to personalize ads.'Ligne directrice 3.1 : règles de paiement
Si votre app vend des biens numériques ou des abonnements, Apple exige que les achats passent par son système d’achats intégrés (IAP). Vous ne pouvez pas rediriger vers un parcours de paiement web pour du contenu numérique utilisable dans l’app — cela entraîne un rejet au titre de la ligne directrice 3.1. Les biens physiques (par exemple, commander une pizza), les services fournis en personne (par exemple, une course en taxi) et les ventes entre entreprises bénéficient d’exemptions explicites. En cas de doute, utilisez IAP.
// What requires Apple IAP:
// - Premium features / unlocks
// - Subscriptions to content or services
// - Virtual currency / gems
// - Consumable boosts inside the app
// What does NOT require IAP:
// - Selling physical goods (ecommerce)
// - Services delivered in-person (food delivery, rideshare)
// - B2B enterprise sales
// - Reader apps reading content purchased elsewhere (Reader Rule)
// e.g., Kindle, Spotify (no in-app upgrade allowed though)Demandes d’examen accéléré
Apple propose une procédure d’examen accéléré pour les situations urgentes : corrections de bogues critiques, failles de sécurité découvertes en production ou version liée à un événement médiatique majeur. Envoyez une demande d’examen accéléré via le Centre de résolution après avoir envoyé la version. Fournissez une justification commerciale — Apple évalue les demandes individuellement et n’en approuve qu’une partie. Cela ne garantit pas une approbation le jour même, mais réduit généralement considérablement le délai d’attente.
// When to request expedited review:
// - Production crash affecting >X% of users
// - Security vulnerability that needs immediate patch
// - Legal deadline (court order, regulation change)
// - Major event launch (Conference release, holiday launch)
// Process:
// App Store Connect > Resolution Center
// > Request Expedited Review
// > Choose: App Update
// > Explain the urgency (2-3 sentences)
// > Submit requestRépondre à un rejet de métadonnées
Les rejets de métadonnées (nom, captures d’écran, description) ne nécessitent pas toujours un nouveau fichier binaire. Vous pouvez mettre à jour les métadonnées et soumettre à nouveau la même version à l’examen. Corrigez l’élément précis mentionné (par exemple, une capture d’écran montrant une fonctionnalité que vous avez supprimée), mettez-le à jour dans App Store Connect et répondez dans le Centre de résolution en expliquant ce que vous avez modifié. Ce type de problème peut être résolu bien plus rapidement que ceux qui nécessitent des modifications du code.
// Metadata rejection workflow:
// 1. Read the specific guideline cited
// 2. Update the metadata in App Store Connect
// (Screenshots, Description, Keywords, etc.)
// 3. Go to Resolution Center
// 4. Reply with:
// 'We have updated the screenshot for the Home tab to accurately
// reflect the current app UI. The feature shown (X) is available
// after sign-in. Please see the updated screenshot attached.'
// 5. Click 'Resubmit for Review' (not a new version submission)Faire appel d’un rejet
Si vous n’êtes pas d’accord avec un rejet, vous pouvez faire officiellement appel auprès du comité d’examen de l’app. Cette démarche est appropriée lorsque vous pensez que votre app respecte les lignes directrices et que l’examinateur a commis une erreur. Déposez l’appel via le Centre de résolution, en citant la ligne directrice précise que vous estimez respecter et en fournissant des preuves. Les appels prennent plus de temps qu’une simple correction suivie d’un nouvel envoi. Pour les cas limites, envisagez d’appeler l’équipe d’examen de l’app : il s’agit d’une véritable conversation téléphonique avec un examinateur.
// When to appeal vs. fix-and-resubmit:
// Fix and resubmit (faster):
// - Clear violation you can fix in < 1 day
// - Crash reproducible and fixable
// - Missing info you can add easily
// Appeal:
// - You genuinely comply but reviewer misread the app
// - You need a policy exception for your use case
// - Your app is being held to a different standard
// than similar apps already on the store
// Resolution Center > Reply to Review > Request AppealAprès l’approbation : déploiement progressif
Après l’approbation, au lieu de publier immédiatement la mise à jour pour tous les utilisateurs, utilisez le déploiement progressif. Apple déploie la mise à jour auprès d’un pourcentage d’utilisateurs sur 7 jours (1 %, 2 %, 5 %, 10 %, 20 %, 50 %, 100 %). Vous pouvez interrompre le déploiement à tout moment si le taux de plantage augmente fortement. Cela limite l’impact d’un bogue qui aurait échappé aux tests. Le déploiement progressif est disponible pour les mises à jour d’apps, mais pas pour les premiers envois.
// Enable Phased Release in App Store Connect:
// My Apps > Version > Phased Release for Automatic Updates
// Select: Release over 7-day period
// Day 1: 1% of users
// Day 2: 2% of users
// Day 3: 5% of users
// Day 4: 10% of users
// Day 5: 20% of users
// Day 6: 50% of users
// Day 7: 100% of users
// You can manually pause if crash rates rise:
// Version > Phased Release > PauseVérification rapide
Vérifiez votre compréhension des concepts du développement mobile avec React Native présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris : comment fonctionne le processus d’examen de l’App Store et quels sont les délais habituels, comment utiliser le Centre de résolution pour répondre aux rejets et faire appel, ainsi que comment éviter les motifs de rejet les plus courants (intégralité 2.1, confidentialité 5.1, paiements 3.1). Vous avez également vu comment demander un examen accéléré et utiliser le déploiement progressif pour limiter les risques liés au déploiement. Nous verrons ensuite comment créer un magasin de clés et signer l’AAB Android.
Apprends JavaScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Soumettre à la validation et répondre aux rejets » est-elle gratuite ?
Oui — le texte complet de « Soumettre à la validation et répondre aux rejets » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Native Academy, passe à CoddyKit PRO. Le cours React Native Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Soumettre à la validation et répondre aux rejets » ?
Téléversez le build avec EAS Submit ou Transporter, sélectionnez-le pour validation dans App Store Connect, puis découvrez les motifs de rejet les plus courants et comment y remédier. Tu pratiques React Native Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer React Native Academy ?
Aucune expérience préalable n'est requise. React Native Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Soumettre à la validation et répondre aux rejets » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon React Native Academy ?
Oui. Chaque leçon React Native Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Configurer un compte Apple Developer et les certificats
- Configurer la signature avec EAS Build
- Préparer les métadonnées de l'App Store dans App Store Connect
- Soumettre à la validation et répondre aux rejets