Ir al contenido
MARTES, OCTUBRE 6, 2026NOTICIAS TECNOLÓGICAS INDEPENDIENTES, Reseñas y guías prácticas
ACERCA DE
ÚLTIMAS NOTICIAS /

Cómo crear una aplicación desde cero con IA en 2026: Figma, OpenCode v2, MiniMax M3.1 y la historia de Stash

LEE LA GUÍA
DESARROLLO DE SOFTWARE Y APLICACIONESGM / 803

Cómo crear una aplicación desde cero con IA en 2026: Figma, OpenCode v2, MiniMax M3.1 y la historia de Stash

How to build an app from scratch with AI: Figma, OpenCode v2, MiniMax M3.1 and the App Store, with two Stash iPhone screens
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
Todo lo que se cuenta en este artículo ocurrió en cuatro meses y medio, y siete de estas nueve fechas corresponden a las últimas cinco semanas.

En todas las casas hay un cajón que se traga las cosas. Las llaves, el cargador de repuesto, el pasaporte que necesitas dos veces al año. Metes algo ahí “para guardarlo a buen recaudo” y, tres meses después, te encuentras de rodillas vaciando todo el armario en el suelo. Esta es una guía completa sobre Cómo crear una aplicación desde cero con la IA en 2026, contado a través de la aplicación que creé para arreglar ese cajón.

Stash es mi solución para ese cajón. Es una aplicación sencilla y tranquila para iPhone y iPad: haces una foto del lugar donde has dejado algo, le pones un nombre y le asignas una habitación, y cuando lo vuelves a necesitar, lo buscas. Esa es la idea. Se lanzó en la App Store el 23 de septiembre de 2026. Es gratuita y no tiene anuncios.

No tengo formación en programación. Todo lo que desarrollo, lo hago con agentes de IA, y durante el último año las herramientas para hacerlo han pasado de ser una “bonita demostración” a “algo que realmente se puede lanzar al mercado”. Por eso, esta guía es ante todo práctica: recorre todos los pasos, desde una carpeta vacía hasta una entrada activa en la App Store, utilizando Stash como ejemplo práctico a lo largo de todo el proceso.

Este es el conjunto de herramientas que le recomendaría a cualquiera que empezara hoy mismo. Figma para el diseño. OpenCode v2 como agente codificador. MiniMax M3.1 como el modelo que se encarga de “pensar” (en sentido estricto, M3.1-Flash-Preview, que se lanzó el 27 de septiembre, y más adelante explicaré por qué esa distinción es importante). Después, todo lo que nunca aparece en los tutoriales de YouTube: el backend, la política de privacidad, App Store Connect, las capturas de pantalla, la revisión, la página de destino, las páginas legales y cuánto cuesta todo ello.

Todo lo que aquí se recoge se ha contrastado con la documentación oficial, las notas de la versión y la propia App Store en 5 de octubre de 2026. Parte de esta información quedará obsoleta en cuestión de semanas. El nuevo modelo de MiniMax es un avance, OpenCode lanza actualizaciones casi a diario y Figma aún está decidiendo qué agentes de programación podrán conectarse a su servidor MCP. He señalado las partes más volátiles a medida que avanzaba.

Aviso: Stash es mi aplicación, publicada por mi empresa, Graham Miranda UG. Es gratuita, sin anuncios ni compras dentro de la aplicación. Este artículo no contiene enlaces de afiliados. Ni MiniMax, ni el equipo de OpenCode en Anomaly, ni Figma, ni Apple, ni Google, ni Expo lo han patrocinado, revisado ni aprobado.


TL;DR — La versión de 60 segundos

  • En 2026 podrás crear una aplicación real desde cero con IA, pero “desde cero” ahora significa tomar decisiones, no escribir. El agente se encarga de escribir el código. Tú te encargas del pliego de condiciones, el diseño, el modelo de datos, la política de privacidad, las pruebas y los trámites para la App Store.
  • La pila: Figma (pantallas y variables de diseño) → OpenCode v2 (agente de código abierto, licencia MIT) → MiniMax M3.1-Flash-Preview (contexto de 1 millón de tokens, lee texto, imágenes y vídeo, cinco niveles de dificultad) → una compilación con Expo o Xcode → TestFlight → la App Store. Firebase si necesitas cuentas y sincronización.
  • “MiniMax M3.1” se refiere hoy en día a M3.1-Flash-Preview. Se lanzó el 27 de septiembre de 2026 y solo está disponible a través de la suscripción al Plan M de MiniMax ($22, $55 o $132 al mes, con 50% de descuento el primer mes en la facturación mensual hasta el 14 de octubre) y la aplicación MiniMax Code. Todavía no hay precio por token, ni ponderaciones abiertas, ni índice de referencia publicado. No se puede dejar de pensar, y el esfuerzo se establece por defecto al máximo.
  • Funciona en OpenCode v2 sin necesidad de un archivo de configuración: /conectar → “Plan de tokens de MiniMax (minimax.io)” → pega tu clave de suscripción → /modelos → MiniMax-M3.1-Vista previa en Flash.
  • El inconveniente de Figma del que nadie habla: El servidor MCP remoto de Figma aún no admite OpenCode. Durante la fase beta, solo se permite el acceso a través de la lista de permitidos. Utiliza el de Figma escritorio Servidor MCP en 127.0.0.1:3845 o bien (para ello se necesita la aplicación de escritorio de Figma y una suscripción de pago de tipo «Dev» o «Full», a partir de $12 al mes), o bien entregar al agente los fotogramas exportados, que M3.1 puede leer.
  • El envío es un proyecto en sí mismo: $99 al año para el Programa de Desarrolladores de Apple (99 € en Alemania), compilaciones realizadas con Xcode 26 o una versión posterior, una política de privacidad, etiquetas de privacidad que se ajusten a la realidad, la posibilidad de eliminar la cuenta desde la propia aplicación si se ofrecen cuentas, y los datos del comerciante de la UE. Apple afirma que el 90% de las solicitudes se revisan en un plazo de 24 horas.
  • Stash en cifras: Disponible desde el 23 de septiembre de 2026; versión 1.0.1 con un nuevo diseño desde el 2 de octubre; gratuita; compatible con iOS y iPadOS 16.4 o posterior; ocupa unos 64 MB; sin seguimiento; y cuenta con un modo de invitado que mantiene todos los datos en el dispositivo.
  • Cuánto cuesta: Acerca de $363 para el primer año En la configuración básica (suscripción a Apple más el plan M Go), unos $500 con una licencia de Figma Dev. Los costes de backend empiezan en cero gracias a las cuotas gratuitas de Firebase.
  • La regla más importante: “Hecho” es una afirmación, no un hecho. Prueba la aplicación en un móvil de verdad, en modo avión, en modo oscuro y con VoiceOver activado. Entonces ya te lo creerás.

Resumen de The Stack

