De zéro à l'App Store : journal d'un dev curieux
Trois mois de soirs et weekends pour publier ma première app iOS. SwiftUI, HealthKit, AVFoundation, et beaucoup de patience.
Je n'avais jamais publié d'app sur l'App Store.
J'avais touché à Swift, fait des tutos, codé des petits trucs qui ne sortaient jamais du simulateur. Mais soumettre un vrai projet, avec de vrais utilisateurs, une vraie fiche produit et de vrais reviewers chez Apple — jamais.
Souffle m'a donné l'excuse parfaite pour sauter le pas.
Le choix de la stack
Dès le départ, je voulais tout faire en natif. Pas de React Native, pas de Flutter, pas de couche d'abstraction entre mon app et le téléphone. Si je faisais ça, c'était pour apprendre la vraie stack Apple.
SwiftUI pour l'interface. SwiftData pour la persistance locale. HealthKit pour enregistrer les sessions de pleine conscience dans Apple Santé. AVFoundation pour les sons. CoreHaptics pour les vibrations synchronisées avec la respiration.
Et une règle non négociable : zéro serveur. Tout reste sur l'iPhone de l'utilisateur. Pas de compte, pas de tracking, pas de base de données distante. Tu installes, tu respires. Point.
Ce choix m'a simplifié la vie sur pas mal d'aspects — pas d'API à maintenir, pas de RGPD à gérer côté serveur, pas d'infrastructure. En contrepartie, tu es seul avec le framework. Quand SwiftData fait un truc bizarre, il n'y a pas de backend pour compenser.
Le vacarme
La galère que je n'avais pas vue venir, c'est le son.
Souffle propose 13 ambiances sonores — pluie, forêt, océan, cheminée, bruit brun, etc. — plus une voix guidée qui te dit quand inspirer et expirer, plus un son de fin de session. Sur le papier, c'est simple. En pratique, c'est AVFoundation qui te rappelle que le son sur iOS, c'est un métier.
Le problème : faire cohabiter tout ça sans que ça se marche dessus. Lancer une ambiance de pluie, superposer la voix guidée au bon moment, gérer les transitions quand tu changes de phase, couper proprement le son de fin sans couper l'ambiance — et tout ça sans créer un vacarme immonde ou des glitchs audio qui cassent toute l'immersion.
J'ai passé plusieurs soirées à debugger des situations où deux sons se lançaient en même temps, où la voix se superposait à elle-même, où le volume de l'ambiance ne remontait pas après la voix. Le genre de bugs qui ne crashent pas — c'est pire, ils sonnent juste mal. Et tu ne peux pas écrire de test unitaire pour "est-ce que ça sonne bizarre".
La solution a fini par être un système de gestion des canaux audio assez strict, avec des priorités et des fondus enchaînés entre les sources. Rien de révolutionnaire, mais le genre de truc qui demande de la patience et beaucoup d'essais avec un casque sur les oreilles.
Claude Code, mon binôme de 23h
J'ai codé Souffle les soirs et les weekends, souvent tard. Et souvent avec Claude Code ouvert à côté.
Je veux être clair : je n'ai pas demandé à une IA de me générer une app. Ce n'est pas du vibe coding. Claude Code, pour moi, c'était le pote senior qui connaît la stack Swift mieux que toi et qui est disponible à 23h quand tu bloques sur un truc idiot.
"Comment je gère proprement les interruptions audio quand l'app passe en background ?" — il me donnait une piste, on en discutait, je l'adaptais à mon contexte. "Ce pattern MVVM, est-ce que c'est le bon endroit pour mettre cette logique ?" — on débattait. Parfois il avait raison, parfois non. Comme avec un vrai collègue.
Le gain n'est pas dans le code qu'il écrit à ta place. C'est dans les heures que tu ne perds pas à fouiller de la documentation, à chercher un exemple sur Stack Overflow, à essayer trois approches avant de trouver la bonne. Quand tu codes sur ton temps libre, ces heures-là comptent double.
Le design, mon point faible
Je suis développeur. Le design, ce n'est pas mon fort. Et Souffle me l'a bien rappelé.
Trouver les bonnes couleurs. Le bon espacement. La bonne taille de police. Faire en sorte qu'un écran soit lisible sans être vide, structuré sans être chargé. J'ai un respect nouveau pour les designers après cette expérience.
Le thème sombre avec les accents turquoise, je l'ai trouvé assez vite — ça collait à l'ambiance zen de l'app. Mais la mise en page, la hiérarchie visuelle, les transitions entre écrans — j'ai tâtonné. Beaucoup.
L'app n'est pas la plus belle du Store. Je le sais. Mais elle est claire, elle est fonctionnelle, et elle fait le job. Le design s'améliorera au fil des versions — c'est dans la roadmap, et cette fois je prendrai le temps de bien faire.
La soumission
En ce moment, j'écris ces lignes pendant que Souffle est en cours de soumission chez Apple. L'app tourne déjà sur TestFlight depuis quelques semaines — mon père, quelques proches, des retours, des corrections.
La soumission elle-même, c'est un exercice à part. Si tu n'as jamais rempli une fiche App Store Connect, imagine un formulaire administratif qui te demande des screenshots en trois tailles, une catégorie d'âge en sept étapes, des questions sur les droits de tes contenus tiers, une politique de confidentialité, un texte promotionnel, des mots-clés, et une description qui doit être à la fois honnête et vendeuse.
C'est fastidieux. Pas dur, mais long. Et chaque champ que tu remplis te rappelle que publier une app, ce n'est pas juste écrire du code. C'est un produit complet — du marketing, du légal, du support, de la communication.
J'ai fait les screenshots avec Hotpot et beaucoup d'itérations. La description, je l'ai réécrite quatre fois. Les mots-clés, j'ai hésité pendant une heure. Pour une app gratuite de respiration, je ne m'attendais pas à passer autant de temps sur tout ce qui n'est pas du code.
Ce que j'en retiens
Publier une première app, même petite, même gratuite, même imparfaite, c'est un exercice complet. Tu touches à tout : architecture, audio, persistance, intégration système, design, marketing, distribution. En trois mois de soirs et weekends, j'ai plus appris que dans certaines formations.
Et le truc que je n'avais pas anticipé : la fierté. Pas la fierté du code — il y a des endroits que je refactoriserais volontiers. La fierté de voir mon père ouvrir une app que j'ai faite, lancer une session, et respirer.
Le reste — les reviews Apple, les stats de téléchargement, les commentaires — viendra après. Pour l'instant, j'attends le mail d'Apple en rafraîchissant ma boîte toutes les heures.
On en reparle quand il arrive.
— Pato
Cet article fait partie d'une série sur la création de Souffle. L'article précédent raconte l'histoire personnelle derrière l'app. Le prochain article parlera des premiers retours et de ce que cette aventure m'a appris — au-delà du code.