Les erreurs d'envoi et de soumission App Store Connect, et comment les corriger (2026)
La plupart des erreurs App Store Connect ne sont pas dures à corriger. Elles sont dures à voir : une capture qui disparaît après un envoi réussi, une soumission refusée avec un « version incomplète » générique, une review qui ne démarre pas. Cette liste vient de la construction et de l'exploitation de la publication App Store de OneStore sur l'API d'Apple, avec de vraies apps.
Captures : IMAGE_ALPHA_NOT_ALLOWED
Symptôme : l'envoi réussit, votre outil dit OK, mais moins de captures apparaissent dans App Store Connect que vous n'en avez envoyé.
Cause : le PNG a un canal alpha. Peu importe que chaque pixel soit opaque. Apple accepte la requête de validation (elle répond 200), puis son traitement asynchrone marque la capture FAILED avec le code IMAGE_ALPHA_NOT_ALLOWED et l'écarte. Les exports des outils de design et d'un canvas de navigateur sont en RGBA par défaut.
Correction : aplatissez l'image sur un fond opaque avant l'envoi (par exemple avec sharp : .flatten({ background: '#ffffff' })), puis, après la validation, surveillez quelques secondes le assetDeliveryState de la capture pour attraper tout autre refus.
Vidéos d'aperçu : MOV_RESAVE_STEREO
Symptôme : la soumission de la version échoue avec STATE_ERROR.ENTITY_STATE_INVALID, un « version incomplète » générique. Tout ce que vous vérifiez est au vert.
Cause : une vidéo d'aperçu a échoué au traitement. Dans notre cas, la piste audio n'était pas en stéréo, et Apple a marqué l'aperçu MOV_RESAVE_STEREO. Un aperçu en échec ou encore en traitement bloque toute la soumission.
Correction : la vraie raison est dans le corps de l'erreur, sous errors[].meta.associatedErrors, une table qui associe chaque ressource (comme /v1/appPreviews/{id}) à ses propres erreurs. Lisez-la plutôt que le message principal. Puis réexportez la vidéo avec une piste audio stéréo (ou un silence stéréo), ou supprimez l'aperçu en échec et renvoyez-le.
Nouveautés manquantes sur certaines langues
Symptôme : la soumission échoue avec ENTITY_ERROR.ATTRIBUTE.REQUIRED sur whatsNew.
Cause : pour une mise à jour, chaque langue de la version doit avoir ses notes de version. Les langues ajoutées seulement pour localiser les captures ou la description ont souvent des nouveautés vides.
Correction : remplissez les nouveautés dans toutes les langues de la version, pas seulement celles que vous avez modifiées. Traduire la note principale suffit en général.
Classification d'âge : « relationship does not exist »
Symptôme : lire ou modifier la classification d'âge depuis la version renvoie un 404.
Cause : la déclaration de classification d'âge vit sur les infos de l'app (/v1/appInfos/{id}/ageRatingDeclaration), pas sur la version App Store.
Correction : récupérez les infos d'app modifiables et lisez ou modifiez la déclaration à cet endroit. Le même découpage vaut pour le nom, le sous-titre et l'URL de politique de confidentialité, qui vivent sur appInfoLocalizations.
La conformité export bloque la soumission
Symptôme : le build est rattaché, mais la version ne peut pas être soumise tant que la question sur le chiffrement n'a pas de réponse.
Correction : renseignez usesNonExemptEncryption sur le build (false si votre app n'utilise qu'un chiffrement exempté comme HTTPS), ou ajoutez ITSAppUsesNonExemptEncryption à votre Info.plist pour que chaque futur build porte la réponse. Ne répondez false que si c'est vrai pour votre app.
Les soumissions qui s'accumulent
Symptôme : créer une soumission échoue avec un 409, et vous ne pouvez pas supprimer l'ancienne.
Cause : Apple n'autorise qu'une soumission ouverte par app à la fois, et répond 403 à DELETE /v1/reviewSubmissions/{id}. Les soumissions vides laissées par des tentatives précédentes restent là.
Correction : réutilisez la soumission existante pas encore envoyée : ajoutez-y votre version si elle n'y est pas, puis soumettez-la. N'essayez pas de la supprimer.
READY_FOR_REVIEW ne veut pas dire « en review »
Une version en READY_FOR_REVIEW est prête, mais pas dans la file d'Apple. Elle y arrive par exemple quand sa soumission a été retirée. Si votre tableau de bord la range avec WAITING_FOR_REVIEW et IN_REVIEW, il affichera « en review » et proposera « annuler la review » sur une version qu'il faut en fait soumettre.
Ce que l'API refuse tout simplement
- Créer une app :
POST /v1/appsrépond 403, « The resource 'apps' does not allow 'CREATE' ». Créez l'app dans App Store Connect, puis laissez votre outil la retrouver par son bundle ID. - Modifier une réponse à un avis avec PATCH :
customerReviewResponsesrefuse UPDATE. Publier une nouvelle réponse sur le même avis remplace l'ancienne. - Résister à une panne du site : quand appstoreconnect.apple.com affiche Bad Gateway ou des erreurs Akamai, l'API publique continue souvent de répondre. Ce n'est pas votre compte.
Les attraper avant de soumettre
Presque toutes ces erreurs peuvent être vérifiées avant d'appuyer sur Soumettre. C'est ce que fait OneStore sur une version App Store : il vérifie le build, les captures pour chaque taille exigée, les aperçus, la conformité export, la classification d'âge, les infos d'app, la tarification et les nouveautés dans chaque langue. Il corrige en un clic ce que l'API permet (captures aplaties, nouveautés remplies par traduction, conformité export après votre confirmation), et quand Apple refuse quand même, il affiche les raisons d'Apple tirées de associatedErrors au lieu de « version incomplète ».
À lire aussi : métadonnées App Store sans fastlane deliver, envoyer un .ipa sans Xcode, les erreurs de l'API Google Play Developer.
Questions fréquentes
Que veut dire IMAGE_ALPHA_NOT_ALLOWED ?
Votre capture PNG a un canal alpha. Apple accepte la requête d'envoi, puis rejette la capture pendant le traitement. Aplatissez l'image sur un fond opaque et renvoyez-la.
Comment savoir pourquoi App Store Connect dit que la version est incomplète ?
Lisez errors[].meta.associatedErrors dans le corps de l'erreur de l'API. Il liste chaque ressource bloquante, comme un aperçu en échec, avec son propre code et son message.
Que veut dire MOV_RESAVE_STEREO ?
Une vidéo d'aperçu a échoué au traitement parce que son audio n'est pas au format stéréo attendu. Réexportez-la avec une piste audio stéréo, ou supprimez l'aperçu en échec, puis renvoyez-la.
Peut-on créer une app avec l'API App Store Connect ?
Non. POST /v1/apps est refusé avec un 403 indiquant que les apps n'autorisent pas CREATE. Créez d'abord l'app dans App Store Connect.
Pourquoi ne puis-je pas créer une nouvelle soumission ?
Apple n'autorise qu'une soumission ouverte par app et ne permet pas de la supprimer. Réutilisez la soumission ouverte pas encore envoyée, ajoutez-y votre version et soumettez-la.