Aller directement au contenu
MARDI, OCTOBRE 6, 2026ACTUALITÉS TECHNIQUES INDÉPENDANTES, TESTS ET GUIDES PRATIQUES
À PROPOS
DERNIÈRES NOUVELLES /

Comment créer une application à partir de zéro avec l'IA en 2026 : Figma, OpenCode v2, MiniMax M3.1 et l'histoire de Stash

LIRE LE GUIDE
DÉVELOPPEMENT DE LOGICIELS ET D'APPLICATIONSGM / 803

Comment créer une application à partir de zéro avec l'IA en 2026 : Figma, OpenCode v2, MiniMax M3.1 et l'histoire de Stash

Comment créer une application à partir de zéro grâce à l'IA : Figma, OpenCode v2, MiniMax M3.1 et l'App Store, avec deux captures d'écran Stash pour iPhone
How to build an app from scratch with AI: a workflow from brief to Figma, Figma's MCP server, OpenCode v2 with MiniMax M3.1, then Git, build, TestFlight and the App Store
Tout ce qui est raconté dans cet article s'est déroulé en quatre mois et demi, et sept de ces neuf dates se situent au cours des cinq dernières semaines

Dans chaque maison, il y a un tiroir qui “ avale ” tout. Les clés, le chargeur de rechange, le passeport dont on a besoin deux fois par an. On y range quelque chose « pour le garder en sécurité », et trois mois plus tard, on se retrouve à genoux en train de vider tout le contenu du tiroir par terre. Voici un guide complet pour Comment créer une application en partant de zéro avec l'IA en 2026, racontée à travers l'application que j'ai créée pour réparer ce tiroir.

Stash, c’est ma solution à ce problème de tiroir. C’est une petite application simple pour iPhone et iPad : vous prenez une photo de l’endroit où vous avez rangé un objet, vous lui donnez un nom et vous indiquez dans quelle pièce il se trouve, puis, lorsque vous en avez à nouveau besoin, vous le recherchez. C'est tout le principe. Elle a été mise en ligne sur l'App Store le 23 septembre 2026. Elle est gratuite et ne contient aucune publicité.

Je n'ai pas de formation en programmation. Tout ce que je crée, je le fais à l’aide d’agents IA, et au cours de l’année écoulée, les outils permettant de le faire sont passés du stade de “ belle démo ” à celui de “ produit prêt à être commercialisé ”. Ce guide se veut donc avant tout pratique : il décrit chaque étape, depuis un dossier vide jusqu’à la mise en ligne sur l’App Store, en prenant Stash comme exemple tout au long du guide.

C'est la pile que je recommanderais à quiconque se lancerait aujourd'hui. Figma pour la conception. OpenCode v2 en tant qu'agent de codage. MiniMax M3.1 en tant que modèle chargé de la réflexion (à proprement parler, il s’agit de M3.1-Flash-Preview, lancé le 27 septembre ; j’expliquerai pourquoi cette distinction est importante). Puis, tout ce qui n’apparaît jamais dans les tutoriels YouTube : le backend, la politique de confidentialité, App Store Connect, les captures d’écran, la validation, la page d’accueil, les mentions légales, et le coût global de tout cela.

Toutes ces informations ont été vérifiées par rapport à la documentation officielle, aux notes de mise à jour et à l'App Store lui-même sur 5 octobre 2026. Certaines informations seront obsolètes d’ici quelques semaines. Le nouveau modèle de MiniMax n’en est qu’à ses débuts, OpenCode publie des mises à jour presque quotidiennement, et Figma n’a pas encore décidé quels agents de codage pourront se connecter à son serveur MCP. J’ai signalé les éléments susceptibles d’évoluer au fur et à mesure.

Mention légale : Stash est mon application, publiée par ma société, Graham Miranda UG. Elle est gratuite, sans publicité ni achats intégrés. Cet article ne contient aucun lien d'affiliation. MiniMax, l'équipe OpenCode chez Anomaly, Figma, Apple, Google et Expo n'ont ni parrainé, ni relu, ni approuvé cet article.


TL;DR — La version en 60 secondes

  • En 2026, vous pourrez créer une véritable application “ de A à Z ” grâce à l'IA, mais « de A à Z » signifie désormais prendre des décisions, et non plus taper du code. L'agent s'occupe de l'écriture du code. Vous êtes responsable du cahier des charges, de la conception, du modèle de données, de la politique de confidentialité, des tests et des formalités administratives liées à l'App Store.
  • La pile : Figma (écrans et variables de conception) → OpenCode v2 (agent open source, licence MIT) → MiniMax M3.1-Flash-Preview (contexte de 1 million de tokens, lecture de texte, d’images et de vidéos, cinq niveaux de difficulté) → une version Expo ou Xcode → TestFlight → l’App Store. Firebase si vous avez besoin de comptes et d'une synchronisation.
  • “ MiniMax M3.1 ” désigne désormais M3.1-Flash-Preview. Il a été lancé le 27 septembre 2026 et est disponible uniquement via l'abonnement « M Plan » de MiniMax ($22, $55 ou $132 par mois, avec 50% offerts le premier mois en facturation mensuelle jusqu’au 14 octobre) et via l’application MiniMax Code. Il n’y a pas encore de prix par jeton, pas de pondérations ouvertes ni d’indice de référence publié. On ne peut pas arrêter de réfléchir, et l’effort est automatiquement réglé au maximum.
  • Cela fonctionne dans OpenCode v2 sans fichier de configuration : /connect → “ MiniMax Token Plan (minimax.io) ” → collez votre clé d'abonnement → /modèles → MiniMax-M3.1-Aperçu Flash.
  • Le bémol de Figma dont personne ne parle : Le serveur MCP distant de Figma n'accepte pas encore OpenCode. Pendant la phase bêta, l'accès est réservé aux utilisateurs figurant sur la liste blanche. Utilisez le serveur de Figma bureau Serveur MCP à l'adresse 127.0.0.1:3845 ou bien (cela nécessite l'application de bureau Figma et un abonnement payant de type « Dev » ou « Full », à partir de $12 par mois), ou encore fournir à l'agent les images exportées, que M3.1 est capable de lire.
  • La livraison est un projet à part entière : $99 par an pour le programme Apple Developer (99 € en Allemagne), des versions compilées avec Xcode 26 ou une version ultérieure, une politique de confidentialité, des mentions de confidentialité conformes à la réalité, la suppression des comptes depuis l'application si vous proposez des comptes, ainsi que les coordonnées du commerçant dans l'UE. Apple indique que 90% des soumissions sont examinées dans les 24 heures.
  • Le Stash en chiffres : Disponible depuis le 23 septembre 2026, version 1.0.1 avec un nouveau design depuis le 2 octobre, gratuite, compatible avec iOS et iPadOS 16.4 ou versions ultérieures, environ 64 Mo, sans suivi, et dotée d'un mode invité qui conserve toutes les données sur l'appareil.
  • Combien ça coûte : À propos de $363 pour la première année avec une configuration minimaliste (abonnement Apple + forfait M Plan Go), soit environ $500 avec une licence Figma Dev. Les coûts liés au backend commencent à zéro grâce aux quotas gratuits de Firebase.
  • La règle la plus importante : “ C'est fait ” est une affirmation, pas un fait. Lancez l'application sur un vrai téléphone, en mode avion, en mode sombre, avec VoiceOver activé. Après, vous y croirez.

Aperçu de la pile

CoucheOutilSon rôle dans ce processusCoût (octobre 2026)
ConceptionFigmaÉcrans, composants, variables de couleur et de police, prototype interactifFormule Starter gratuite ; un accès développeur à partir de $12/mois permet d'accéder au serveur MCP de bureau
Passerelle entre la conception et le codeServeur Figma MCP (version bureau)Transmettre les cadres, les variables et les captures d'écran à l'agentFourni avec le siège
Agent de codageOpenCode v2Créer des projets, modifier des fichiers, exécuter des commandes et effectuer des tests ; via le terminal, une application de bureau ou depuis Xcode 27Gratuit, licence MIT
ModèleMiniMax M3.1 - Aperçu FlashLe cerveau chargé de la planification et du codage ; analyse les captures d'écran et les enregistrements d'écranForfait M à partir de $22/mois
Cadre d'applicationExpo SDK 56 (iPhone + Android) ou SwiftUI avec Xcode 27 (Apple uniquement)L'application elle-mêmeGratuit ; l'offre gratuite d'Expo comprend 15 versions cloud iOS et 15 versions cloud Android par mois
Back-endFirebase (Auth, Firestore, Storage, Functions, Messaging)Comptes, synchronisation, stockage de photos, notificationsQuotas gratuits ; le stockage et les fonctions nécessitent le forfait Blaze à la consommation
DistributionApp Store Connect + TestFlightTests bêta, évaluation, lancement$99/an – Programme pour développeurs Apple
LancementUne page d'accueil statique et des pages légalesExpliquer, faire une démonstration, se conformerQuels que soient vos frais d'hébergement

Les prix indiqués sont les prix catalogue au 5 octobre 2026, hors TVA. Les conditions d'abonnement évoluent fréquemment ; veuillez donc les vérifier avant d'acheter.


Table des matières


Partie 1 — Découvrez Stash : l'application autour de laquelle s'articule ce guide

Avant de parler des outils, parlons de l'exemple. La qualité d'un guide de création d'applications se mesure à celle de l'application qu'il permet de créer ; voici donc une description précise de ce qu'est Stash, en m'appuyant sur sa fiche de l'App Store et sa politique de confidentialité plutôt que sur mon enthousiasme.

L'annonce commence par une phrase qui résume le poste : “ Vous n'aurez plus jamais à mettre la maison sens dessus dessous pour retrouver quelque chose. ” Il présente ensuite le produit dans son ensemble en trois phrases : “ Stash, c'est le moyen le plus rapide de se souvenir où l'on a rangé ses affaires. Prenez une photo, sélectionnez la pièce, enregistrez. C'est tout ce que fait l'application. ”

Cette dernière phrase résume le cahier des charges. Chaque élément de l'application sert soit à accélérer l'enregistrement, soit à faciliter la recherche. Tout ce qui ne remplit aucune de ces deux fonctions n'a pas sa place ici.

À quoi sert Stash ?

FonctionnalitéFonctionnalitésPourquoi est-ce important ?
Photo du lieuVous photographiez le tiroir, l'étagère ou la boîte, et non l'objet lui-mêmeOn se souvient des lieux par l'image ; une photo de l'endroit, c'est le souvenir lui-même
Nom, salle, emplacement précis, remarque“ Clés de la maison · Couloir · tiroir du haut · dans le plat en céramique à gauche ”Quatre champs courts valent mieux qu'une dissertation à développement libre que vous ne pourrez jamais bien rechercher
Notes vocales, transcritesPrenez une note rapide ; Stash la transforme en texte consultablePlus rapide que de taper au clavier quand on a les mains occupées
RecherchePar nom d'objet, pièce, note ou mots que vous avez notés, avec un filtre pour les objets accompagnés de photosL'intérêt de cette application, c'est justement qu'elle intervient au moment où vous en avez besoin
ChambresParcourez votre maison pièce par piècePour les moments où vous ne vous souvenez plus du nom, mais seulement de l'endroit approximatif
“ Je l'ai trouvé ”Un simple clic quand tu l'auras récupéréBoucle la boucle
RappelsLes articles saisonniers refont surface au moment où vous en avez besoinLes pneus d'hiver, les guirlandes de Noël, le matériel de camping
WidgetsWidgets de l'écran d'accueil et de l'écran de verrouillageDeux clics suffisent pour passer de “ Je devrais m'en souvenir ” à « Enregistré »
Hors ligne, puis synchronisationFonctionne sans signal ; se synchronise entre l'iPhone et l'iPad si vous disposez d'un compteLa réception est très mauvaise dans les caves et les garages
AspectClair, foncé ou selon le systèmeÀ 23 heures aussi, tout semble calme
Exporter et supprimerExportez vos favoris ; supprimez votre compte dans les ParamètresVos données restent les vôtres, et Apple exige la seconde