CapaHerramientaSu función en este flujo de trabajoCoste (octubre de 2026)
DiseñoFigmaPantallas, componentes, variables de color y tipografía, prototipo interactivoPlan Starter gratuito; una licencia de desarrollador a partir de $12 al mes permite acceder al servidor MCP de escritorio
Puente entre el diseño y el códigoServidor MCP de Figma (ordenador de sobremesa)Proporciona al agente marcos, variables y capturas de pantallaIncluido con el asiento
Agente de codificaciónOpenCode v2Crea planes, edita archivos, ejecuta comandos y realiza pruebas; en la terminal, en una aplicación de escritorio o dentro de Xcode 27Gratuito, licencia del MIT
ModeloMiniMax M3.1: vista previa de FlashEl cerebro encargado de la planificación y la programación; lee capturas de pantalla y grabaciones de pantallaPlan M desde $22 al mes
Marco de trabajo de la aplicaciónExpo SDK 56 (iPhone + Android) o SwiftUI con Xcode 27 (solo para Apple)La propia aplicaciónGratis; el plan gratuito de Expo incluye 15 compilaciones en la nube para iOS y 15 para Android al mes
BackendFirebase (Auth, Firestore, Storage, Functions, Messaging)Cuentas, sincronización, almacenamiento de fotos, notificacionesCuotas gratuitas; el almacenamiento y las funciones requieren el plan Blaze de pago por uso
DistribuciónApp Store Connect + TestFlightPruebas beta, revisión, lanzamiento$99/año: Programa para desarrolladores de Apple
InicioUna página de inicio estática y las páginas de aviso legalExplicar, hacer una demostración, cumplirSean cuales sean tus gastos de alojamiento

Los precios son los de catálogo a fecha de 5 de octubre de 2026, sin IVA. Las condiciones de suscripción cambian con frecuencia, así que compruébalas antes de comprar.


Índice


Parte 1 — Conoce Stash: la aplicación en torno a la cual gira esta guía

Antes de las herramientas, el ejemplo. Una guía para crear aplicaciones solo es tan buena como la propia aplicación que permite crear, así que aquí tienes exactamente qué es Stash, basándome en su propia ficha de la App Store y en su política de privacidad, más que en mi propio entusiasmo.

El anuncio comienza con una frase que resume el puesto: “No vuelvas a poner la casa patas arriba buscando algo”.” A continuación, describe el producto al completo en tres frases: “Stash es la forma más rápida de recordar dónde has dejado las cosas. Haz una foto, elige la habitación y guárdala. Eso es todo lo que hace la aplicación”.”

Esa última frase resume el objetivo del diseño. Todo lo que hay en la aplicación sirve para agilizar el proceso de guardar o para agilizar la búsqueda. Cualquier elemento que no cumpla ninguna de estas dos funciones no tiene cabida aquí.

Qué hace Stash

CaracterísticaPara qué sirvePor qué es importante
Foto del lugarDebes fotografiar el cajón, el estante o la caja, no el objetoLos lugares se recuerdan visualmente; una foto del lugar es el recuerdo.
Nombre, sala, lugar exacto, nota“Llaves de casa · Pasillo · Cajón de arriba · En el plato de cerámica de la izquierda”Cuatro campos cortos son mejores que un ensayo de texto libre que nunca podrás buscar bien
Notas de voz, transcritasToma nota rápidamente; Stash la convierte en texto en el que se puede buscarMás rápido que escribir con el teclado cuando tienes las manos ocupadas
Buscar enPor nombre del artículo, habitación, nota o las palabras que hayas introducido, con un filtro para los artículos que tengan fotosLo mejor de la aplicación es que está ahí justo cuando necesitas algo
HabitacionesExplora tu casa habitación por habitaciónPara cuando no recuerdes el nombre, sino solo más o menos dónde
“Ya lo he encontrado”Un toque cuando lo hayas recuperadoCierra el círculo
RecordatoriosLos artículos de temporada vuelven a aparecer cuando los necesitasLos neumáticos de invierno, las luces de Navidad, el material de acampada
WidgetsWidgets de la pantalla de inicio y de la pantalla de bloqueoDos toques desde “Debería recordar esto” hasta «Guardado»
Sin conexión y, a continuación, sincronizarFunciona sin señal; se sincroniza entre el iPhone y el iPad si tienes una cuentaEn los sótanos y los garajes la cobertura es pésima
AspectoClaro, oscuro o seguir el sistemaA las 23:00 h también parece que todo está tranquilo
Exportar y eliminarExporta tus archivos guardados; elimina tu cuenta desde «Configuración»Tus datos siguen siendo tuyos, y Apple exige el segundo

Cómo se ve

La dirección visual es deliberadamente sobria: un fondo blanco roto cálido, un verde bosque intenso, un único toque de color coral, titulares con tipografía serif y una tipografía sans-serif sencilla para el resto. Las capturas de pantalla de la App Store cuentan la historia en seis titulares: Todo tiene su sitio. Encuéntralo. En cuestión de segundos. Guarda ese lugar. Tu hogar. Habitación por habitación. Recuerda los pequeños detalles. Nítido. Con cualquier luz.

Mostrar imagen Stash en el iPhone: guarda el lugar, encuéntralo en segundos, explora habitación por habitación. Con luz o en la oscuridad, la misma tranquilidad.

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 en el iPhone: guarda el lugar, encuéntralo en segundos, explora habitación por habitación. Con luz o en la oscuridad, la misma tranquilidad.

Cómo gestiona tus datos

Esto es más importante que cualquier otra característica, así que citaré la política de privacidad en lugar de parafrasearla:

  • Modo invitado: “Si no creas una cuenta, tus habitaciones, objetos, fotos y notas de voz permanecerán en tu dispositivo y no se subirán a la nube”.”
  • Con una cuenta: La sincronización y la copia de seguridad se realizan en Google Firebase (Autenticación, Cloud Firestore, Cloud Storage, Cloud Functions y Cloud Messaging), con reglas de seguridad que mantienen aislados los datos de cada usuario.
  • Ningún modelo de negocio que se base en ti: “No mostramos anuncios, no realizamos campañas publicitarias ni seguimiento analítico, no creamos perfiles de usuario ni vendemos tus datos”.”
  • Notas de voz: Para convertir una grabación en texto en el que se puedan realizar búsquedas, se puede utilizar el servicio de reconocimiento de voz integrado en el teléfono (el de Apple, en iOS).
  • Supresión: Elimina tu cuenta en «Configuración» o a través de un formulario web; las copias se eliminarán de las copias de seguridad en un plazo de 30 días.

Si has leído mi artículo sobre Por qué el software «local-first» está volviendo a ganar popularidad, ya te darás cuenta de cuál es la filosofía. La aplicación debería funcionar perfectamente sin la nube. La nube es una comodidad que tú decides si quieres usar o no.

Cuadro informativo

Nombre en la App StoreStash — Encuéntralo rápido
SubtítuloEncuentra cualquier cosa que hayas guardado
Primera publicación23 de septiembre de 2026 (versión 1.0)
Versión actual1.0.1, publicada el 2 de octubre de 2026: “Nuevo diseño y corrección de errores”.”
PrecioGratis, sin compras dentro de la aplicación
Requisitos:iOS o iPadOS 16.4 o posterior; también funciona en los Mac con Apple Silicon y en Apple Vision Pro como aplicación para iPad
TamañoUnos 64 MB
CategoríaProductividad (también incluida en la sección «Utilidades»)
Clasificación por edades4+
DesarrolladorGraham Miranda UG (de responsabilidad limitada), Blankenburg (Harz), Alemania
Página webstash.grahammiranda.network, en diez idiomas, con un demostración en el navegador
DescargarDescarga Stash en la App Store

Lo que (todavía) no está en la aplicación

La página web cuenta con una sección llamada Exploraciones de diseño con tres ideas: marcar el punto exacto en una foto, Traslado rápido cuando cambia la ubicación de un artículo, y cajas y etiquetas para que puedas ver qué hay dentro de una caja sin tener que abrirla. La página web deja claro que “Estas ideas forman parte del concepto interactivo, no son funciones incluidas en la versión disponible en la App Store”.”

Me gusta esa distinción, y se la recomendaría a cualquiera que esté creando su primera aplicación. Experimenta libremente en un prototipo. Lanza solo lo que funcione. La página de tu aplicación en la App Store nunca debe prometer lo que el archivo binario no pueda hacer. Los revisores de Apple lo comprueban, y también lo hacen los usuarios que te dan una estrella.

Por qué es una buena opción para una primera aplicación

Si estás leyendo esto porque quieres crear tu propia aplicación, copia el diseño de Stash, aunque no te importe haber perdido las llaves:

  • Un bucle principal. Guarda y, a continuación, busca. Todo lo demás está al servicio de ese ciclo.
  • Datos que se generan en el dispositivo. No hace falta ningún servidor desde el primer día, así que puedes lanzar el producto antes incluso de haber creado el backend.
  • Unas cuantas funciones reales de la plataforma. La cámara, el micrófono, las notificaciones y los widgets son la cantidad justa de funciones “nativas” para aprender sin agobiarte.
  • Una nube opcional. Las cuentas y la sincronización pueden incorporarse en la versión dos sin necesidad de reescribir la versión uno.
  • Sin feed, sin chat, sin pagos. Cada uno de ellos es un proyecto independiente con sus propios modos de fallo.

Un agente de IA puede crear casi cualquier cosa que se le describa. Lo difícil es describir algo lo suficientemente pequeño como para poder terminarlo.


Parte 2 — El stack de 2026 para desarrollar una aplicación desde cero con IA

Tres herramientas, tres trabajos distintos:

  1. Figma determina el aspecto de la aplicación.
  2. OpenCode decide cómo se lleva a cabo el trabajo: qué archivos leer, qué comandos ejecutar y qué preguntarte antes de hacer nada que suponga un riesgo.
  3. MiniMax M3.1 se encarga de pensar En OpenCode: planificar, escribir código, revisar capturas de pantalla y arreglar lo que no funciona.

Mantener esas tareas separadas es la decisión arquitectónica más importante de toda esta guía, y no tiene nada que ver con el código. Cuando el mes que viene salga un modelo mejor (y saldrá), solo tendrás que cambiar una línea en un archivo de configuración. Cuando salga una herramienta de diseño mejor, a tu agente no le importará. Nada está entrelazado.

Por qué OpenCode v2 es el agente

OpenCode es un agente de programación de IA de código abierto bajo la licencia MIT. Solo tienes que indicarle la carpeta del proyecto, describir lo que quieres y él trabaja igual que lo haría un desarrollador: lee el código, elabora un plan, edita archivos, ejecuta comandos, lee los errores, los corrige y sigue adelante.

La versión 2.0.0, una reconstrucción completa desde cero, se publicó el 11 de septiembre de 2026, y el equipo ya había lanzado la versión 2.0.22 el 2 de octubre. Traté este tema en profundidad en mi Análisis en profundidad de OpenCode v2, así que aquí solo te cuento lo que importa para crear una aplicación:

  • Es independiente del modelo. Más de 75 proveedores a través de Models.dev, además de modelos locales. MiniMax viene integrado.
  • Un servidor de fondo compartido. Tanto la interfaz de terminal como la aplicación de escritorio, la interfaz de usuario del navegador y las extensiones del IDE ven las mismas sesiones.
  • Permisos que funcionan como un cortafuegos. Una lista ordenada de reglas de “permitir», «preguntar» y «denegar», en la que prevalece la última coincidencia, por lo que «nunca se ejecuta git push” y “nunca enviar a la App Store” ocupan una línea cada una.
  • Deshacer cada paso. Instantáneas antes y después de cada paso del modelo, con /deshacer y /rehacer.
  • Subagentes que puedes ver y detener, y habilidades que se cargan desde .opencode, .claude y .agentes carpetas.
  • Funciona en Xcode 27. El nuevo Xcode de Apple admite cualquier agente que utilice el Protocolo de Cliente-Agente, y opencode acp hace precisamente eso (configuración en la parte 4).

La página de inicio cuenta ahora con 208 000 estrellas en GitHub, 950 colaboradores y 16 millones de desarrolladores mensuales. Dos advertencias importantes extraídas de la documentación de la v2: la función de compartir sesión aún no se ha reincorporado en la v2 y los complementos de la v1 no se cargan.

Por qué el MiniMax M3.1 es el modelo ideal

La tercera parte entra en profundidad, pero, en resumen, se trata de tres propiedades que resultan especialmente adecuadas para la creación de aplicaciones:

  • Una ventana de contexto de 1 000 000 de tokens. Una pequeña aplicación, sus notas de diseño, su archivo AGENTS.md y la documentación pertinente caben perfectamente en una sola sesión de trabajo, y aún sobra tiempo.
  • Lee imágenes y vídeos, no solo texto. Puedes adjuntar un marco de Figma, una captura de pantalla del simulador o una grabación de la pantalla en la que se vea el error.
  • Cinco niveles de esfuerzo, de bajo a máx., de modo que el trabajo de planificación se realiza con profundidad y el trabajo mecánico se lleva a cabo con rapidez.

La contrapartida es que se trata de una versión preliminar sin pruebas de rendimiento publicadas ni precios por token, disponible únicamente a través de la suscripción de MiniMax. Volveré sobre este tema más adelante, porque no es una salvedad menor.

Por qué Figma es la herramienta de diseño

Figma sigue siendo la herramienta por excelencia para el diseño de aplicaciones. El plan Starter gratuito es suficiente para diseñar una primera aplicación. Su variables se convertirán en tus tokens de diseño: los colores, los espacios y los tamaños de letra que garantizan la coherencia en todas las pantallas. Y su Servidor MCP permite que un agente de codificación lea directamente un fotograma seleccionado, lo que es lo más parecido hasta ahora a que “hacer que se vea así” funcione de verdad.

En Config 2026 (del 23 al 25 de junio en San Francisco), Figma también abrió su Figma Agent a todos los planes de pago en versión beta abierta, añadió una línea de tiempo de movimiento y presentó un avance de las “capas de código”, que tratan el código como un objeto de primera clase en el lienzo. No necesitas nada de eso para crear tu primera aplicación. Pero es útil saber hacia dónde se dirigen las cosas.

Y las “cosas”

Las partes que nadie incluye en la miniatura:

¿Qué?OpcionesTratado en
Marco de trabajo de la aplicaciónExpo (React Native) para iPhone y Android; SwiftUI con Xcode 27 solo para Apple; FlutterParte 7
BackendFirebase es la opción predeterminada más sencilla para la gestión de cuentas, la sincronización y el almacenamiento de archivosParte 7
Control de versionesGit, siempre. GitHub o una plataforma similar como copia de seguridadPartes 4 y 7
Compilaciones y firmasXcode en un Mac, o las compilaciones en la nube de EAS de Expo sin necesidad de unoPartes 7 y 8
Pruebas y lanzamientoTestFlight y App Store ConnectParte 8
InicioUna página de destino, una demostración, páginas legales, optimización para la App StoreParte 9

Mostrar imagen Todo el proceso en una sola página. Empiezas a la izquierda (el resumen), pasas por el centro (revisando cada diferencia) y terminas a la derecha (pulsando “Enviar para revisión”).

Qué significa hoy en día “desde cero”

Esta es la incómoda realidad de desarrollar una aplicación con IA en 2026: el agente se encarga de la parte que antes resultaba difícil y te deja a ti la parte que siempre ha sido difícil.

TienesEl agente es propietario de
Para qué sirve la aplicación y qué es lo que no haceConvertir eso en archivos, componentes y funciones
Las pantallas y el sistema de diseñoAplicarlas, pantalla a pantalla
El modelo de datos: qué se almacena, dónde y durante cuánto tiempoEscribir el código de almacenamiento, sincronización y migración
La política de privacidad, las páginas legales y las respuestas de la App StoreRevisar el código para que tus respuestas sean correctas
Pruebas en dispositivos reales, con personas realesEscribir y ejecutar pruebas automatizadas
Pulsar “Enviar”No pulsar nunca “Enviar”

Si esa tabla te pone un poco nervioso, mejor. Ese nerviosismo es lo que distingue a una aplicación que llega al mercado de una carpeta llena de código que funciona a medias.


Parte 3 — MiniMax M3.1: una explicación sincera

Si buscas “MiniMax M3.1” ahora mismo, encontrarás artículos que hablan con total seguridad de un modelo que, estrictamente hablando, aún no ha salido al mercado. A continuación te contamos lo que existe realmente, lo que ya puedes utilizar hoy mismo y lo que nadie sabe todavía.

Lo que existe, en orden

  • 1 de junio de 2026: MiniMax M3. Un modelo de peso abierto y multimodal de forma nativa con una ventana de contexto de 1 millón de tokens, un diseño de «mezcla de expertos» con unos 428 000 millones de parámetros en total y unos 23 000 millones activos por token, y el sistema de atención dispersa propio de MiniMax. Lo comparé con GLM-5.3-Flash para OpenCode en agosto, en GLM-5.3-Flash frente a MiniMax M3.
  • Julio: “M3.1” se convierte en un nombre. Los informes de la Conferencia Mundial sobre Inteligencia Artificial celebrada en Shanghái describían un modelo M3.1 con un contexto de un millón de tokens y capacidades multimodales más potentes. No se facilitó ningún modelo, ID de modelo ni precio.
  • 23 de septiembre: una modelo misteriosa. Un modelo anónimo denominado “Space Bunny Alpha” apareció en OpenRouter y en OpenCode como vista previa gratuita, con un contexto de 1 millón y un razonamiento ajustable. El análisis independiente de la huella digital del tokenizador apuntaba hacia MiniMax. MiniMax no ha confirmado nada, y la coincidencia del tokenizador es un indicio de que se trata de una familia de modelos, pero no una prueba.
  • 27 de septiembre: Avance de MiniMax M3.1-Flash. El primer modelo de la marca M3.1 al que cualquiera puede acceder, lanzado en la propia aplicación de programación de MiniMax, «MiniMax Code», y a través de su suscripción de programación. MiniMax lo describe como un modelo para “Desarrollo diario, rápido, fiable y preparado para el trabajo real, desde correcciones rápidas de errores hasta funciones completas”.”
  • 30 de septiembre: el Plan M. MiniMax Code 3.1.0 ha llegado con una nueva suscripción llamada «M Plan», que sustituye al «Token Plan» para los nuevos clientes, manteniendo los mismos precios.

La versión completa del M3.1 del verano aún no se ha lanzado. Cuando la gente habla del “M3.1” en octubre de 2026, se refiere al M3.1-Flash-Preview, y yo haré lo mismo en el resto de este artículo.

Mostrar imagen Todo lo que se cuenta en este artículo ocurrió en cuatro meses y medio, y siete de estas nueve fechas corresponden a las últimas cinco semanas.

MiniMax M3 frente a M3.1: vista previa de Flash

MiniMax M3MiniMax M3.1: vista previa de Flash
Publicado1 de junio de 202627 de septiembre de 2026
EstadoDisponible de forma generalizadaVista previa
ID del modeloMiniMax-M3MiniMax-M3.1-Vista previa en Flash
Ventana de contexto1 millón de tokens1 000 000 de tokens
EntradaTexto, imagen, vídeoTexto, imagen, vídeo
ReflexiónSe puede encender o apagarSiempre encendido. Cinco niveles de intensidad: bajo, medio, alto, xalto, máx. (por defecto máx.)
Peso libreSí, bajo la licencia MiniMax Community.Sin pesos, sin ficha técnica
Precio de pago por uso$0,30 por cada millón de tokens de entrada, $1,20 de salida, $0,06 en caché; el doble por encima de 512 K de entradaNo publicado. Solo para suscriptores
Dónde se puede utilizarMiniMax API, OpenRouter, OpenCode Go, Ollama Cloud y muchos otros proveedores de alojamientoSolo para suscriptores del Plan M y con código MiniMax
Pruebas de rendimiento publicadasSí, de MiniMax y de tableros independientesNinguno
Arquitectura~428 mil millones en total, ~23 mil millones activos, MoE dispersoNo se ha revelado
En OpenCode v2Integrado, a través de varios proveedoresIntegrado a través de “MiniMax Token Plan (minimax.io)”

Captura de pantalla de la documentación de MiniMax y de Models.dev del 5 de octubre de 2026. Las vistas previas pueden cambiar sin previo aviso; compruébalas antes de basarte en ninguna de las filas.

Hay algo que merece la pena analizar: los documentos indican que el pensamiento no se puede desactivar. Enviar thinking.type: "desactivado" o un esfuerzo de ninguno, y la API devuelve un error 400 que indica, en pocas palabras, que el modelo “requiere un pensamiento adaptable”.” Lo que sí puedes controlar es la intensidad con la que piensa.

Cómo conseguirlo: el Plan M

La documentación de MiniMax es muy clara en cuanto al acceso: “Por el momento, MiniMax-M3.1-Flash-Preview solo está disponible a través del Plan M y del código MiniMax”.”

Nivel del Plan MPrecioQué incluye
Ir$22 al mesM3.1-Flash-Preview, además de los modelos de imagen y audio de MiniMax
Explora$55 al mesTodo lo que ofrece Go, además del modelo de vídeo H3
Construir$132 al mesTodo lo que ofrece Explore, con el mayor límite de uso

Algunos detalles que son más importantes que los precios que aparecen en los titulares:

  • Oferta de lanzamiento: 50% de descuento en tu primer mes con facturación mensual, hasta el 14 de octubre de 2026. Queda excluida la facturación anual. Tras el primer mes, se renovará al precio completo, a menos que desactives la renovación automática.
  • Semana gratuita: Todos los suscriptores tuvieron acceso ilimitado a M3.1-Flash-Preview del 1 al 7 de octubre (hora de China). Si estás leyendo esto después del día 7, ya se ha acabado.
  • Es una clave de suscripción, no una clave de API. La documentación de MiniMax deja claro que las claves de suscripción y las claves de API de pago por uso no son intercambiables. Deberás pegar la clave de suscripción en OpenCode.
  • Cuotas, no medición. El uso está limitado a periodos móviles de cinco horas y semanales, y la cuota no utilizada no se acumula. Para los niveles equivalentes del Plan Token, las propias recomendaciones de MiniMax eran, aproximadamente, de tres a cuatro, de cuatro a cinco y de seis a siete agentes trabajando a la vez.
  • Suscriptores actuales del Plan Token mantener su plan. Los nuevos clientes contratan el Plan M.
  • Herramientas compatibles En la página del Plan M de MiniMax figuran Claude Code, Codex, Cursor, OpenCode, Hermes Agent y OpenClaw.

Código MiniMax En sí mismo es un agente de escritorio para macOS y Windows, con un modo de programación y un modo “trabajo” para investigación y documentos, además de una versión de línea de comandos. Es una forma estupenda de probar el modelo. Yo utilizo OpenCode porque no me ata a ningún fabricante de modelos en concreto, que es precisamente el objetivo de la segunda parte.

Por qué es ideal para el desarrollo de aplicaciones

  • La ventana de contexto cambia tu forma de trabajar. Una pequeña aplicación móvil tiene unas pocas miles de líneas de código, quizá unas pocas decenas de miles. Con un millón de tokens, el agente puede almacenar todo el código fuente, tu archivo AGENTS.md, el modelo de datos y una parte de la documentación de la plataforma a la vez. Menos momentos de “se me ha olvidado lo que habíamos decidido”. (La propia guía OpenCode de MiniMax limita el tamaño de la ventana a 512K en su configuración de ejemplo, que yo recomendaría copiar. Cuanto más cortos sean los contextos, más rápidas serán las respuestas.)
  • Muéstralo, no lo describas. Como admite imágenes y vídeos, puedes añadir un fotograma exportado de Figma, una captura de pantalla del simulador de iOS o una grabación de pantalla del error en la que el teclado tape el botón «Guardar». Solo esto último ya te ahorra muchísimo tiempo a la hora de escribir.
  • El esfuerzo es un regulador, no un interruptor. máx. para planificar una función o resolver un error de sincronización. bajo o medio para renombrar elementos, escribir pruebas y traducir cadenas de texto. En la parte 4 se explica cómo configurarlo para cada agente.
  • El coste es fijo. Para un desarrollador que trabaja en solitario, una factura mensual predecible es mejor que estar pendiente del contador de tokens durante una larga sesión de depuración.

Una de las primeras pruebas independientes registró aproximadamente entre 90 y 110 tokens por segundo el primer día. Se trata de una sola medición, no de una prueba de rendimiento, pero hace honor al nombre “Flash”.

Lo que todavía nadie sabe

Esta es la parte que la mayoría de los reportajes sobre el M3.1 omiten:

  • No hay puntos de referencia. Ni de MiniMax, ni de los foros independientes, porque un modelo al que solo se puede acceder mediante la suscripción a una empresa resulta difícil de probar de forma independiente. Tú eres el punto de referencia. Asigna una tarea real de tu propio proyecto, asigna la misma tarea a un modelo en el que ya confíes y compara los resultados.
  • No hay un precio por token. Eso está bien dentro de una suscripción. El problema surge si quieres ejecutar el modelo en CI o en un producto, donde necesitas saber cuánto cuesta un millón de tokens.
  • Es un avance. Puede cambiar de comportamiento, cambiar de nombre o ser sustituido por el M3.1 completo sin previo aviso. Guarda el ID del modelo en un único archivo de configuración, de modo que cambiarlo solo requiera modificar una línea.
  • La mente nunca deja de funcionar. Incluso las solicitudes más triviales suponen una cierta carga de procesamiento. Reduce el esfuerzo que requieren las tareas pequeñas.
  • Solo está disponible en MiniMax. En el momento de redactar este artículo, no está disponible en OpenRouter, Ollama Cloud ni OpenCode Go. Tus indicaciones y tu código se envían a los servidores de MiniMax, por lo que, si trabajas para clientes sujetos a normas estrictas en materia de datos, lee primero las condiciones de MiniMax o lleva a cabo ese proyecto en modelos locales.

No descargues “MiniMax M3.1”

A las pocas horas del lanzamiento, aparecieron repositorios de GitHub que no tenían nada que ver con MiniMax, en los que se prometía una “descarga oficial gratuita” de M3.1-Flash en formato ZIP para Windows, lista para “descomprimir y ejecutar”. No hay archivos de peso M3.1 que descargar, y el código de MiniMax procede de la propia página web de MiniMax. Considera cualquier “descarga de M3.1” como malware hasta que se demuestre lo contrario.

Cuándo utilizar el MiniMax M3 en su lugar

Utilice M3 Si necesitas alguna de las funciones que la versión de prueba no ofrece: tarificación de pago por uso, pesos abiertos que puedas alojar tú mismo o acceso a través de OpenCode Go, Ollama Cloud u OpenRouter. También es la opción más segura para cualquier tarea automatizada, ya que su precio y su comportamiento están documentados. Si quieres tener una visión más amplia de las alternativas, mi MiniMax M3 frente a Kimi K2.7 Code frente a Nemotron 3 Ultra La comparación abarca todo el ámbito.


Parte 4 — Configuración de OpenCode v2 con MiniMax M3.1, paso a paso

Esta es la configuración que le recomendaría a un amigo. Tarda unos quince minutos, la mayor parte de los cuales se dedican a esperar a que se completen las descargas.

Paso 0 — Lo que necesitas antes de nada

  • Un Mac con Apple Silicon, si quieres compilar y ejecutar aplicaciones para iPhone de forma local. Xcode 27 (lanzado el 14 de septiembre de 2026) ya no es compatible con los Mac con procesadores Intel y requiere macOS Tahoe 26.4 o una versión posterior. Si optas por la opción de Expo de la parte 7, podrás compilar aplicaciones para iOS en la nube desde Windows o Linux, pero seguirás necesitando un iPhone real para probarlas.
  • Git. Las instantáneas, las ramas y tu propia cordura dependen de ello.
  • Node.js (LTS) si vas a utilizar Expo.
  • Una suscripción al Plan M de MiniMax (Parte 3).
  • Una terminal moderna. El Terminal de macOS está bien; Ghostty, WezTerm y Kitty son mejores.

Paso 1 — Instalar OpenCode v2

bash

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

opencode --version # debería mostrar 2.0.x
opencode service status     #: el servidor compartido en segundo plano debería estar en funcionamiento

¿También quieres la aplicación de escritorio? Descárgala desde opencode.ai/download, o en un Mac, ejecuta brew install --cask opencode-desktop. La aplicación de terminal y la de escritorio comparten un mismo servidor, por lo que una sesión que inicies en una de ellas aparecerá en la otra.

Algo a tener en cuenta: la propia guía OpenCode de MiniMax sigue mostrando la URL del instalador de la versión 1 (opencode.ai/install). Utiliza el /v2/install el anterior.

Paso 2: Consigue tu clave de suscripción al Plan M

Suscríbete en la plataforma de MiniMax y crea un clave de suscripción en la consola. No es una clave de API de pago por uso: se trata de productos diferentes, y solo la clave de suscripción te da acceso a M3.1-Flash-Preview.

Trata la clave como si fuera una contraseña. Nunca la pegues en un chat, en una captura de pantalla ni en un repositorio de Git.

Paso 3 — Conectar MiniMax en OpenCode

bash

cd ~/code/my-app
opencode

A continuación, dentro de OpenCode:

  1. Tipo /conectar y busca Plan de tokens de MiniMax (minimax.io). El proveedor ha conservado su antiguo nombre; admite llaves del Plan M.
  2. Pega tu clave de suscripción.
  3. Tipo /modelos y elegir MiniMax-M3.1-Vista previa en Flash.

Eso es todo. El catálogo de modelos de OpenCode (Models.dev) ya incluye el modelo con su contexto de 1 000 000 de tokens, entradas de imagen y vídeo, y los cinco niveles de esfuerzo, por lo que no necesitas un archivo de configuración para empezar. Si no aparece en /modelos, actualiza primero OpenCode; la configuración del paso 4 también lo añade manualmente.

Dos alternativas: Inicio de sesión en OpenCode Auth hace lo mismo desde la terminal y el asistente de configuración de MiniMax (npx -y mmx-cli@latest agent setup) instala y configura OpenCode por ti, con M3 como opción predeterminada. Después, cambia a M3.1 con /modelos. Las cuentas de la plataforma de MiniMax en China utilizan la versión “(minimax.cn)” del proveedor.

Paso 4 — Añadir una configuración de proyecto

Los valores predeterminados funcionan, pero un proyecto de aplicación merece un archivo de configuración que haga tres cosas: asigne a cada agente el nivel de esfuerzo adecuado, establezca permisos que impidan al agente realizar acciones irreversibles y conecte tus servidores MCP. Guárdalo como opencode.jsonc En el directorio raíz de tu proyecto:

jsonc

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

  // Modelo predeterminado para nuevas sesiones
  "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview",

  "providers": {
    "minimax-coding-plan": {
 "models": {
 "MiniMax-M3.1-Flash-Preview": {
 // El propio ejemplo OpenCode de MiniMax limita la ventana a 512K
          "limit": { "context": 524288 },

 // El razonamiento está siempre activo y el valor por defecto es "max".
 // Estas variantes envían el campo output_config.effort documentado por MiniMax.
          "variantes": [
 { "id": "rápido", "cuerpo": { "output_config": { "effort": "bajo" } } },
            { "id": "steady", "body": { "output_config": { "effort": "medium" } } },
            { "id": "careful", "body": { "output_config": { "effort": "high" } } }
 ]
 }
 }
    }
  },

  "agentes": {
    // La planificación se realiza con el máximo esfuerzo por defecto: un mal plan sale más caro a la larga
    "plan":    { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview" },
    // Construcción: exhaustiva, pero más rápida que la máxima
    "build":   { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#careful" },
    // Búsqueda de solo lectura en el código fuente: la velocidad es más importante que la profundidad
    "explore": { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#quick" }
  },

  "permisos": [
    { "acción": "shell", "recurso": "*", "efecto": "preguntar"   },
    { "action": "shell", "resource": "git status *", "effect": "allow" },
    { "action": "shell", "resource": "git diff *", "effect": "allow" },
    { "acción": "shell", "recurso": "git log *", "efecto": "permitir" },
    { "acción": "shell", "recurso": "npm test *", "efecto": "permitir" },
    { "action": "shell", "resource": "npx tsc *", "effect": "allow" },
    { "action": "shell", "resource": "npx expo lint *",    "effect": "allow" },
    { "acción": "shell", "recurso": "git push *", "efecto": "denegar"  },
    { "acción": "shell", "recurso": "eas submit *", "efecto": "denegar"  },
    { "action": "shell", "resource": "firebase deploy *",  "effect": "deny"  }
  ],

  "mcp": {
    "servers": {
 // Servidor MCP de escritorio de Figma (Parte 6). Local, por lo que no requiere OAuth.
      "figma-desktop": {
 "type": "remote",
 "url": "http://127.0.0.1:3845/mcp",
 "oauth": false
 },
      // Servidor MCP oficial de Firebase. Pide permiso antes de realizar cambios en tu proyecto.
      "firebase": {
 "type": "local",
 "command": ["npx", "-y", "firebase-tools@latest", "mcp"]
 }
    }
  }
}

Unas cuantas notas para que sepas lo que estás pegando:

  • Las reglas de permisos se leen de arriba abajo, y prevalece la última coincidencia. Cada comando de shell pide permiso primero; los comandos inofensivos de Git y de prueba se ejecutan libremente, mientras que hay tres cosas que se deniegan de plano: subir código, enviarlo a la App Store e implementar tu backend. Esas cosas las haces tú mismo, a propósito.
  • Sustituye los comandos permitidos por los de tu cadena de herramientas. Si estás desarrollando de forma nativa con Xcode en lugar de con Expo, sustituye el npx líneas con tus comandos de prueba y de lint.
  • Si una variante no parece tener ningún efecto, correr /modelos para confirmar los nombres de las variantes y comprobar la solicitud en los registros de OpenCode. MiniMax utiliza máx. cuando no se envía ninguna solicitud, por lo que, en el peor de los casos, la respuesta será más lenta, pero no fallará.
  • Los ejemplos antiguos al estilo v1 siguen funcionando. La guía de MiniMax utiliza la versión 1 proveedor clave; OpenCode v2 lee los ajustes compatibles con la v1 sin sobrescribir el archivo.

Paso 5: Crea un archivo AGENTS.md antes de escribir ni una sola línea de código

OpenCode dice: AGENTS.md al comienzo de cada sesión. Es el hábito más eficaz con creces en el desarrollo asistido por IA, y mi Guía de programación de Vibe se integra en todo el sistema. En el caso de una aplicación, debe contener tanto las reglas del producto como los comandos de compilación. A continuación se muestra el esquema de uno para una aplicación como Stash:

Markdown

# Notas para los programadores (ejemplo de una aplicación al estilo Stash)

## En qué consiste esta aplicación
Stash recuerda dónde están las cosas. Foto del lugar + nombre + habitación = se encuentra en segundos.
Si un cambio no agiliza el guardado o la búsqueda, no tiene cabida aquí.

## Aspectos innegociables
- Prioridad al modo sin conexión. Todas las funciones funcionan sin red. La sincronización es un extra.
- El modo invitado nunca sube nada.
- Sin análisis, anuncios ni SDK de seguimiento. Pregunta antes de añadir CUALQUIER dependencia.
- Sin secretos en el paquete de la aplicación. Las tareas que requieren privilegios se realizan en Cloud Functions.
- Accesibilidad: Dynamic Type, etiquetas de VoiceOver, objetivos táctiles de 44 x 44 pt.
- Modo claro y oscuro para cada pantalla.

## Diseño
- Los tokens se encuentran en src/theme/tokens.ts. Nunca codifiques de forma fija un color o un tamaño de fuente.
- Al implementar un marco de Figma: get_design_context, luego get_variable_defs,
  y después get_screenshot para comparar tu resultado.

## Comandos
- Instalación: npm install
- Ejecución: npx expo start
- Pruebas: npm test
- Tipos: npx tsc --noEmit
- Lint: npx expo lint

## Definición de «hecho»
- Las pruebas, los tipos y el lint pasan
- Funciona en modo avión
- Funciona en modo claro y oscuro, con el tamaño de texto máximo
- No hay nuevas advertencias en la consola

Paso 6 (opcional): ejecuta OpenCode dentro de Xcode y configúralo para que utilice las herramientas de Xcode

Xcode ahora incorpora de serie la programación basada en agentes y admite agentes externos de dos formas diferentes. Vale la pena conocer ambas si desarrollas en entorno nativo.

OpenCode como agente dentro de Xcode (ACP). Xcode puede alojar cualquier agente que utilice el Protocolo de Cliente de Agente, y OpenCode lo hace a través de opencode acp.

  1. Inicia sesión primero desde el terminal: Inicio de sesión en OpenCode Auth.
  2. Correr ¿qué opencode? y copia la ruta absoluta. Xcode no desarrolla ~ o consulta la variable PATH de tu shell.
  3. En Xcode, selecciona Xcode → Ajustes → Inteligencia, y luego, en la sección «Agentes», haz clic en Añadir un agente.
  4. Pega la ruta como comando y añade acp como argumento.
  5. Inicia una nueva conversación en la barra lateral «Inteligencia» de Xcode y selecciona «OpenCode».

No es posible cambiar de modelo desde la interfaz de Xcode, así que configura tu modelo predeterminado en opencode.jsonc Primero.

Las herramientas de Xcode integradas en OpenCode (MCP). La otra opción suele ser más útil: OpenCode permanece en tu terminal, pero puede compilar tu proyecto, ejecutar pruebas y generar vistas previas de SwiftUI a través de Xcode.

  1. En Xcode → Ajustes → Inteligencia, en «Model Context Protocol», activa Permitir que los agentes externos utilicen las herramientas de Xcode.
  2. Añade el puente de Xcode a OpenCode: opencode mcp add xcode -- xcrun mcpbridge
  3. Abre tu proyecto en Xcode antes de enviar la solicitud. El puente se comunica con el Xcode que está en ejecución, y Xcode te avisa cuando se conecta un agente externo.

¿Qué nivel de esfuerzo requiere cada trabajo?

TareaAgenteEsfuerzo
Planificación de una funcionalidad, el modelo de datos o la lógica de sincronizaciónplanmáx. (por defecto)
Implementar una pantalla a partir de un marco de Figmaconstruiralto
Solucionar un error con una forma clara de reproducirloconstruiralto; máx. si se trata de un error de sincronización o de una condición de carrera
Escribir pruebas, cambiar nombres, pequeñas refactorizacionesconstruirmedio
Buscar en el código fuente, leer la documentaciónexplorarbajo
Copiar cambios y traducciones de cadenasconstruirbajo o medio

Un mayor esfuerzo implica más fichas de reflexión y más tiempo de espera, según las propias palabras de MiniMax. La mayor parte del tiempo en un bucle de agente se dedica a esperar, así que adapta el esfuerzo al riesgo.


Parte 5 — Cómo diseñar tu aplicación en Figma aunque no seas diseñador

No hace falta ser diseñador para crear una buena primera aplicación. Solo hay que tomar unas pocas decisiones, una vez, y anotarlas en un lugar donde el agente pueda leerlas.

Empieza por las palabras, no por los rectángulos

Antes de abrir Figma, escribe tres cosas en un archivo de texto sin formato:

  1. La promesa, en una sola frase. Para Stash: La forma más rápida de recordar dónde has dejado las cosas.
  2. Tres historias de usuario. “He guardado mi pasaporte en el cajón del escritorio y quiero encontrarlo en marzo”. “Estoy en el garaje, no tengo cobertura y quiero anotar dónde he dejado el taladro”. “Quiero que las luces de Navidad me recuerden que existen en noviembre”.”
  3. La lista de pantallas. Stash incluye cuatro pestañas («Inicio», «Buscar», «Salas» y «Configuración»), además de una pantalla para añadir elementos y una vista de detalles de los mismos. Seis pantallas. Eso es toda una aplicación.

A continuación, entrega ese archivo al plan agente y pídele que discuta contigo: “Lee este resumen. Enumera los flujos de usuario, los casos extremos en los que no he pensado y las pantallas que me faltan. Después, dime qué debería eliminar”.” Este es precisamente el tipo de trabajo tedioso y minucioso para el que sirve “max effort”: preguntas del tipo «¿qué pasa si el usuario deniega el acceso a la cámara?». Dedicarle diez minutos puede ahorrarte tener que rediseñar todo.

Configura las variables antes de dibujar nada

Figma variables Son valores predefinidos: colores, espaciado, radios de las esquinas y tamaños. Configúralos primero, con un modo claro y otro oscuro para los colores, y tu aplicación tendrá un aspecto coherente por defecto.

Con un agente de IA, cobran el doble de importancia. Cuando el agente implementa una pantalla, el servidor MCP de Figma puede proporcionarle las variables exactas utilizadas en ese fotograma (el get_variable_defs (herramienta), por lo que escribe colores.verde en lugar de intentar adivinar un código hexadecimal a partir de una captura de pantalla.

Esta es la paleta de colores del concepto de diseño público de Stash:

TokenValorSe utiliza paraContraste sobre papel
Papel#F6F4EEAntecedentes de la aplicación—
Superficie#FFFCF7Cartas y campos—
Tinta#172E2ATexto principal13.1 : 1
Verde#23594CBotones, estados seleccionados, marca7.3 : 1
Verde suave#E1EBE4Lo más destacado de «Quiet»—
Coral#D46F4FPunto de acento, una palabra en un titular3.1 : 1
Coral suave#F8E8DEReflejos cálidos—
Silenciado#6E7D76Texto secundario3.9 : 1
Línea#DEDFD7Separadores y bordes—

Los titulares utilizan una tipografía con serifas; el resto utiliza la tipografía sans-serif del sistema. Ese es todo el sistema tipográfico.

La columna de contraste es la parte que hay que copiar. El negro y el verde superan con holgura la relación de 4,5:1 que exigen las WCAG para el texto normal. El coral, con una relación de aproximadamente 3:1, solo cumple los requisitos para el texto grande, por lo que debe utilizarse en palabras destacadas de los titulares y en pequeños puntos de acento, que es precisamente donde lo utiliza Stash. El gris apagado se sitúa en 3,9:1, por lo que debe utilizarse en leyendas más grandes en lugar de en letra pequeña. Compruébalo en Figma antes de que el agente copie un token en cincuenta sitios.

Mostrar imagen Nueve colores, dos tipos de letra, unos cuantos componentes. Un sistema de diseño no tiene por qué ser extenso para resultar útil; lo importante es que esté documentado.

Crea cinco componentes, no cincuenta

Para crear una primera aplicación, necesitas más o menos cinco componentes reutilizables: un botón (primario y tranquilo), un campo de texto, un tarjeta, un fila o casilla de la lista (la ficha de la habitación de Stash) y la barra de pestañas. Crea estos elementos como componentes de Figma con variantes para sus diferentes estados: predeterminado, pulsado, desactivado y error.

Apple publica recursos oficiales de diseño de iOS para Figma. Úsalos como referencia para elementos del sistema, como ventanas, alertas y el teclado, en lugar de volver a dibujarlos. De todos modos, tu agente utilizará los componentes reales del sistema.

Diseña las pantallas que el agente olvidará

Los agentes de IA se desenvuelven muy bien en el «camino ideal», pero son terriblemente ineficaces en todo lo que lo rodea. Diseña estos agentes a propósito:

  • Estados vacíos. La primera apertura: una habitación vacía (la cuadrícula de habitaciones de Stash muestra “Aún no hay objetos”), una búsqueda sin resultados.
  • Texto enorme. Ajusta tu móvil al tamaño máximo de «Dynamic Type» y fíjate en tus diseños. Los nombres largos de los elementos se ajustan a la línea. Los botones se hacen más grandes.
  • Modo oscuro, en todas las pantallas, no solo en las más bonitas.
  • No hay foto. ¿Cómo es la ficha de un objeto sin ella?
  • Permiso denegado. El usuario ha rechazado la cámara. ¿Y ahora qué?
  • Sin conexión. ¿Cómo se ve el mensaje “Guardado, se sincronizará más tarde”?

Deja que la IA te ayude dentro de Figma, pero mantén el control sobre la fuente de información

La IA de Figma ha madurado rápidamente este año. La Agente de Figma Entró en fase beta abierta para todos los planes de pago en Config 2026, y es gratuito durante la beta para las suscripciones Full. Permite generar y remezclar diseños dentro de tu archivo. Figma Make convierte las indicaciones en prototipos en los que se puede hacer clic. Tejido Ahora, las herramientas permiten realizar tareas relacionadas con las imágenes, como cambiar el fondo, sin salir del archivo de diseño.

Son excelentes para explorar. Crea diez variaciones de una pantalla de inicio, toma la única idea buena y, a continuación, reconstrúyela con tus propios componentes y variables. Si las capas generadas se convierten en tu fuente de referencia, tu sistema de diseño se desvía y el agente de programación hereda esa desviación.

Stash hace algo que recomendaría a cualquiera: sus ideas experimentales se recogen en un concepto interactivo independiente y claramente identificado en la página web, no en la aplicación. Así puedes explorar en público sin prometer funciones que aún no existen.

Crea un prototipo y, a continuación, observa cómo lo utilizan tres personas

Conecta las pantallas para crear un prototipo interactivo, entrega tu móvil a tres personas y pídeles a cada una que guarde algo y lo vuelva a encontrar. No les des ninguna explicación. Observa en qué momentos dudan. Tres personas detectarán la mayoría de los problemas importantes, y arreglar un marco en Figma lleva unos minutos, mientras que hacerlo después de que el agente lo haya creado requiere una sesión completa.


Parte 6 — Cómo conectar Figma con OpenCode: el problema del MCP

Esta es la parte del flujo de trabajo que, cuando funciona, parece sacada del futuro: seleccionas un fotograma en Figma, le pides al agente que lo cree y este lee el diseño real, las variables reales y los componentes reales, en lugar de tener que entrecerrar los ojos para ver una captura de pantalla.

Además, es la parte en la que la mayoría de las guías se saltan un detalle que te hará perder toda una tarde.

Lo que el servidor MCP de Figma ofrece a un agente

El MCP (Model Context Protocol) es el método estándar que utilizan los agentes de IA para utilizar herramientas externas. El servidor MCP de Figma pone a disposición un conjunto de herramientas; estas son las que resultan importantes para desarrollar una aplicación:

HerramientaQué devuelve
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 escriba a 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.

Mostrar imagen 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 con Shift + D.
  3. In the inspect panel, find the Servidor 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:

  • Correr 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.


Parte 7 — Cómo crear una aplicación desde cero, paso a paso

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?SíNot 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 codeBien
Lo mejor paraApple-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 y 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. Inicio: recently saved items and the rooms row.
  4. Buscar en: by name, room and note, plus a “with photos” filter.
  5. Item detail and “Found it”.
  6. Habitaciones: the grid, plus adding, renaming and deleting rooms.
  7. Voice notes: record, transcribe, make the transcript searchable.
  8. Recordatorios: local notifications for seasonal items.
  9. Widgets for the Home Screen and Lock Screen.
  10. Ajustes: 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 construir 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 Por qué el software «local-first» está volviendo a ganar popularidad.

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.


Parte 8 — Cómo publicar una aplicación en la 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

RequisitoDetallesIn 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
Clasificación por edadesAnswer 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 y 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 — Encuéntralo rápido y Encuentra cualquier cosa que hayas guardado: 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.
  • Clasificación por edades 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.

Mostrar imagen 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.


Parte 9 — “Y otras cosas”: El kit de lanzamiento en torno a la aplicación

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.

Mostrar imagen 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: Todo tiene su sitio. Encuéntralo. En cuestión de segundos. Guarda ese lugar. Tu hogar. Habitación por habitación. Recuerda los pequeños detalles. Nítido. Con cualquier luz. 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.

Parte 10 — Cuánto cuesta desarrollar una aplicación con 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 v2Gratuito, licencia del 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
XcodeGratisNative 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

Mostrar imagen 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.


Parte 11 — Diez errores que debes evitar al crear tu primera aplicación con 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.


Parte 12 — ¿Deberías utilizar precisamente esta pila? Seis situaciones

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 /deshacer 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.


Parte 13 — A qué hay que estar atento en los próximos meses

  • 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.

Preguntas frecuentes

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 /conectar, choose “MiniMax Token Plan (minimax.io)” and paste your M Plan subscription key. Then run /modelos 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.


Conclusión

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 Storeo 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.

Aviso: 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.

Añade tu señal.

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol