SnapPress 2.0.1 vient de partir en review, et le changement principal n'est pas une nouvelle fonctionnalité. C'est la localisation complète des métadonnées App Store en neuf langues, avec toute la plomberie technique pour que ça reste comme ça. Voici l'histoire derrière cette release.
Le contexte
SnapPress a été lancé en mars 2026. La promesse était simple : arrêter de perdre 30 minutes à uploader des photos une par une vers WordPress, et expédier 20 photos vers votre médiathèque en 10 secondes directement depuis votre iPhone. La version 2.0 fin avril a ajouté une formule freemium, l'achat à vie, et une Share Extension durcie. Les ventes étaient modestes mais bien réelles, principalement des blogueurs WordPress japonais achetant directement sur l'App Store japonais.
La surprise
Deux achats sont arrivés depuis l'Australie. Aucune publicité. Aucune presse. Personne que je connaissais. Les acheteurs avaient trouvé SnapPress tout seuls via la recherche App Store, sur des métadonnées que je réalise aujourd'hui à peine localisées.
C'est à ce moment-là que j'ai regardé le tableau de bord App Store Connect avec les yeux d'un inconnu. Et j'ai remarqué quelque chose qui a changé l'ordre des priorités pour le reste de la journée.
Le problème
Le champ sous-titre de l'App Store — cette ligne de 30 caractères sous le nom de l'application qui apparaît dans les résultats de recherche et la navigation par catégories — était vide. Dans tous les marchés. Chacune des neuf langues pour lesquelles l'App Store offre un emplacement de localisation, y compris l'anglais et le japonais, les deux marchés avec le plus d'utilisateurs existants.
Le sous-titre est l'un des champs les plus pondérés dans le classement de la recherche App Store. Apple lui accorde un poids indexable comparable à celui du nom de l'app, et c'est le premier élément de copie que voit un utilisateur en recherche avant de cliquer. Le laisser vide revenait à abandonner purement et simplement 30 caractères de territoire de mots-clés par langue, multipliés par 9 langues, sur chaque requête de recherche qui compte.
Les mots-clés étaient partiellement remplis, mais uniquement en anglais et en japonais, et il manquait des termes essentiels comme "bulk", "iPhone" et "blogger". La description n'existait qu'en anglais et en japonais. Le texte promotionnel était vide partout. La seule chose entièrement remplie dans toutes les langues était, ironie du sort, les notes de version définies précédemment.
La solution
J'ai passé un dimanche après-midi à écrire deux petits kits CLI.
Le premier dialogue avec l'API App Store Connect pour lire l'état actuel de chaque localisation, générer une nouvelle version d'app, pousser le sous-titre via l'endpoint appInfoLocalizations, pousser les mots-clés / la description / le texte promotionnel / les notes de version / l'URL de support / l'URL marketing via l'endpoint appStoreVersionLocalizations, et attacher un build fraîchement archivé. L'authentification se fait par clé API App Store Connect, donc pas d'humain dans la boucle, pas de prompt 2FA en plein milieu.
Le second dialogue avec l'API Apple Search Ads Advanced. Même schéma : JWT signé en ES256, OAuth client credentials grant, jeton Bearer avec en-tête X-AP-Context. Le stockage des credentials passe par 1Password CLI, donc aucun secret ne se retrouve sur disque en clair. Résultat : "créer une campagne", "lister les mots-clés", "récupérer le rapport d'hier" deviennent des commandes shell d'une ligne au lieu de clics dans le dashboard.
Temps total pour pousser les nouvelles métadonnées sur les 9 marchés : moins de trois minutes. Avec l'archive binaire et l'upload du nouveau build : environ 10 minutes. La release 2.0.1 entière a été assemblée et soumise depuis la ligne de commande.
Ce qui est désormais en 9 langues
Les nouveaux sous-titres, tous sous la limite des 30 caractères :
- Anglais : Bulk Upload to WordPress Media (upload groupé vers la médiathèque WordPress)
- Japonais : WordPressに写真を一括アップロード (upload groupé de photos vers WordPress)
- Espagnol : Sube fotos a WordPress en masa (envoie des photos vers WordPress en masse)
- Allemand : Foto-Upload für WordPress (upload de photos pour WordPress)
- Portugais (Brésil) : Upload em massa para WordPress (upload en masse vers WordPress)
- Français : Photos en masse vers WordPress (envoi groupé de photos vers WordPress)
- Coréen : 워드프레스 사진 일괄 업로드 (upload groupé de photos WordPress)
- Italien : Foto in blocco su WordPress (photos en lot sur WordPress)
- Chinois traditionnel : 批次上傳照片到 WordPress (upload groupé de photos vers WordPress)
Chaque marché reçoit aussi une description sur mesure (environ 1 400 caractères en anglais et dans les langues européennes, naturellement plus compacte en japonais, coréen et chinois), une chaîne de mots-clés de 100 caractères optimisée pour les habitudes de recherche locales, un bloc de texte promotionnel mentionnant le prix dans la devise locale, et une ligne de notes de version annonçant le déploiement multilingue.
La leçon
Si vous développez des apps pour l'App Store et que vous n'avez pas personnellement vérifié votre champ sous-titre dans toutes les langues où votre app est publiée, considérez ceci comme un rappel. Cinq minutes suffisent pour vérifier, et un sous-titre vide est l'espace publicitaire le moins cher qu'Apple vous permette de gaspiller. Ça vaut aussi pour les mots-clés, le texte promotionnel et les notes de version après chaque release.
L'autre leçon, c'est qu'App Store Connect et Apple Search Ads ont tous les deux des API complètes, et qu'elles sont radicalement plus rapides à piloter que les dashboards web une fois la configuration d'auth faite. Si vous publiez plus de quelques releases par an, un script bash de 100 lignes qui enrobe l'API vous fera gagner des heures par release, et éliminera les petites erreurs lentement-mais-réversibles qui se glissent quand on clique sur 27 menus déroulants à la main.
La suite
La review Apple prend 24 à 48 heures. Une fois la 2.0.1 en ligne, la Phase 1 sera une petite campagne Apple Search Ads au Japon : 7 500 yens de budget mensuel, coût cible par installation autour de 250 yens, dix mots-clés japonais commençant par "ワードプレス アプリ" et "wordpress 写真 アップロード". Le but n'est pas le volume. Le but est d'obtenir des données réelles de LTV et de ROAS par utilisateur acquis, pour que la prochaine décision de budget soit informée par des chiffres au lieu de l'optimisme.
Si les chiffres tiennent la route, le même pipeline automatisé étendra la campagne aux États-Unis, puis aux deux ou trois marchés suivants où le trafic ASO semble prometteur. Si les chiffres ne suivent pas, le budget se met en pause, les captures d'écran et les prix passent au crible, et l'expérience continue avec des entrées moins coûteuses.
La partie fun quand on opère un petit produit en solo, c'est qu'on peut livrer ce genre de chose en un après-midi. La partie ennuyeuse — et celle qui compte vraiment — c'est ce qui se passe dans les 60 jours qui suivent, quand les données commencent à arriver.