À quoi ça ressemble ?

La direction artistique est délibérément sobre : un fond blanc cassé aux tons chauds, un vert forêt profond, une seule touche de corail, des titres en police à empattement et une police sans empattement sobre pour le reste. Les captures d'écran de l'App Store racontent l'histoire en six titres : Chaque chose a sa place. Trouvez-la. En quelques secondes. Gardez cette place. Chez vous. Pièce par pièce. Souvenez-vous des petits détails. Une vision claire. Quelle que soit la lumière.

Afficher l'image Stash sur iPhone : enregistrez l'endroit, retrouvez-le en quelques secondes, parcourez-le pièce par pièce. Lumière ou obscurité, même sérénité.

Four Stash iPhone screenshots: Home with recently saved house keys, search results for keys, the Add screen, and the rooms grid in dark mode
Stash sur iPhone : enregistrez l'endroit, retrouvez-le en quelques secondes, parcourez-le pièce par pièce. Lumière ou obscurité, même sérénité.

Comment vos données sont traitées

C'est plus important que n'importe quelle fonctionnalité ; je vais donc citer la politique de confidentialité plutôt que de la paraphraser :

  • Mode invité : “ Si vous ne créez pas de compte, vos pièces, vos objets, vos photos et vos messages vocaux restent sur votre appareil et ne sont pas mis en ligne. ”
  • Avec un compte : La synchronisation et la sauvegarde s'effectuent sur Google Firebase (Authentication, Cloud Firestore, Cloud Storage, Cloud Functions et Cloud Messaging), avec des règles de sécurité qui garantissent l'isolation des données de chaque utilisateur.
  • Aucun modèle économique ne repose sur vous : “ Nous n'affichons pas de publicités, ne mettons pas en place de suivi publicitaire ou analytique, ne créons pas de profils d'utilisateurs et ne vendons pas vos données. ”
  • Notes vocales : Pour convertir un enregistrement en texte consultable, il est possible d'utiliser le service de reconnaissance vocale intégré au téléphone (celui d'Apple, sous iOS).
  • Suppression : Vous pouvez supprimer votre compte dans les Paramètres ou via un formulaire en ligne ; les copies seront supprimées des sauvegardes dans un délai de 30 jours.

Si vous avez lu mon article sur Pourquoi les logiciels « local-first » font leur grand retour, vous reconnaîtrez cette philosophie. L'application devrait fonctionner parfaitement sans le cloud. Le cloud est une fonctionnalité pratique à laquelle vous pouvez choisir d'adhérer.

L'encadré « Faits »

Nom sur l'App StoreStash — Trouvez-le rapidement
Sous-titreRetrouvez tout ce que vous avez rangé
Première version23 septembre 2026 (version 1.0)
Version actuelleVersion 1.0.1, publiée le 2 octobre 2026 : “ Nouvelle conception et corrections de bogues. ”
PrixGratuit, sans achats intégrés
Conditions requisesiOS ou iPadOS 16.4 ou version ultérieure ; fonctionne également sur les Mac équipés d'Apple Silicon et sur l'Apple Vision Pro en tant qu'application iPad
TailleEnviron 64 Mo
CatégorieProductivité (également répertoriée dans la rubrique « Utilitaires »)
Classification par âge4+
DéveloppeurGraham Miranda UG (à responsabilité limitée), Blankenburg (Harz), Allemagne
Site webstash.grahammiranda.network, en dix langues, avec un démonstration dans le navigateur
TéléchargerStash sur l'App Store

Ce qui n'est pas (encore) disponible dans l'application

Le site web comporte une rubrique intitulée Explorations conceptuelles avec trois idées : indiquer l'emplacement exact sur une photo, Déménagement rapide lorsqu'un objet change de lieu, et boîtes et étiquettes pour que vous puissiez voir ce qu'il y a dans une boîte sans avoir à l'ouvrir. Le site précise clairement que “ Ces idées font partie du concept interactif, mais ne constituent pas des fonctionnalités de la version disponible sur l'App Store. ”

J'apprécie cette distinction, et je la recommande à tous ceux qui développent leur première application. Explorez librement les possibilités dans un prototype. Ne publiez que ce qui fonctionne. La fiche de votre application sur l'App Store ne doit jamais promettre ce que le fichier binaire ne peut pas faire. Les modérateurs d'Apple vérifient cela, tout comme les utilisateurs qui vous attribuent une étoile.

Pourquoi c'est un bon choix pour une première application

Si vous lisez ceci parce que vous souhaitez créer votre propre application, n’hésitez pas à vous inspirer du design de Stash, même si la question des clés perdues ne vous intéresse pas :

  • Une boucle principale. Enregistrez, puis recherchez. Tout le reste vient soutenir ce cycle.
  • Données générées sur l'appareil. Aucun serveur n'est nécessaire dès le premier jour ; vous pouvez donc lancer votre produit avant même d'avoir développé l'infrastructure backend.
  • Quelques fonctionnalités concrètes de la plateforme. La caméra, le microphone, les notifications et les widgets constituent une dose idéale de fonctionnalités “ natives ” pour apprendre sans se sentir submergé.
  • Un cloud facultatif. Les comptes et la synchronisation pourraient être intégrés à la version 2 sans qu'il soit nécessaire de réécrire la version 1.
  • Pas de flux, pas de chat, pas de paiements. Chacun d'entre eux constitue un projet à part entière, avec ses propres modes de défaillance.

Un agent IA peut créer pratiquement tout ce que vous pouvez décrire. Le plus difficile, c'est de décrire quelque chose d'assez simple pour qu'il puisse le réaliser.


2e partie — La pile technologique de 2026 pour développer une application à partir de zéro avec l'IA

Trois outils, trois tâches distinctes :

  1. C'est Figma qui détermine l'apparence de l'application.
  2. OpenCode décide de la manière dont le travail est effectué : quels fichiers lire, quelles commandes exécuter, quelles questions vous poser avant d'entreprendre toute action risquée.
  3. C'est MiniMax M3.1 qui réfléchit Dans les coulisses d'OpenCode : planification, écriture de code, analyse de captures d'écran, correction des bugs.

La séparation de ces tâches est le choix architectural le plus important de tout ce guide, et cela n’a rien à voir avec le code. Lorsqu’un meilleur modèle sortira le mois prochain (et ce sera le cas), il vous suffira de modifier une ligne dans un fichier de configuration. Lorsqu’un meilleur outil de conception sera disponible, votre agent n’en tiendra pas compte. Rien n’est figé.

Pourquoi OpenCode v2 est l'agent idéal

OpenCode est un agent de programmation IA open source sous licence MIT. Il suffit de lui indiquer un dossier de projet, de lui décrire ce que vous souhaitez, et il fonctionne comme le ferait un développeur : il lit le code, élabore un plan, modifie les fichiers, exécute des commandes, analyse les erreurs, les corrige et poursuit son travail.

La version 2.0.0, fruit d'une refonte complète, a été publiée le 11 septembre 2026, et l'équipe avait déjà mis en ligne la version 2.0.22 dès le 2 octobre. J'ai abordé cette refonte en détail dans mon Analyse approfondie d'OpenCode v2, voici donc uniquement ce qui est important pour développer une application :

  • Il est indépendant du modèle. Plus de 75 prestataires via Models.dev, ainsi que des mannequins locaux. MiniMax est intégré.
  • Un serveur de données partagées. L'interface du terminal, l'application de bureau, l'interface utilisateur du navigateur et les extensions de l'IDE ont toutes accès aux mêmes sessions.
  • Des autorisations qui fonctionnent comme un pare-feu. Une liste ordonnée de règles d'autorisation, de demande et de refus, dans laquelle la dernière correspondance prévaut ; par conséquent, “ ne jamais exécuter » git push” “ et ” ne jamais soumettre à l'App Store » occupent chacun une ligne.
  • Annuler à chaque étape. Des instantanés avant et après chaque étape de modélisation, avec /annuler et /refaire.
  • Les sous-agents que vous pouvez voir et bloquer, et les compétences qui se chargent à partir de .opencode, .claude et .agents dossiers.
  • Il fonctionne sous Xcode 27. Le nouvel Xcode d'Apple prend en charge tout agent compatible avec le protocole Agent Client Protocol, et opencode acp c'est exactement ce qu'il fait (configuration décrite dans la partie 4).

La page d'accueil compte désormais 208 000 étoiles sur GitHub, 950 contributeurs et 16 millions de développeurs par mois. Deux mises en garde à prendre en compte, tirées de la documentation de la v2 : le partage de session n'est pas encore de retour dans la v2, et les plugins de la v1 ne se chargent pas.

Pourquoi le MiniMax M3.1 est-il le modèle de référence ?

La troisième partie aborde le sujet en profondeur, mais pour résumer, il s’agit de trois propriétés qui se révèlent particulièrement bien adaptées au développement d’applications :

  • Une fenêtre de contexte de 1 000 000 de tokens. Une petite application, ses notes de conception, son fichier AGENTS.md et la documentation correspondante tiennent facilement dans une seule session de travail, avec même un peu de marge.
  • Il lit les images et les vidéos, pas seulement le texte. Vous pouvez joindre un cadre Figma, une capture d'écran du simulateur ou un enregistrement d'écran illustrant le bug.
  • Cinq niveaux d'effort, tiré de faible à max, ce qui permet d'approfondir la réflexion sur la planification et d'accélérer les tâches techniques.

En contrepartie, il s'agit d'une version préliminaire sans benchmarks publiés ni tarification par jeton, accessible uniquement via l'abonnement proposé par MiniMax. J'y reviendrai, car ce n'est pas une réserve négligeable.

Pourquoi Figma est l'outil de conception idéal

Figma reste l'outil incontournable pour la conception d'applications. La formule gratuite « Starter » suffit amplement pour concevoir une première application. Ses variables deviennent vos « design tokens », c'est-à-dire les couleurs, les espacements et les tailles de police qui garantissent la cohérence sur tous les écrans. Et c'est Serveur MCP permet à un agent de codage de lire directement une image sélectionnée, ce qui est à ce jour ce qui se rapproche le plus d'une fonctionnalité “ pour que ça ressemble à ça ” qui fonctionne réellement.

Lors de la conférence Config 2026 (du 23 au 25 juin à San Francisco), Figma a également ouvert son Figma Agent à tous les abonnements payants en version bêta ouverte, ajouté une timeline d’animation et présenté en avant-première les “ couches de code ”, qui traitent le code comme un objet à part entière sur le canevas. Vous n’avez besoin d’aucune de ces fonctionnalités pour créer votre première application. Il est toutefois utile de savoir dans quelle direction les choses évoluent.

Et tout ce “ truc ”

Les éléments que personne ne met dans la vignette :

Quoi ?OptionsAbordé dans
Cadre d'applicationExpo (React Native) pour iPhone et Android ; SwiftUI avec Xcode 27 pour Apple uniquement ; Flutter7e partie
Back-endFirebase est la solution par défaut la plus simple pour la gestion des comptes, la synchronisation et le stockage de fichiers7e partie
Contrôle de versionGit, sans faute. GitHub ou un service similaire pour la sauvegardeParties 4 et 7
Compilations et signatureXcode sur un Mac, ou les compilations cloud EAS d’Expo sans MacParties 7 et 8
Tests et mise en productionTestFlight et App Store ConnectPartie 8
LancementUne page d'accueil, une démo, les mentions légales, l'optimisation pour l'App StorePartie 9

Afficher l'image L'ensemble du processus sur une seule page. Vous vous trouvez à gauche (le cahier des charges), au milieu (l'examen de chaque modification) et à droite (en cliquant sur “ Soumettre pour révision ”).

Ce que signifie aujourd'hui “ partir de zéro ”

Voici la vérité dérangeante concernant le développement d'une application intégrant l'IA en 2026 : l'agent se charge de la partie qui était autrefois difficile, et vous laisse celle qui a toujours été difficile.

Vous possédezL'agent est propriétaire de
À quoi sert l'application, et ce qu'elle ne fait pasTransformer cela en fichiers, composants et fonctions
Les écrans et le système de conceptionLes mettre en œuvre, écran par écran
Le modèle de données : quelles informations sont stockées, où et pendant combien de temps ?Écriture du code de stockage, de synchronisation et de migration
La rubrique « Confidentialité », les mentions légales et les réponses concernant l'App StoreVérification du code pour garantir l'exactitude de vos réponses
Des tests sur de vrais appareils, avec de vraies personnesÉcriture et exécution de tests automatisés
Cliquer sur “ Envoyer ”Ne jamais cliquer sur “ Envoyer ”

Si ce tableau vous rend un peu nerveux, tant mieux. C'est justement cette nervosité qui fait la différence entre une application prête à être commercialisée et un dossier rempli de code qui fonctionne à moitié.


3e partie — MiniMax M3.1 : tout ce qu’il faut savoir, en toute franchise

Si vous effectuez une recherche sur “ MiniMax M3.1 ” dès maintenant, vous tomberez sur des articles qui semblent s'affirmer avec certitude au sujet d'un modèle qui, à proprement parler, n'est pas encore sorti. Voici ce qui existe réellement, ce que vous pouvez utiliser dès aujourd'hui et ce que personne ne sait encore.

Ce qui existe, par ordre

  • 1er juin 2026 : MiniMax M3. Un modèle à poids ouverts et multimodal de par nature, doté d’une fenêtre de contexte d’un million de tokens, d’une architecture de type « mélange d’experts » comptant environ 428 milliards de paramètres au total, dont environ 23 milliards actifs par token, et du mécanisme d’attention clairsemée propre à MiniMax. Je l’ai comparé au modèle GLM-5.3-Flash pour OpenCode en août, dans GLM-5.3-Flash vs MiniMax M3.
  • Juillet : “ M3.1 ” devient un nom. Des comptes rendus de la Conférence mondiale sur l'intelligence artificielle à Shanghai ont fait état d'un modèle M3.1 doté d'un contexte d'un million de tokens et de capacités multimodales renforcées. Aucune information n'a été fournie concernant le modèle, son identifiant ou son prix.
  • 23 septembre : un mannequin mystérieux. Un modèle anonyme baptisé “ Space Bunny Alpha ” est apparu sur OpenRouter et dans OpenCode sous forme d’aperçu gratuit, avec un contexte de 1 M et un raisonnement ajustable. L’analyse indépendante de l’empreinte du tokeniseur a indiqué qu’il s’agissait de MiniMax. MiniMax n’a rien confirmé, et la correspondance du tokeniseur constitue un indice quant à une famille de modèles, mais pas une preuve.
  • 27 septembre : MiniMax M3.1 - Aperçu de la version Flash. Le premier modèle de la gamme M3.1 accessible à tous, lancé dans l'application de programmation de MiniMax, « MiniMax Code », et via son abonnement de programmation. MiniMax le décrit comme un modèle destiné à “ Un développement au quotidien, rapide, fiable et prêt à l'emploi, qu'il s'agisse de corrections rapides de bogues ou de fonctionnalités complètes. ”
  • 30 septembre : le Plan M. La version 3.1.0 de MiniMax Code s'accompagne d'un nouvel abonnement appelé « M Plan », qui remplace le « Token Plan » pour les nouveaux clients, à des tarifs identiques.

La version complète du M3.1 prévue pour cet été n'a toujours pas été livrée. Lorsque les gens parlent du “ M3.1 ” en octobre 2026, ils font référence au M3.1-Flash-Preview, et c'est également ce que j'entendrai par là dans la suite de cet article.

Afficher l'image Tout ce qui est relaté dans cet article s'est déroulé en quatre mois et demi, et sept de ces neuf dates se situent au cours des cinq dernières semaines.

MiniMax M3 vs M3.1 – Aperçu Flash

MiniMax M3MiniMax M3.1 - Aperçu Flash
Publié1er juin 202627 septembre 2026
StatutDisponible pour tousAvant-première
Identifiant du modèleMiniMax-M3MiniMax-M3.1-Aperçu Flash
Fenêtre de contexte1 million de jetons1 000 000 de jetons
SaisieTexte, image, vidéoTexte, image, vidéo
RéflexionPeut être activé ou désactivéToujours activé. Cinq niveaux d'effort : faible, moyen, élevé, xhigh, max (par défaut max)
Poids libresOui, sous la licence communautaire MiniMaxPas de poids, pas de fiche technique
Tarif à l'utilisation$0,30 par million de jetons en entrée, $1,20 en sortie, $0,06 en cache ; double au-delà de 512 Ko en entréeNon publié. Réservé aux abonnés
Où pouvez-vous l'utiliser ?API MiniMax, OpenRouter, OpenCode Go, Ollama Cloud et de nombreux autres hébergeursUniquement pour les abonnements au forfait M et le code MiniMax
Tests de performance publiésOui, de MiniMax et de cartes indépendantesAucun
ArchitectureEnviron 428 milliards au total, environ 23 milliards d'éléments actifs, MoE clairseméNon communiqué
Dans OpenCode v2Intégré, via plusieurs fournisseursIntégré via “ MiniMax Token Plan (minimax.io) ”

Capture d'écran tirée de la documentation de MiniMax et du site Models.dev, le 5 octobre 2026. Les aperçus sont susceptibles d'être modifiés sans préavis ; veuillez vérifier avant de vous fier à une ligne quelconque.

Une chose qui mérite d'être analysée : selon la documentation, la réflexion ne peut pas être désactivée. Envoyer thinking.type : " disabled " ou un effort de aucun, et l'API renvoie une erreur 400 indiquant, en substance, que le modèle “ nécessite une réflexion adaptative. ” Ce que vous pouvez contrôler, c'est l'intensité avec laquelle il réfléchit.

Comment en bénéficier : le « M Plan »

La documentation de MiniMax est très claire en ce qui concerne l'accès : “ MiniMax-M3.1-Flash-Preview n'est disponible pour l'instant que via M Plan et MiniMax Code. ”

Niveau « M Plan »PrixCe qui est inclus
Aller$22/moisM3.1-Flash-Preview, ainsi que les modèles d'image et audio de MiniMax
Découvrir$55/moisTout ce qu'offre Go, avec en plus le modèle vidéo H3
Construire$132/moisToutes les fonctionnalités d'Explore, avec le plus grand volume de données inclus

Quelques détails qui comptent plus que les prix affichés :

  • Offre de lancement : 50% de réduction sur votre premier mois en cas de facturation mensuelle, jusqu'au 14 octobre 2026. L'offre ne s'applique pas à la facturation annuelle. Après le premier mois, l'abonnement est renouvelé au prix plein, sauf si vous désactivez le renouvellement automatique.
  • Semaine gratuite : Tous les abonnés ont bénéficié d'un accès illimité à M3.1-Flash-Preview du 1er au 7 octobre (heure chinoise). Si vous lisez ceci après le 7, cette offre n'est plus valable.
  • Il s'agit d'une clé d'abonnement, et non d'une clé API. La documentation de MiniMax indique clairement que les clés d'abonnement et les clés API « pay-as-you-go » ne sont pas interchangeables. Vous devrez coller la clé d'abonnement dans OpenCode.
  • Des quotas, pas un comptage. L'utilisation est limitée à des périodes glissantes de cinq heures et hebdomadaires, et le quota non utilisé n'est pas reporté. Pour les niveaux équivalents du « Token Plan », les recommandations de MiniMax étaient d'environ trois à quatre, quatre à cinq et six à sept agents actifs simultanément.
  • Abonnés actuels au programme « Token Plan » conserver leur forfait. Les nouveaux clients souscrivent au forfait M.
  • Outils pris en charge Parmi les logiciels présentés sur la page « M Plan » de MiniMax, on trouve Claude Code, Codex, Cursor, OpenCode, Hermes Agent et OpenClaw.

Code MiniMax Il s'agit d'un agent de bureau pour macOS et Windows, doté d'un mode “ codage ” et d'un mode « travail » dédié à la recherche et aux documents, ainsi que d'une version en ligne de commande. C'est un excellent moyen de tester le modèle. J'utilise OpenCode car il ne me lie à aucun fournisseur de modèles en particulier, ce qui est justement l'objectif de la deuxième partie.

Pourquoi cette solution est-elle adaptée au développement d'applications ?

  • La fenêtre contextuelle change votre façon de travailler. Une petite application mobile compte quelques milliers de lignes de code, voire quelques dizaines de milliers. Avec un million de tokens, l’agent peut stocker simultanément l’intégralité du code source, votre fichier AGENTS.md, le modèle de données et une partie de la documentation de la plateforme. Moins de moments du type “ J’ai oublié ce qu’on avait décidé ”. (Le guide OpenCode de MiniMax limite la fenêtre à 512 Ko dans son exemple de configuration, que je vous conseille de reproduire. Des contextes plus courts signifient des réponses plus rapides.)
  • Montrez-le, ne le décrivez pas. Comme il prend en charge les images et les vidéos, vous pouvez y insérer un cadre Figma exporté, une capture d'écran du simulateur iOS ou un enregistrement d'écran montrant le bug où le clavier masque le bouton « Enregistrer ». Cette dernière option, à elle seule, vous évite une quantité incroyable de saisie.
  • L'effort, c'est un régulateur, pas un interrupteur. max pour planifier une fonctionnalité ou résoudre un bug de synchronisation. faible ou moyen pour renommer des éléments, écrire des tests et traduire des chaînes de caractères. La partie 4 explique comment configurer cela pour chaque agent.
  • Le tarif est forfaitaire. Pour un développeur travaillant seul, une facture mensuelle prévisible vaut mieux que de devoir surveiller un compteur à jetons pendant une longue session de débogage.

Un premier test indépendant a donné un résultat d'environ 90 à 110 jetons par seconde dès le premier jour. Il s'agit d'une simple mesure, et non d'un test de performance, mais cela correspond bien au nom “ Flash ”.

Ce que personne ne sait encore

C'est justement cet aspect que la plupart des articles consacrés à la norme M3.1 omettent :

  • Il n'y a pas de références. Ni chez MiniMax, ni sur les forums indépendants, car un modèle accessible uniquement via l'abonnement d'une seule entreprise est difficile à tester de manière indépendante. C'est vous qui êtes la référence. Confiez-lui une tâche concrète issue de votre propre projet, confiez la même tâche à un modèle auquel vous faites déjà confiance, puis comparez les résultats.
  • Il n'y a pas de prix par jeton. Ça ne pose pas de problème dans le cadre d'un abonnement. En revanche, cela devient problématique si vous souhaitez exécuter le modèle dans un environnement d'intégration continue (CI) ou dans un produit, où vous devez connaître le coût d'un million de jetons.
  • C'est un avant-goût. Il peut changer de comportement, être renommé ou être remplacé par la version complète M3.1 sans préavis. Conservez l'identifiant du modèle dans un seul fichier de configuration afin que son remplacement ne nécessite qu'une seule ligne de modification.
  • La réflexion ne s'arrête jamais. Même les requêtes les plus simples impliquent un certain effort de réflexion. Réduisez l'effort nécessaire pour les petites tâches.
  • Ce produit est disponible exclusivement chez MiniMax. Au moment où nous écrivons ces lignes, cette fonctionnalité n'est disponible ni sur OpenRouter, ni sur Ollama Cloud, ni sur OpenCode Go. Vos invites et votre code sont transmis aux serveurs de MiniMax ; par conséquent, si vous travaillez pour un client soumis à des règles strictes en matière de données, nous vous recommandons de lire au préalable les conditions générales de MiniMax ou de mener ce projet sur des modèles locaux.

Ne téléchargez pas “ MiniMax M3.1 ”

Moins d'un jour après le lancement, des dépôts GitHub n'ayant aucun rapport avec MiniMax ont fait leur apparition, promettant un “ téléchargement officiel gratuit ” de M3.1-Flash sous forme de fichier ZIP pour Windows, prêt à “ décompresser et exécuter ”. Il n'existe aucun fichier de poids M3.1 à télécharger, et le code MiniMax provient du site web officiel de MiniMax. Considérez tout “ téléchargement M3.1 ” comme un logiciel malveillant jusqu'à preuve du contraire.

Quand utiliser plutôt le MiniMax M3 ?

Utilisation M3 si vous avez besoin de fonctionnalités qui ne sont pas proposées dans la version d’essai : une tarification à l’utilisation, des poids ouverts que vous pourriez héberger vous-même, ou un accès via OpenCode Go, Ollama Cloud ou OpenRouter. C’est également le choix le plus sûr pour tout ce qui est automatisé, car son prix et son fonctionnement sont documentés. Si vous souhaitez avoir une vue d’ensemble plus large des alternatives, mon MiniMax M3 contre Kimi K2.7 Code contre Nemotron 3 Ultra La comparaison porte sur l'ensemble du domaine.


Partie 4 — Configuration d'OpenCode v2 avec MiniMax M3.1, étape par étape

Voici la configuration que je proposerais à un ami. Cela prend environ quinze minutes, dont la majeure partie est consacrée à attendre que les fichiers se téléchargent.

Étape 0 — Ce dont vous avez besoin avant toute chose

  • Un Mac équipé d'un processeur Apple Silicon, si vous souhaitez développer et exécuter des applications iPhone en local. Xcode 27 (sorti le 14 septembre 2026) ne prend plus en charge les Mac Intel et nécessite macOS Tahoe 26.4 ou une version ultérieure. Si vous optez pour Expo, comme indiqué dans la partie 7, vous pouvez compiler des applications iOS dans le cloud depuis Windows ou Linux, mais vous aurez tout de même besoin d’un véritable iPhone pour les tester.
  • Git. Les instantanés, les branches et votre propre santé mentale en dépendent tous.
  • Node.js (LTS) si vous comptez utiliser Expo.
  • Un abonnement au forfait MiniMax M (3e partie).
  • Un terminal moderne. Le Terminal de macOS est très bien ; Ghostty, WezTerm et Kitty sont toutefois plus agréables à utiliser.

Étape 1 — Installer OpenCode v2

bash

curl -fsSL https://opencode.ai/v2/install | bash

opencode --version # devrait afficher 2.0.x
opencode service status     # : le serveur d'arrière-plan partagé devrait être en cours d'exécution

Vous souhaitez également l'application de bureau ? Téléchargez-la depuis opencode.ai/download, ou sur un Mac, lancez brew install --cask opencode-desktop. Le terminal et l'application de bureau partagent un même serveur ; ainsi, une session que vous lancez sur l'un d'eux s'affiche également sur l'autre.

Un point à surveiller : le guide OpenCode de MiniMax indique toujours l'URL du programme d'installation de la version 1 (opencode.ai/install). Utilisez le /v2/installation celui du dessus.

Étape 2 — Obtenez votre clé d'abonnement au M Plan

Abonnez-vous sur la plateforme MiniMax et créez un clé d'abonnement dans la console. Il ne s'agit pas d'une clé API à l'utilisation : ce sont deux produits différents, et seule la clé d'abonnement vous donne accès à M3.1-Flash-Preview.

Considérez cette clé comme un mot de passe. Ne la collez jamais dans une conversation, une capture d'écran ou un dépôt Git.

Étape 3 — Connecter MiniMax à OpenCode

bash

cd ~/code/my-app
opencode

Ensuite, dans OpenCode :

  1. Type /connect et recherchez Plan de distribution des jetons MiniMax (minimax.io). Le prestataire a conservé son ancien nom ; il accepte les clés M Plan.
  2. Collez votre clé d'abonnement.
  3. Type /modèles et choisir MiniMax-M3.1-Aperçu Flash.

Et voilà. Le catalogue de modèles d’OpenCode (Models.dev) répertorie déjà ce modèle avec son contexte de 1 000 000 de tokens, ses données d’entrée (images et vidéos) et ses cinq niveaux d’effort ; vous n’avez donc pas besoin d’un fichier de configuration pour commencer. S’il n’apparaît pas dans /modèles, mettez d'abord à jour OpenCode ; la configuration de l'étape 4 permet également de l'ajouter manuellement.

Deux possibilités : Connexion à OpenCode via l'authentification fait la même chose depuis le terminal, ainsi que l'assistant de configuration de MiniMax (npx -y mmx-cli@latest agent setup) installe et configure OpenCode pour vous, avec M3 comme version par défaut. Passez ensuite à la version M3.1 à l'aide de /modèles. Les comptes sur la plateforme chinoise de MiniMax utilisent la version “ (minimax.cn) ” du fournisseur.

Étape 4 — Ajouter une configuration de projet

Les paramètres par défaut fonctionnent, mais un projet d'application mérite un fichier de configuration qui remplisse trois fonctions : orienter chaque agent vers le niveau de charge de travail approprié, définir des autorisations empêchant l'agent d'effectuer des actions irréversibles, et connecter vos serveurs MCP. Enregistrez ce fichier sous le nom opencode.jsonc Dans le répertoire racine de votre projet :

jsonc

{
  "$schema" : "https://opencode.ai/config.json",

  // Modèle par défaut pour les nouvelles sessions
  "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview",

  "providers": {
    "minimax-coding-plan": {
 "models": {
 "MiniMax-M3.1-Flash-Preview": {
 // L'exemple OpenCode de MiniMax limite la fenêtre à 512 Ko
          "limit": { "context": 524288 },

 // La réflexion est toujours activée et la valeur par défaut est " max ".
 // Ces variantes envoient le champ output_config.effort documenté par MiniMax.
          "variants" : [
 { "id" : "quick", "body" : { "output_config" : { "effort" : "low" } } },
            { "id": "steady", "body": { "output_config": { "effort": "medium" } } },
            { "id": "careful", "body": { "output_config": { "effort": "high" } } }
 ]
 }
 }
    }
  },

  "agents" : {
    // La planification bénéficie de l’effort par défaut maximal : un mauvais plan coûte le plus cher par la suite
    "plan" :    { "model" : "minimax-coding-plan/MiniMax-M3.1-Flash-Preview" },
    // Construction : approfondie, mais plus rapide que " max "
    "build":   { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#careful" },
    // Recherche en lecture seule dans la base de code : la vitesse prime sur la profondeur
    "explore": { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#quick" }
  },

  "permissions" : [
    { "action" : "shell", "resource" : "*", "effect" : "ask"   },
    { "action": "shell", "resource": "git status *", "effect": "allow" },
    { "action": "shell", "resource": "git diff *", "effect": "allow" },
    { "action": "shell", "resource": "git log *", "effect": "allow" },
    { "action": "shell", "resource": "npm test *", "effect": "allow" },
    { "action": "shell", "resource": "npx tsc *", "effect": "allow" },
    { "action": "shell", "resource": "npx expo lint *",    "effect": "allow" },
    { "action" : "shell", "resource" : "git push *", "effect" : "deny"  },
    { "action" : "shell", "resource" : "eas submit *", "effect" : "deny"  },
    { "action" : "shell", "resource" : "firebase deploy *",  "effect" : "deny"  }
  ],

  "mcp" : {
    "servers" : {
 // Serveur MCP de bureau de Figma (Partie 6). Local, donc pas d’OAuth.
      "figma-desktop" : {
 "type" : "remote",
 "url" : "http://127.0.0.1:3845/mcp",
 "oauth" : false
 },
      // Serveur MCP officiel de Firebase. Il demande confirmation avant de modifier votre projet.
      "firebase" : {
 "type" : "local",
 "command" : ["npx", "-y", "firebase-tools@latest", "mcp"]
 }
    }
  }
}

Quelques remarques pour que vous sachiez ce que vous collez :

  • Les règles d'autorisation sont lues de haut en bas, et c'est la dernière correspondance qui prévaut. Chaque commande shell fait d'abord l'objet d'une vérification : les commandes Git et test, inoffensives, s'exécutent librement, tandis que trois opérations sont purement et simplement refusées : la publication de code, la soumission à l'App Store et le déploiement de votre backend. Vous effectuez ces opérations vous-même, et ce, de manière délibérée.
  • Remplacez les commandes autorisées par celles de votre chaîne d'outils. Si vous développez en mode natif avec Xcode plutôt qu'avec Expo, remplacez le npx lignes contenant vos commandes de test et de vérification.
  • Si une variante ne semble pas avoir d'effet, courir /modèles pour vérifier les noms des variantes et consulter la requête dans les journaux d'OpenCode. MiniMax utilise max lorsqu'aucune requête n'est envoyée, le pire scénario est donc une réponse plus lente, et non une réponse erronée.
  • Les anciens exemples de type v1 fonctionnent toujours. Le guide de MiniMax utilise la version 1 fournisseur Remarque : OpenCode v2 lit les paramètres pris en charge de la v1 sans réécrire votre fichier.

Étape 5 — Créez un fichier AGENTS.md avant d'écrire la moindre ligne de code

OpenCode indique AGENTS.md au début de chaque session. C’est l’habitude la plus efficace qui soit dans le développement assisté par l’IA, et mon Guide de codage Vibe est intégré à l'ensemble du système. Pour une application, il doit contenir les règles relatives au produit ainsi que les commandes de compilation. Voici à quoi ressemble celui d'une application comme Stash :

markdown

# Notes à l'attention des développeurs (exemple pour une application de type Stash)

## En quoi consiste cette application ?
Stash mémorise l'emplacement des objets. Photo de l'endroit + nom + pièce = retrouvé en quelques secondes.
Si une modification ne permet pas d’accélérer l’enregistrement ou la recherche, elle n’a pas sa place ici.

## Les principes non négociables
- Priorité au mode hors ligne. Toutes les fonctionnalités fonctionnent sans connexion réseau. La synchronisation est un bonus.
- Le mode Invité ne télécharge jamais rien.
- Pas d’analyses, de publicités ni de SDK de suivi. Demandez l’autorisation avant d’ajouter TOUTE dépendance.
- Aucun secret dans le bundle de l’application. Les opérations privilégiées s’effectuent dans Cloud Functions.
- Accessibilité : Dynamic Type, étiquettes VoiceOver, cibles tactiles de 44 x 44 pt.
- Mode clair et mode sombre pour chaque écran.

## Conception
- Les tokens se trouvent dans src/theme/tokens.ts. Ne codez jamais en dur une couleur ou une taille de police.
- Lors de l’implémentation d’un cadre Figma : get_design_context, puis get_variable_defs,
  puis get_screenshot pour comparer votre résultat.

## Commandes
- Installation : npm install
- Exécution : npx expo start
- Test : npm test
- Types : npx tsc --noEmit
- Lint : npx expo lint

## Définition de « terminé »
- Les tests, les types et le lint sont réussis
- Fonctionne en mode avion
- Fonctionne en mode clair et en mode sombre, avec la plus grande taille de texte
- Aucun nouvel avertissement dans la console

Étape 6 (facultative) — Lancez OpenCode depuis Xcode et mettez-lui à disposition les outils de Xcode

Xcode intègre désormais le codage agentique et prend en charge les agents externes de deux manières différentes. Il est utile de connaître ces deux méthodes si vous développez en mode natif.

OpenCode en tant qu'agent au sein de Xcode (ACP). Xcode peut héberger n'importe quel agent compatible avec le protocole Agent Client Protocol, ce qui est le cas d'OpenCode, via opencode acp.

  1. Commencez par vous connecter depuis le terminal : Connexion à OpenCode via l'authentification.
  2. Courir quel opencode et copiez le chemin d'accès absolu. Xcode ne développe pas ~ ou consulter la variable PATH de votre shell.
  3. Dans Xcode, sélectionnez Xcode → Paramètres → Intelligence, puis, dans la rubrique « Agents », cliquez sur Ajouter un agent.
  4. Collez le chemin d'accès en tant que commande et ajoutez acp comme argument.
  5. Lancez une nouvelle conversation dans la barre latérale « Intelligence » de Xcode, puis sélectionnez « OpenCode ».

Il n'est pas possible de changer de modèle depuis l'interface de Xcode ; vous devez donc définir votre modèle par défaut dans opencode.jsonc Tout d'abord.

Les outils Xcode intégrés à OpenCode (MCP). L'inverse est souvent plus pratique : OpenCode reste dans votre terminal, mais il peut compiler votre projet, exécuter des tests et afficher des aperçus SwiftUI via Xcode.

  1. En Xcode → Paramètres → Intelligence, dans « Model Context Protocol », activez Autoriser les prestataires externes à utiliser les outils Xcode.
  2. Ajouter le pont Xcode à OpenCode : opencode mcp add xcode -- xcrun mcpbridge
  3. Ouvrez votre projet dans Xcode avant de lancer la requête. Le pont communique avec l'instance d'Xcode en cours d'exécution, et Xcode vous avertit lorsqu'un agent externe se connecte.

Quel niveau d'effort pour quelle tâche ?

TâcheAgentEffort
Planification d'une fonctionnalité, du modèle de données ou de la logique de synchronisationplanmax (par défaut)
Implémentation d'un écran à partir d'un cadre Figmaconstruireélevé
Correction d'un bug dont la reproduction est facile à reproduireconstruireélevé; max s'il s'agit d'un bug lié à la synchronisation ou à une condition de concurrence
Rédaction de tests, changement de nom, petites refactorisationsconstruiremoyen
Searching the codebase, reading docsexplorefaible
Copy changes and string translationsconstruirefaible ou moyen

Higher effort means more thinking tokens and more waiting, in MiniMax’s own words. Most of the time in an agent loop is spent waiting, so match the effort to the risk.


Partie 5 — Concevoir votre application dans Figma quand vous n'êtes pas designer

You don’t need to be a designer to design a good first app. You need a small number of decisions, made once, written down where the agent can read them.

Start with words, not rectangles

Before you open Figma, write three things in a plain text file:

  1. The promise, in one sentence. For Stash: the fastest way to remember where you put things.
  2. Three user stories. “I put my passport in the desk drawer and want to find it in March.” “I’m in the garage, I have no signal, and I want to log where the drill went.” “I want the Christmas lights to remind me they exist in November.”
  3. The screen list. Stash ships with four tabs (Home, Search, Rooms and Settings) plus an Add screen and an item detail view. Six screens. That’s a whole app.

Then give that file to the plan agent and ask it to argue with you: “Read this brief. List the user flows, the edge cases I haven’t thought about, and the screens I’m missing. Then tell me what I should cut.” This is exactly the kind of boring, thorough work that max effort is for: the “what happens when the user denies camera access?” kind of question. Ten minutes of it can save you a redesign.

Set up variables before you draw anything

Figma variables are named values: colours, spacing, corner radii, sizes. Set them up first, with a light and a dark mode for the colours, and your app will be consistent by default.

They matter twice as much with an AI agent. When the agent implements a screen, Figma’s MCP server can hand it the exact variables used in that frame (the get_variable_defs tool), so it writes colors.green instead of guessing at a hex code from a screenshot.

Here’s the palette from Stash’s public design concept:

TokenValeurUsed forContrast on Paper
Paper#F6F4EEApp background—
Surface#FFFCF7Cards and fields—
Ink#172E2APrimary text13.1 : 1
Green#23594CButtons, selected states, brand7.3 : 1
Green soft#E1EBE4Quiet highlights—
Coral#D46F4FAccent dot, one word in a headline3.1 : 1
Coral soft#F8E8DEWarm highlights—
Muted#6E7D76Secondary text3.9 : 1
Line#DEDFD7Dividers and borders—

Headlines use a serif; everything else uses the system’s sans-serif. That’s the whole type system.

The contrast column is the part to copy. Ink and green clear the 4.5 : 1 that WCAG asks for normal text with a lot to spare. Coral, at about 3 : 1, only passes for large text, so it belongs on big headline words and small accent dots, which is exactly where Stash uses it. The muted grey sits at 3.9 : 1, so it belongs on larger captions rather than small print. Check this in Figma before the agent copies a token into fifty places.

Afficher l'image Nine colours, two typefaces, a handful of components. A design system doesn’t have to be big to be useful; it has to be written down.

Build five components, not fifty

For a first app you need roughly five reusable components: a button (primary and quiet), a text field, un card, un list row or tile (Stash’s room tile) and the tab bar. Build them as Figma components with variants for their states: default, pressed, disabled, error.

Apple publishes official iOS design resources for Figma. Use them as reference for system pieces such as sheets, alerts and the keyboard rather than redrawing them. Your agent will use the real system components anyway.

Design the screens the agent will forget

AI agents are very good at the happy path and quietly terrible at everything around it. Design these on purpose:

  • Empty states. The first launch, a room with nothing in it (Stash’s rooms grid shows “No items yet”), a search with no results.
  • Huge text. Set your phone to the largest Dynamic Type size and look at your layouts. Long item names wrap. Buttons grow.
  • Dark mode, for every screen, not just the pretty ones.
  • No photo. What does an item card look like without one?
  • Permission denied. The user said no to the camera. Now what?
  • Hors ligne. What does “saved, will sync later” look like?

Let AI help inside Figma, but keep the source of truth yours

Figma’s own AI has grown up fast this year. The Figma Agent went into open beta for all paid plans at Config 2026, and it’s free during the beta for Full seats. It can generate and remix designs inside your file. Figma Make turns prompts into clickable prototypes. Weave tools now run image jobs such as background swaps without leaving the design file.

They’re excellent for exploring. Generate ten variations of a home screen, steal the one good idea, then rebuild it with your own components and variables. If generated layers become your source of truth, your design system drifts, and the coding agent inherits the drift.

Stash does something I’d recommend to anyone: its experimental ideas live in a separate, clearly labelled interactive concept on the website, not in the app. You get to explore in public without promising features that don’t exist.

Prototype, then watch three people use it

Wire the screens into a clickable prototype, hand your phone to three people, and ask each of them to save something and find it again. Don’t explain anything. Watch where they hesitate. Three people will find most of the problems that matter, and fixing a frame in Figma takes minutes, while fixing it after the agent has built it takes a session.


Partie 6 — Connecter Figma à OpenCode : le piège du MCP

This is the part of the workflow that feels like the future when it works: select a frame in Figma, tell the agent to build it, and it reads the real layout, the real variables and the real components instead of squinting at a screenshot.

It’s also the part where most guides skip a detail that will cost you an evening.

What the Figma MCP server gives an agent

MCP, the Model Context Protocol, is the standard way for an AI agent to use outside tools. Figma’s MCP server exposes a set of tools; these are the ones that matter for building an app:

OutilWhat it returns
get_design_contextThe design context for the selected layer or frame. Figma calls it the default starting point
get_variable_defsThe variables and styles used in the selection: your colours, spacing, type
get_screenshotAn image of the selection, so the agent can compare its result
get_metadataA sparse XML outline of the layer structure
get_code_connect_mapMappings between Figma components and your real code components
create_design_system_rulesA prompt that writes a rules file describing your design system for the agent

There are also écrire tools (use_figma to create and edit native Figma content, generate_figma_design to turn a running web UI into Figma layers, and more), but nearly all of them are available only on the remote server. Hold that thought.

Remote server vs desktop server

Figma runs two versions of the server:

  • The remote server at https://mcp.figma.com/mcp. Figma recommends it, it doesn’t need the desktop app, it works on every seat and plan, and it has the full tool set including writing to the canvas.
  • The desktop server at http://127.0.0.1:3845/mcp, which runs inside the Figma desktop app. It requires a Dev or Full seat on a paid plan, and it’s mostly read-only.

The catch: OpenCode isn’t allowed on the remote server yet

The remote server only accepts approved clients during its beta. Figma’s list includes Claude Code, Codex, Cursor, VS Code, Gemini CLI, Kiro, Warp and Xcode, among others. OpenCode isn’t on it. Try to connect, and the registration step fails with an HTTP 403.

This isn’t a bug on OpenCode’s side. In May, a Figma staff member explained on Figma’s forum that the connection scope is “intentionally gated to supported clients while we’re in beta”, and pointed people to the desktop server, which “bypasses the OAuth issue and the allowlist entirely.” OpenCode’s team has an open pull request to add a registered Figma client, still waiting on Figma’s approval at the time of writing.

You’ll find posts suggesting you borrow another app’s OAuth client ID to sneak past the allowlist. Don’t. Use the desktop server and wait for official support.

Afficher l'image Three routes from Figma to OpenCode. Only one of them is a dead end, and it’s the one Figma recommends for everyone else.

Setting up the desktop server with OpenCode

  1. Install the Figma desktop app and sign in with an account that has a Dev or Full seat on a paid plan. On the Professional plan a Dev seat costs $12 a month and a Full seat $16.
  2. Open your design file and switch to Dev Mode avec Shift + D.
  3. In the inspect panel, find the Serveur MCP section and click Enable desktop MCP server.
  4. Add it to OpenCode. Either use the figma-desktop block from the config in Part 4, or run:

bash

   opencode mcp add figma-desktop --url http://127.0.0.1:3845/mcp

If OpenCode tries to start an OAuth sign-in for it, set "oauth": false on the server in opencode.jsonc. The desktop server is local and doesn’t need one. 5. Check it’s connected with opencode mcp list.

Keep the Figma desktop app open while you work. If Figma is closed, the agent’s Figma tools simply disappear.

Mind the rate limits

On the Professional plan, Dev and Full seats get up to 200 MCP tool calls a day and 10 a minute. Organization seats get 15 a minute; Enterprise gets 600 a day and 20 a minute. View and Collab seats are capped at a handful of calls a month. Two hundred sounds like a lot until an eager agent calls get_screenshot after every small edit, so tell it, in AGENTS.md, to compare against the screenshot once per screen rather than once per change.

The prompt pattern that works

Select a frame in Figma, then in OpenCode:

Implement the selected Figma frame as the Add Item screen. First call get_design_context and get_variable_defs. Use only tokens from src/theme/tokens.ts; if a value is missing, add a token rather than hard-coding it. Reuse our existing Button, TextField and Card components. When you’re done, call get_screenshot and list every visible difference between the frame and what you built. Then fix them.

Two habits make this far more reliable:

  • Courir create_design_system_rules once at the start of the project and save the result as a section of your AGENTS.md or as a skill in .opencode/skills/. From then on, every session knows your design rules without being told.
  • One frame per request. “Build the whole app from this file” produces a whole app that’s a bit wrong everywhere. One screen at a time produces screens that are right.

No paid seat? The free route

You can do all of this without MCP. M3.1 reads images, so export each frame as a PNG at 2x, attach it to your prompt, and paste your colour and spacing values into a tokens file in the repository. You lose the exact layer data and the variable lookups, so expect more back and forth on spacing. For a first app with six screens, it’s entirely workable, and it costs nothing.


Partie 7 — Comment créer une application à partir de zéro, étape par étape

This is the “from scratch” part. Seven phases, in the order I’d do them, with the prompts and the traps.

Phase 0 — Pick your framework

You have three sensible choices in 2026, and the right one depends on where your app needs to run.

SwiftUI + Xcode 27Expo SDK 56 (React Native)Flutter
Runs oniPhone, iPad, Mac, Apple Watch, Vision ProiPhone, iPad, Android, webiPhone, iPad, Android, web, desktop
LanguageSwift 6.4TypeScriptDart
Need a Mac?OuiNot to build or submit: Expo’s EAS service builds iOS apps in the cloudYes, for iOS builds, unless you use cloud CI
WidgetsNative WidgetKitStable for iOS since SDK 56Through plugins plus native WidgetKit code
Agent-friendlinessVery good, especially with Xcode’s own MCP tools; the Swift compiler catches a lotVery good: TypeScript types, fast reloads and a huge amount of public example codeBon
Meilleur pourApple-only apps that want every native featureOne codebase for iPhone and Android, built by one personIdentical-looking UI on every platform

My rule of thumb:

  • Apple only, and you want the platform’s newest toys (Apple’s on-device AI frameworks, Live Activities, deep system integration): SwiftUI, with OpenCode running inside Xcode or using Xcode’s tools (Part 4).
  • iPhone and Android from one codebase, and you’re one person: Expo. SDK 56 shipped on 21 May 2026 with React Native 0.85, moved its minimum to iOS 16.4, made its SwiftUI and Jetpack Compose UI layer production-ready, and promoted iOS widgets to stable. Its EAS service builds and submits iOS apps from Windows or Linux, and the free tier includes 15 iOS and 15 Android builds a month.
  • Flutter if you or your team already know it.

Stash’s App Store listing requires iOS 16.4, and its privacy policy already covers an Android build, so it’s clearly meant to travel beyond the iPhone.

Phase 1 — Scaffold, commit, brief

Create the empty project and make sure it runs before the agent touches it.

Expo:

bash

npx create-expo-app@latest my-app
cd my-app
npx expo start        # open it on your phone with Expo Go, or in the iOS Simulator

SwiftUI: in Xcode, choose File → New → Project → iOS → App, select SwiftUI, and run it once in the Simulator.

Then add the files from Part 4 (AGENTS.md et opencode.jsonc), plus two more:

  • ROADMAP.md: the list of vertical slices below, with checkboxes. The agent reads it, ticks things off, and you always know where you are.
  • src/theme/tokens.ts (or a Swift equivalent): your Figma variables as code. Copy them in by hand, or let the agent pull them with get_variable_defs.

Commit. If Git isn’t already set up, git init first. From now on, every working step ends with a commit.

Phase 2 — Plan the data model before any screens

The data model is the decision that’s most expensive to change later, because once real users have real data, every change needs a migration. Use the plan agent at full effort:

You’re planning a “where did I put it?” app. Read AGENTS.md, ROADMAP.md and the brief. Propose the data model, the local storage approach and the folder structure. The app must work fully offline with no account; accounts and sync come later and must not require rewriting the local layer. List the trade-offs, the migrations we’d need if we add sync later, and anything in the brief that’s ambiguous. Don’t write code yet.

For an app shaped like Stash, you’ll end up with something like this (an illustration, not Stash’s actual schema):

ts

type Room = {
  id: string;
  name: string;            // "Hallway"
  createdAt: number;
  updatedAt: number;
};

type Item = {
  id: string;
  name: string;            // "House keys"
  roomId: string;
  spot?: string;           // "Top drawer"
  note?: string;           // "In the ceramic dish on the left"
  photoPath?: string;      // local file first; cloud copy only with an account
  voiceNotePath?: string;
  transcript?: string;     // what makes voice notes searchable
  remindAt?: number;       // seasonal reminder
  createdAt: number;
  updatedAt: number;       // used to resolve sync conflicts
  deletedAt?: number;      // soft delete, so deletions can sync too
};

Read the plan properly. Argue with it. This is the cheapest moment in the whole project to change your mind.

Phase 3 — Build in vertical slices

A vertical slice is one feature that works end to end, from the screen to storage and back, before you start the next. Here’s the order I’d build a Stash-like app in:

  1. Add an item: name, room, spot and note, saved locally.
  2. Photos: camera and photo library, stored as local files.
  3. Accueil: recently saved items and the rooms row.
  4. Recherche: by name, room and note, plus a “with photos” filter.
  5. Item detail and “Found it”.
  6. Chambres: the grid, plus adding, renaming and deleting rooms.
  7. Voice notes: record, transcribe, make the transcript searchable.
  8. Rappels: local notifications for seasonal items.
  9. Widgets for the Home Screen and Lock Screen.
  10. Paramètres: appearance, export and, once accounts exist, account deletion.
  11. Accounts and sync: version two material, if you’re sensible.

Each slice follows the same loop:

  1. Plan: the plan agent writes a short plan for the slice. You correct it.
  2. Design: select the Figma frame, then use the prompt pattern from Part 6.
  3. Build: the construire agent implements, runs the tests and fixes what fails.
  4. Run it yourself, on a device, and try to break it.
  5. Read the diff. Every line that’s going to ship.
  6. Commit, tick the box in ROADMAP.md, start a fresh session for the next slice.

That fresh session matters more than it looks. Even with a million tokens of context, a long session accumulates stale assumptions. A clean start that re-reads AGENTS.md and ROADMAP.md is often smarter than a long one.

Phase 4 — Offline first, then sync

Stash’s privacy policy describes a pattern I’d copy for almost any personal app: without an account, everything stays on the device; with an account, data syncs through a backend. It makes the first version simpler, App Review easier and your users’ trust stronger.

The order of operations:

  1. Make the local layer complete first. SQLite through Expo’s library, or SwiftData in a native app. Photos and recordings live as files on the device.
  2. Add accounts with Firebase Authentication. Email sign-in is enough to start. If you add Google or another third-party login as the main way to sign in, Apple’s guideline 4.8 requires an equivalent privacy-focused option such as Sign in with Apple.
  3. Sync item records to Cloud Firestore, and photos and voice notes to Cloud Storage, each under the user’s own path.
  4. Do privileged work on the server. Anything that needs admin rights, such as wiping every file when an account is deleted, belongs in Cloud Functions, never in the app bundle.
  5. Lock it down with security rules so that each user can only ever read and write their own data:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid}/{document=**} {
      allow read, write: if request.auth != null && request.auth.uid == uid;
    }
  }
}

Write the equivalent rule for Cloud Storage, and have the agent write tests that try to read another user’s data and fail. Firebase’s official MCP server (it’s in the Part 4 config) lets the agent understand and validate your rules, and asks for your approval before it changes anything in the project. Deploying stays your job, which is why firebase deploy is denied in the permissions.

Two money notes. Firebase’s free Spark plan covers Authentication (50,000 monthly users) and Firestore’s free quotas (1 GiB stored, 50,000 reads and 20,000 writes a day), but Cloud Storage and Cloud Functions need the pay-as-you-go Blaze plan. Blaze keeps generous no-cost quotas, including 5 GB of storage and 2 million function invocations a month, so a small app can still cost nothing. Set a budget alert on day one anyway.

If you want the deeper “why” behind local-first design, I wrote about it in Pourquoi les logiciels « local-first » font leur grand retour.

Phase 5 — The iPhone-specific bits

These are the details that separate “it works on my phone” from “it passes review”:

  • Permission prompts need honest reasons. Camera, photo library, microphone and, if you use Apple’s speech framework, speech recognition each need a purpose string that says exactly why. “To photograph where you put something” is good. “This app needs access” is a classic rejection reason.
  • Ask at the right moment. Ask for notifications when someone sets their first reminder, not on first launch. People say yes when the reason is obvious.
  • Prefer on-device speech recognition where the phone supports it, and say in your privacy policy that the platform’s speech service may process audio. Stash’s policy does exactly that.
  • Widgets are their own small app. They have their own lifecycle, their own memory limits and their own way of reading your data. Budget a full slice for them.
  • Privacy manifests. Since May 2024, apps (including the SDKs inside them) must declare approved reasons for certain system APIs. Firebase’s SDKs ship their own manifests; make sure yours exists too.
  • Dark mode, Dynamic Type, VoiceOver. Check all three on every screen. Agents are far more reliable about accessibility labels when AGENTS.md demands them, so make it demand them.

Phase 6 — Test like a sceptic

The agent will tell you it’s done. It will often be wrong in small ways, and sometimes in large ones. Xcode 27’s agents can now run tests and check SwiftUI previews themselves, which helps, but nothing replaces a person with a phone.

Automated: unit tests for search, the data model, and especially the sync merge logic. Those are the bugs that lose people’s data.

By hand, before every release:

  • A real device, not just the Simulator
  • Airplane mode: save, search, edit, then reconnect and check that it syncs
  • Dark mode and the largest text size on every screen
  • VoiceOver: can you save and find an item with your eyes closed?
  • Every permission denied, one at a time
  • A fresh install, and an upgrade over the previous version (data must survive)
  • Delete account: is everything actually gone?

When something breaks, record it. Use the iPhone’s screen recording, attach the video, and ask M3.1 what’s wrong. It accepts video input, and “watch this” beats three paragraphs of description.

Prompt templates for this kind of app

Adapt these rather than copying them blindly.

A slice:

Implement slice 4 from ROADMAP.md (search). Read AGENTS.md first. Search must match item names, room names, notes and voice-note transcripts, case-insensitively, as the user types. Add a “With photos” filter. Write unit tests first, then the implementation. Run the tests and the type checker. Show me the diff and a list of any assumptions you made.

A bug:

Attached is a screen recording. On an iPhone with the largest text size, the keyboard covers the Save button on the Add screen. Find the cause, explain it in two sentences, fix it, and check the other forms in the app for the same problem.

A review:

Review every change since the last commit as a sceptical senior iOS reviewer. Look for crashes, data loss, privacy leaks, missing accessibility labels, hard-coded colours and anything that breaks offline use. Don’t fix anything yet; give me a numbered list, most serious first.

That last prompt is worth running before every single commit. It costs a minute and catches the problems that cost a weekend.


Partie 8 — Comment publier une application sur l'App Store en 2026

Building the app is the fun part. Publishing it is paperwork, and the paperwork is where first-time developers lose a week. Here’s all of it in one place.

What Apple requires as of October 2026

ExigenceDétailsIn force since
Apple Developer Program$99 a year (€99 in Germany). Companies enrol as an organisation, which needs a D-U-N-S number—
Build toolsUploads must be built with Xcode 26 or later using the iOS 26 SDK28 April 2026
Minimum targetApps must target iOS 13 or later9 September 2026
Classification par âgeAnswer Apple’s updated age-rating questions31 January 2026
Privacy manifestApproved reasons for “required reason” APIs, including in third-party SDKs1 May 2024
Privacy policyLinked in App Store Connect et reachable inside the app (guideline 5.1.1(i))—
Account deletion“If your app supports account creation, you must also offer account deletion within the app” (5.1.1(v))—
EU trader statusEvery developer declares it. Traders’ address, phone and email are shown on the product page in all 27 EU countries—

Apple’s current versions are Xcode 27 and iOS 27, both released on 14 September 2026. You don’t have to build with Xcode 27 yet, but you can no longer upload anything built with Xcode 16 or older (Apple jumped straight from Xcode 16 to 26 when it switched to year-based version numbers).

A note for German and EU developers: if you publish as a business, you’re a trader under the EU’s Digital Services Act, and Apple verifies your contact details before showing them on your product page. In February 2025, Apple pulled thousands of apps from EU storefronts for missing this information. Don’t be one of them.

App Store Connect, field by field

Create the app record in App Store Connect, then fill in:

  • Bundle ID. A reverse-domain identifier that never changes, such as Stash’s network.grahammiranda.stash. Pick it carefully.
  • Name (30 characters) and subtitle (30). Stash uses Stash — Trouvez-le rapidement et Retrouvez tout ce que vous avez rangé: the brand plus the benefit, then the benefit in plain words.
  • Keywords (100 characters), separated by commas without spaces. Don’t repeat words already in your name or subtitle; they count anyway.
  • Promotional text (170 characters), which you can change without a new review, and the description (4,000).
  • Screenshots. One to ten per device size, PNG or JPEG, no transparency. For iPhone, the 6.9-inch size (1320 × 2868) or the 6.5-inch size (1284 × 2778); for iPad, the 13-inch size (2064 × 2752). Stash’s set uses the 6.5-inch and 13-inch sizes.
  • Category. A primary and an optional secondary. Stash is Productivity, with Utilities second.
  • URLs. Support, marketing and privacy policy. Every one must work.
  • App Privacy, the “nutrition label”. More on this below, because it’s where honest people still get it wrong.
  • Classification par âge questionnaire.
  • App Review information: contact details, notes for the reviewer and, if your app requires sign-in, a demo account. A guest mode like Stash’s makes the reviewer’s life easier.
  • Export compliance. If your app only uses the encryption built into the operating system, such as HTTPS, it usually qualifies for an exemption. Check Apple’s guidance, then set ITSAppUsesNonExemptEncryption in your Info.plist so you’re not asked on every upload.

The text fields are good work for the agent too: “Draft the App Store subtitle, keywords, promotional text and description. Use only features that exist in the code; list the file where each feature lives.” That last instruction keeps it from inventing features.

TestFlight before anything else

Upload a build (from Xcode’s Organizer, or with eas build --platform ios --auto-submit on Expo) and test it through TestFlight first:

  • Internal testers: up to 100 people on your team, no review needed.
  • External testers: up to 10,000, invited by email or with a public link. The first external build goes through a short Beta App Review.
  • Builds stay testable for 90 days.

Give it to five friends with different phones for a week. They’ll find the crash you didn’t.

What actually gets apps rejected

Apple says that “on average, 90% of submissions are reviewed in less than 24 hours”, and that “over 40% of unresolved issues are related to guideline 2.1: App Completeness”: crashes, placeholder content, incomplete information and broken links. The usual suspects for a first app:

GuidelineWhat it means in practice
2.1 App CompletenessNo crashes, no “Lorem ipsum”, no dead links, demo account details if sign-in is required
4.2 Minimum Functionality“Your app should include features, content, and UI that elevate it beyond a repackaged website”
4.8 Login ServicesThird-party login as the main sign-in means you must also offer a privacy-focused option such as Sign in with Apple
5.1.1(i) Privacy policyLinked in App Store Connect and inside the app; says what you collect, who processes it, and how deletion works
5.1.1(v) Account deletionIf people can create an account, they can delete it in the app
Accurate metadataScreenshots and descriptions show what the binary actually does, not the roadmap

Stash keeps its design explorations on the website, clearly labelled, and off the App Store page, which is the right side of that last line.

Privacy labels: get them right, not just plausible

Apple’s definition is precise: “‘Collect’ refers to transmitting data off the device in a way that allows you and/or your third-party partners to access it for a period longer than what is necessary to service the transmitted request in real time.” Data processed only on the device isn’t collected.

In practice, for a Stash-shaped app:

  • Guest mode only (nothing leaves the phone): the data isn’t collected.
  • Accounts with sync: the email address, the photos, the voice recordings and the notes stored on your backend are collected, because they leave the device and stay on a server, even though only the user can see them. They go in the label as data linked to the user, used for app functionality, and not used for tracking.

The agent is an excellent auditor here, because it can read every network call in the codebase:

Audit this codebase for every piece of data that leaves the device: what it is, where it goes (which SDK or endpoint), whether it’s stored, for how long, and whether it’s linked to the user. Include data sent by third-party SDKs. Output a table I can use to fill in Apple’s App Privacy questions and the Google Play Data safety form.

Then make sure three documents tell the same story: your privacy policy, your App Store privacy label and, if you ship on Android, your Google Play Data safety form. Stash’s privacy policy says its data table is written to match both store declarations, which is the right standard to hold yourself to.

Afficher l'image Print it, stick it next to the screen, tick it before every first submission.

How Stash shipped

Stash 1.0 went live on 23 September 2026. Version 1.0.1, with “New Design and bug fixes”, followed on 2 October, nine days later. Ship the version that works, then improve it in public: that’s the healthiest rhythm I know for a first app.


Partie 9 — “ Et tout ça ” : le kit de lancement autour de l'application

An app on the App Store with nothing around it is a shop with no sign. Here’s the rest of the kit, again using Stash as the example.

A landing page with a demo people can touch

Stash’s website does a few things I’d copy for any first app:

  • One promise above the fold. “Put it away. Know where.” Then one sentence and two buttons: get the app, or try it in the browser.
  • A live preview in the hero. The phone on the right isn’t a picture. You can tap around in it.
  • A real browser demo. A sample home where you can search for the keys, browse rooms and add a test item. The demo “runs in your browser tab”, doesn’t touch the app’s data, and forgets everything when you reload. It lets people try the idea before they commit to an install.
  • Three steps, four features, no jargon. Photograph the spot. Give it a name and a room. Find it when you need it.
  • The design explorations, clearly labelled as concepts rather than features.
  • Ten languages (English, German, French, Spanish, Italian, Dutch, Brazilian Portuguese, Polish, Swedish and Danish), each with proper hreflang tags so search engines show the right one, plus a light and dark appearance switch.
  • Structured data describing the app as a MobileApplication, with its price, platforms and App Store link, so search engines understand the page is about an app.
  • Nothing creepy. The site’s code has no analytics, no advertising pixels, no social embeds, no external fonts, no sign-in and no contact form. It stores only your chosen language and appearance in your browser.

Afficher l'image The Stash landing page. The phone on the right is a working demo, not a screenshot.

A static page like this is also a perfect first project for the same OpenCode and M3.1 setup: plain HTML, CSS and a little JavaScript, no framework required, and you can see every change in a browser instantly.

This is general information from someone who has been through it, not legal advice. When in doubt, ask a lawyer.

Shipping from Germany means a few more pages than a US tutorial will tell you about:

  • An Impressum (imprint) under § 5 of the Digitale-Dienste-Gesetz (DDG), the German law that replaced the old Telemediengesetz in 2024: company name, address, managing director, register entry, contact details and, where you have one, the VAT ID.
  • Two separate privacy texts. One for the website and one for the app, because they process different data. Stash has both, and each says clearly which one you’re reading.
  • An app privacy policy with real substance. Stash’s covers the controller, a table of exactly what’s collected and why, the legal basis for each purpose under Article 6 GDPR, the processors involved (Firebase, from Google), how international transfers are covered (the EU-U.S. Data Privacy Framework and standard contractual clauses), retention and deletion, users’ rights, the responsible supervisory authority, children, security and how changes are announced.
  • A way to delete an account outside the app. Stash offers a web form as well as the in-app option. Google Play requires a web link for account deletion if your app lets people create accounts, so you’ll need one anyway the day you ship on Android.
  • The data processing terms with your backend provider, accepted in its console before real user data arrives.

Cookies are the other classic headache. Stash’s website sidesteps most of it by having nothing to ask consent for: no analytics, no ad pixels, no tracking, just a remembered language and theme. The cheapest consent banner is the one you never need.

First-year cost to build an app with AI in 2026: $363 lean, $532 comfortable and $1,204 power budget, split into Apple, MiniMax, Figma, Expo and Google Play
The model subscription is the biggest line in every budget. The Apple fee is the only one you can’t avoid.

App Store optimisation without the snake oil

App Store search works on your name, subtitle and keywords, and people decide in seconds from your icon and first screenshots. A few rules that hold up:

  • Name: brand plus benefit. “Stash — Find It Fast” tells a stranger what the app is for.
  • Screenshots tell a story, in order. Stash’s six read like a short ad: Chaque chose a sa place. Trouvez-la. En quelques secondes. Gardez cette place. Chez vous. Pièce par pièce. Souvenez-vous des petits détails. Une vision claire. Quelle que soit la lumière. Plenty of people never scroll past the first two or three, so put the core loop there.
  • Localise the listing in every language your app actually supports.
  • Ask for ratings at a happy moment. Apple’s review prompt can appear at most three times a year per user, so don’t waste it on first launch. In an app like Stash, the obvious moment is just after someone taps “Found it”.
  • Use promotional text for seasons. Spring cleaning, moving house, putting the winter things away. It changes without a new review.

Android, when you’re ready

If you built with Expo or Flutter, Android is mostly a build away. The paperwork is lighter but different:

  • Google Play charges $25 once to open a developer account.
  • New personal accounts (created after 13 November 2023) must run a closed test with at least 12 testers, opted in for 14 days in a row, before they can publish. Organisation accounts are exempt, which is one more reason to publish through a company if you have one.
  • The Data safety form is Google’s version of the privacy label. Keep it consistent with your privacy policy and your App Store answers.

Partie 10 — Combien coûte le développement d'une application intégrant l'IA en 2026 ?

The software in this stack is mostly free. What you pay for is the model, the Apple membership and, optionally, a better Figma seat.

ItemList priceWhen you need it
Apple Developer Program$99 a year (€99 in Germany)To publish on the App Store at all
OpenCode v2Gratuit, licence MITAlways
MiniMax M PlanGo $22, Explore $55, Build $132 a month (50% off the first month on monthly billing until 14 October)To use M3.1-Flash-Preview
FigmaStarter free; Professional Dev seat $12 a month, Full seat $16A paid seat only for the desktop MCP server
XcodeGratuitNative builds, on an Apple silicon Mac
Expo EASFree tier with 15 iOS and 15 Android builds a month; Starter $19 a monthIf you build with Expo
FirebaseFree Spark plan; Blaze is pay-as-you-go with no-cost quotasAccounts and sync; Storage and Functions need Blaze
Google Play$25, onceOnly if you ship on Android
Landing pageWhatever your hosting and domain costStrongly recommended

Three realistic first-year budgets

BudgetWhat’s in itFirst year
LeanApple membership + M Plan Go; Figma Starter with exported frames; Expo, Firebase and OpenCode on free tiers$363
ComfortableLean + a Figma Dev seat for the desktop MCP server + Google Play$532
PowerApple + M Plan Explore + a Figma Full seat + Expo Starter + Google Play$1,204

Afficher l'image The model subscription is the biggest line in every budget. The Apple fee is the only one you can’t avoid.

List prices in US dollars on 5 October 2026, excluding VAT, at full monthly rates (no launch discounts). Your backend bill depends on your users; at small scale, Firebase’s no-cost quotas usually cover it. Set a budget alert anyway.

The lean budget works out at about $30 a month. The real cost of the project isn’t on the list, though: it’s your evenings. AI shortens the typing, not the thinking, and the thinking is most of it.


Partie 11 — Dix erreurs à éviter lors du développement de votre première application utilisant l'IA

  1. Starting with code instead of a brief. The agent will happily build the wrong app very quickly.
  2. Building everything at once. “Make the whole app” gives you a whole app that’s slightly broken everywhere. Build vertical slices.
  3. Skipping AGENTS.md. Without it, every session starts from zero, and the agent re-decides things you already decided.
  4. Letting the agent add dependencies freely. Every package is code you didn’t read, extra app size and a future update to manage. Make it ask.
  5. Hard-coding colours and sizes. Then changing the design means editing 140 files. Tokens, always.
  6. Believing “done”. Agents report success optimistically. Run it on a real phone, in airplane mode, in dark mode, at the largest text size.
  7. Putting secrets in the app. Anything inside an app bundle can be extracted. API keys that cost money, or give admin access, live on a server.
  8. A privacy label that’s plausible rather than accurate. If data leaves the device and stays on a server, it’s collected, even when only the user can see it.
  9. Forgetting account deletion. Apple requires it in the app if you allow sign-up; Google Play requires a web link as well.
  10. Promising your roadmap. Screenshots and descriptions show what the app does today. Concepts belong on your website, labelled as concepts.

And one more for luck: not reading the diff. Vibe coding means not writing every line. It doesn’t mean not reading the lines that ship. The security numbers in my State of AI 2026 round-up are the reason.


Partie 12 — Faut-il utiliser précisément cette pile ? Six scénarios

1. “I’ve never written a line of code.”

Expo, the OpenCode desktop app, M3.1 on the M Plan’s Go tier, and Figma’s free plan with exported frames. Keep your first app to one core loop, like Stash’s save-and-find. Leave shell commands on ask, commit after every working step, and use /annuler without guilt.

2. “I only care about the iPhone, and I want it fully native.”

SwiftUI in Xcode 27, with OpenCode either inside Xcode through ACP or in your terminal with Xcode’s MCP tools. M3.1 for planning and building. You’ll get first access to Apple’s newest frameworks and the tightest integration with the system.

3. “I already pay for Claude or ChatGPT.”

Use what you have, and be fair about where it wins. Claude Code, Codex and Cursor are on Figma’s approved list for the remote MCP server today, including the write-to-canvas tools that OpenCode can’t reach yet. OpenCode can sign in with ChatGPT Plus or Pro directly. Add M3.1 through OpenCode for the jobs where its million-token context and video input shine.

4. “I want the cheapest possible start.”

MiniMax M3 instead of M3.1 (through OpenCode Go at $10 a month, or pay-as-you-go), Figma Starter, Expo’s free builds and Firebase’s free plan. The $99 Apple membership is the only cost you can’t avoid for an iPhone app. If you’re not ready for that, build the web version first.

5. “My app handles sensitive data.”

Design for guest mode first, keep third-party SDKs to a minimum, and think about where your code goes, too. Your prompts and source code go to the model provider. For very sensitive projects, local models through Ollama keep everything on your own machine (my OpenCode v2 article covers that setup), and get a privacy professional to review the app before launch.

6. “I build apps for clients.”

A Figma Organization plan with Code Connect, OpenCode’s policies to control which providers each client project may use, an M Plan tier with room for several parallel agents, and paid EAS builds. Put each client’s design rules in a committed skill or AGENTS.md so every session and every teammate starts from the same rules.


Partie 13 — À suivre au cours des prochains mois

  • MiniMax’s full M3.1. Whether it ships, whether it gets a per-token price, published benchmarks and open weights like M3, and whether the Flash preview reaches OpenRouter, OpenCode Go or Ollama Cloud.
  • OpenCode on Figma’s allowlist. OpenCode’s pull request for a registered Figma client is waiting on Figma. When it lands, the remote server’s write tools open up to OpenCode users.
  • Figma’s write-to-canvas pricing. Figma says those features are free during the beta and will become usage-based later.
  • Figma Code Layers, previewed at Config, which promises design and code on the same canvas.
  • OpenCode v2 maturing: session sharing coming back, plugins catching up, and the 2.0.x releases settling down.
  • Apple’s next SDK deadline. If Apple follows its usual pattern, builds made with Xcode 27 will become mandatory for uploads around next spring.
  • Stash itself. The three design explorations on its website (pinning the exact spot, Quick Move, boxes and labels) show where the ideas are heading.

Foire aux questions

Can I build an app from scratch with no coding experience?

Yes. In 2026, an AI coding agent such as OpenCode, paired with a strong model such as MiniMax M3.1, writes the code while you make the decisions: what the app does, how it looks, what data it stores and how you test it. You still need to learn how to read a plan, review a diff, test on a real device and handle App Store Connect. Start with an app that has one core loop and no payments.

How long does it take to build an app with AI?

It depends far more on scope than on tools. A small app with one core loop, like a save-and-find app, is a matter of weeks of evenings rather than months, if you build in vertical slices and test as you go. Publishing adds a few days for TestFlight and App Store paperwork; Apple says 90% of submissions are reviewed in under 24 hours.

What is MiniMax M3.1?

MiniMax M3.1 is the next generation of MiniMax’s M3 model family. As of October 2026, the only version you can use is MiniMax-M3.1-Flash-Preview, launched on 27 September 2026: a multimodal coding model with a 1,000,000-token context window, text, image and video input, always-on thinking and five effort levels from low to max. It’s available only through MiniMax’s M Plan subscription and the MiniMax Code app.

Is MiniMax M3.1 available through the API?

Only with a subscription key. M3.1-Flash-Preview works on MiniMax’s OpenAI-compatible and Anthropic-compatible endpoints, but only with an M Plan subscription key. There’s no pay-as-you-go price, no open weights and no listing on OpenRouter, Ollama Cloud or OpenCode Go yet. MiniMax M3 remains available pay-as-you-go at $0.30 per million input tokens and $1.20 per million output tokens.

How do I use MiniMax M3.1 in OpenCode?

Install OpenCode v2, start it in your project folder, run /connect, choose “MiniMax Token Plan (minimax.io)” and paste your M Plan subscription key. Then run /modèles and select MiniMax-M3.1-Flash-Preview. No config file is needed, though a project opencode.jsonc lets you set effort levels per agent and add permissions.

Does the Figma MCP server work with OpenCode?

Partly. Figma’s remote MCP server only accepts approved clients during its beta, and OpenCode isn’t on the list yet, so connecting fails with an HTTP 403. Figma’s desktop MCP server does work: enable it in Dev Mode in the Figma desktop app and point OpenCode at http://127.0.0.1:3845/mcp. It requires a Dev or Full seat on a paid plan and offers mostly read-only tools.

Do I need a Mac to build an iPhone app?

Not necessarily. Native development with Xcode needs a Mac, and Xcode 27 requires Apple silicon. With Expo, EAS builds your iOS app in the cloud and EAS Submit uploads it to App Store Connect from macOS, Windows or Linux. You’ll still want an iPhone for testing, and you need an Apple Developer Program membership to publish.

How much does it cost to publish an app on the App Store?

The Apple Developer Program costs $99 a year, or the local equivalent (€99 in Germany). Apple doesn’t charge per app or per submission. Building costs depend on your tools; the lean setup in this guide comes to about $363 for the first year including a MiniMax M Plan subscription, with free tiers for OpenCode, Figma, Expo and Firebase.

How long does App Store review take?

Apple says that on average 90% of submissions are reviewed in less than 24 hours. The most common reason apps get stuck is guideline 2.1, App Completeness: crashes, placeholder content, incomplete review information and broken links, including the support and privacy policy URLs.

Should I use SwiftUI, React Native (Expo) or Flutter?

Use SwiftUI with Xcode 27 if your app is Apple-only and you want the newest platform features. Use Expo (React Native) if you want one codebase for iPhone and Android and you’re working alone: SDK 56 supports iOS 16.4 and later, has stable iOS widgets and can build in the cloud. Use Flutter if you or your team already know Dart.

What’s the difference between MiniMax M3 and M3.1?

MiniMax M3, released on 1 June 2026, is generally available with open weights, published benchmarks and per-token pricing, and runs on many providers. M3.1-Flash-Preview, released on 27 September 2026, is a subscription-only preview with no weights, price or benchmarks yet, always-on thinking and five effort levels. Both have a 1M-token context and accept text, images and video.

What is Stash?

Stash — Find It Fast is a free iPhone and iPad app from Graham Miranda UG that remembers where you put things. You photograph the spot, give the item a name and a room, and search for it later by name, room, note or transcribed voice note. It also offers reminders for seasonal items, widgets, offline use and sync between iPhone and iPad. It launched on the App Store on 23 September 2026.

Does Stash collect my data?

Stash has no ads, no analytics tracking and doesn’t sell data. In guest mode, without an account, your rooms, items, photos and voice notes stay on your device. If you create an account, they sync through Google Firebase so they’re available on your iPhone and iPad, isolated from other users, and you can delete your account and data from Settings or through a web form.


En résumé

Building an app from scratch in 2026 is no longer a question of whether you can write the code. An agent like OpenCode v2, running a model like MiniMax M3.1, will write more code in an afternoon than you’d read in a week. The real work has moved to the edges: deciding what the app is, designing it carefully enough that an agent can’t misread it, testing it like a sceptic, and doing the unglamorous paperwork that turns a project folder into something a stranger can download.

The stack in this guide is the one I’d recommend today. Figma for decisions you can see. OpenCode v2 because it’s open, scriptable, careful with permissions and loyal to no single model. MiniMax M3.1 because a million tokens of context and video input suit app building unusually well, as long as you treat a preview like a preview. And the “stuff” (Firebase, TestFlight, privacy labels, a landing page, legal pages) because that’s what users actually meet.

Stash is what that looks like when it ships: one small promise, kept well. Download Stash on the App Storeou try the browser demo first. Then go and build yours.


Building your first app with AI? I’d like to hear which framework you picked, whether you got Figma’s MCP server talking to your agent, and how MiniMax M3.1 is treating you. Corrections and counter-evidence are welcome; this article gets updated when the picture changes.

Mention légale : Stash is my own app, published by my company, Graham Miranda UG. It’s free, with no ads and no in-app purchases. There are no affiliate links in this article, and none of the companies mentioned sponsored or reviewed it before publication.

Last updated: 5 October 2026.

Ajoutez votre signal.

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrançais