[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fservices\u002Fflutter-app-development\u002Fhealthcare":167,"service-parent:\u002Fservices\u002Fflutter-app-development\u002Fhealthcare":655,"service-children:\u002Fservices\u002Fflutter-app-development\u002Fhealthcare":1140,"glossary":1141},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Todas las apps que entregamos llegan a Android: APIs de plataforma, ejecución en segundo plano, permisos y los requisitos de tienda que traen consigo.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","El framework de frontend en el que trabajamos cuando un producto ya es Angular: una estructura con todo incluido que encaja en apps grandes y de vida larga.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","El lenguaje en el que está escrita cada app Flutter que entregamos: null safety robusto, pattern matching de verdad y un compilador que apunta a nativo y a la web.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","El framework de Python que usamos cuando un producto necesita administración, autenticación y un modelo de datos real desde el primer día.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Cada servicio que construimos se publica como contenedor, así que lo que corre en un portátil, en CI y en producción es un solo artefacto y no tres.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","La automatización de releases móviles: firma, builds y subidas a las tiendas desde CI, no desde el portátil de un ingeniero el día del lanzamiento.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Nuestro stack móvil principal desde 2018: una base de código Dart que llega a iOS, Android, web y escritorio sin un equipo por plataforma.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Todos los proyectos que tocamos viven en Git: pull requests revisadas, CI en cada rama y un historial que sigue teniendo sentido meses después.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Nuestro lenguaje de backend para APIs en tiempo real y servicios bajo carga: binarios pequeños, compilaciones rápidas y concurrencia que sigue siendo legible.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","La nube donde corren nuestras cargas de producción: Kubernetes gestionado, almacenamiento y red, sin servidores hechos a mano que nadie quiere mantener.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","El sistema de build por el que pasa cada release de Android: product flavours, configuraciones de firma y el cableado de dependencias bajo una app Flutter.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Cómo empaquetamos un despliegue de Kubernetes: servicio, configuración, secretos e ingress como una unidad versionada que se puede promover y revertir.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","A lo que recurrimos cuando una app Flutter necesita Android de verdad por debajo: platform channels, trabajo en segundo plano e integraciones con SDK nativos.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Compartir la lógica de negocio entre iOS y Android mientras cada plataforma conserva su UI nativa: la alternativa cuando Flutter no encaja.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Cómo ejecutamos servicios en producción: despliegues con Helm, rollouts reversibles y escalado que no necesita a nadie a las 3 de la mañana.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Mensajería ligera entre servicios: publicación\u002Fsuscripción y petición\u002Frespuesta sin el peso operativo de un clúster de broker completo.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue con renderizado en servidor, enrutado y SEO resueltos: así hacemos sitios y apps web que deben ser rápidas e indexables en la primera carga.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Donde trabajamos con un backend PHP ya existente: extenderlo, integrarse con él y construir los clientes móviles y web a los que tiene que servir.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Nuestra base de datos por defecto, salvo que un producto dé una razón concreta para no usarla: del diseño del esquema al ajuste de índices.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Nuestro lenguaje para backends, trabajo con datos e integraciones de IA, incluidos los bindings de Python que publicamos para nuestras propias herramientas en Rust.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","La librería de frontend en la que trabajamos cuando un producto ya es React: componentes, hooks y el ecosistema que ha crecido a su alrededor.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Donde ponemos los datos que tienen que ser rápidos y se pueden reconstruir: cachés, sesiones, límites de tasa y las colas tras las rutas lentas de un producto.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","El lenguaje de nuestra automatización de releases móviles: lanes de Fastlane, acciones a medida y el pegamento de CI que sube builds a las tiendas.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","A donde vamos cuando importan tanto el rendimiento como la corrección: renderizado de documentos, herramientas de CLI y servicios que tienen que ser rápidos y predecibles.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","La base de datos que viaja dentro de la app: cachés locales, almacenamiento offline-first y todo lo que tiene que seguir funcionando sin red.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Un CMS headless para cuando los editores necesitan ser dueños del contenido: una administración de verdad y una API limpia, sin construirlas desde cero.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","A lo que recurrimos cuando una app Flutter necesita iOS de verdad por debajo: platform channels, integraciones con SDK nativos, widgets y App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","El framework de UI de Apple, donde construimos las superficies nativas que una app Flutter no puede tener: widgets, App Clips y extensiones.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Cómo damos estilo a cada frontend que construimos: clases de utilidad y design tokens en lugar de una hoja de estilos que solo crece y nunca se borra.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","Lo predeterminado para todo lo que escribimos para el navegador y para servicios Node: tipos que detectan errores de integración antes de llegar a una revisión.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Nuestro framework de frontend para paneles de administración, cuadros de mando y apps web que deben seguir siendo mantenibles durante años.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","El modelo de reconocimiento de voz de código abierto de OpenAI: el motor de transcripción detrás de la entrada por voz, que funciona como servicio de backend y también en el propio dispositivo.","whisper","simple-icons:openai",{"id":168,"title":169,"body":170,"description":619,"extension":620,"footerCta":621,"headingCta":635,"image":639,"meta":643,"metaDescription":644,"metaTitle":645,"navigation":646,"ogDescription":647,"parent":648,"path":649,"seo":650,"slug":651,"stem":652,"updated":653,"__hash__":654},"services_es\u002Fservices\u002Fhealthcare.md","Desarrollo de apps de salud",{"type":171,"value":172,"toc":597},"minimark",[173,177,186,191,237,242,245,249,254,261,269,273,306,310,313,317,327,330,334,345,368,374,378,386,389,393,396,399,403,406,414,418,421,425,428,499,502,509,513,524,540,550,553,557,568,574,578,581,585],[174,175,176],"p",{},"El desarrollo de apps de salud es el diseño y la ingeniería de aplicaciones móviles que manejan datos clínicos o personales de salud: apps de telemedicina y videoconsulta, plataformas de salud mental y terapia, portales del paciente, monitorización remota y productos de bienestar. Se diferencia del desarrollo de apps corriente en tres cosas concretas: las reglas para tratar los datos las fija la ley y no tu política de privacidad, una caída de conexión ocurre en mitad de la consulta de alguien y no en mitad de un feed, y una parte significativa de tus usuarios está enferma, es mayor o llega a la app a través de tecnología de asistencia.",[174,178,179,180,185],{},"Flutter encaja en salud porque renderiza su propia interfaz. Un flujo de reserva, un diario de síntomas o una pantalla de consulta se comportan igual en iOS y Android desde una sola base de código, por en torno a un 30-40 % menos que construir el mismo producto dos veces en nativo. Lo que toca la plataforma directamente —Apple HealthKit y Android Health Connect, periféricos Bluetooth, permisos de cámara y micrófono, algunos SDK de vídeo— pasa por ",[181,182,184],"term",{"slug":183},"platform-channels","platform channels",": es trabajo rutinario, pero es trabajo real.",[187,188,190],"h3",{"id":189},"los-productos-que-construimos","Los productos que construimos",[192,193,194,202,213,219,225,231],"ul",{},[195,196,197,201],"li",{},[198,199,200],"strong",{},"Telemedicina y videoconsulta",": agenda, sala de espera, vídeo y chat en directo, notas de sesión y seguimiento",[195,203,204,207,208],{},[198,205,206],{},"Plataformas de salud mental y terapia",": elección de especialista, sesiones recurrentes y mensajería entre citas, como en ",[209,210,212],"a",{"href":211},"\u002Fportfolio\u002Fyoumi","YouMi",[195,214,215,218],{},[198,216,217],{},"Portales del paciente y apps de acompañamiento clínico",": citas, resultados, recetas, documentos y recordatorios sobre un sistema clínico ya existente",[195,220,221,224],{},[198,222,223],{},"Monitorización remota y gestión de enfermedades crónicas",": lecturas de wearables y dispositivos Bluetooth, tendencias, umbrales y avisos al profesional sanitario",[195,226,227,230],{},[198,228,229],{},"Bienestar, fitness y adherencia",": seguimiento de hábitos y de medicación, donde la superficie regulatoria es menor pero la retención es más difícil",[195,232,233,236],{},[198,234,235],{},"Herramientas para profesionales",": apps de turnos y rondas, mensajería segura y captura de datos pensada para una mano y una ventana corta de atención",[238,239,241],"h2",{"id":240},"quién-construye-tu-app-de-salud","Quién construye tu app de salud",[174,243,244],{},"Dos cosas separan a un equipo capaz de construir una app de salud de otro que solo ha construido apps.",[187,246,248],{"id":247},"un-producto-de-telesalud-en-producción-que-nos-llamaron-a-rescatar","Un producto de telesalud en producción que nos llamaron a rescatar",[174,250,251,253],{},[209,252,212],{"href":211}," es un servicio de consulta psicológica en línea: el paciente elige especialista, reserva y cambia sesiones, y escribe a su psicólogo entre citas. Cuando YouMi LLC acudió a nosotros, la app Flutter ya estaba publicada en ambas tiendas y fallaba justo en aquello para lo que existía: las sesiones se caían, los mensajes del chat no se entregaban y la pila de navegación tenía fugas de memoria suficientes para provocar cierres al cambiar de pantalla.",[174,255,256,257,260],{},"En dos semanas reconstruimos la capa ",[181,258],{"slug":259},"websocket"," con un ciclo de vida de conexión real —reconexión automática, cola de mensajes durante los cambios de red y manejo correcto de errores—, añadimos seguimiento completo del estado de entrega para que paciente y psicólogo vean cuándo un mensaje se envió, se entregó y se leyó, y reescribimos la arquitectura de navegación sobre las API de enrutamiento modernas de Flutter.",[174,262,263,264,268],{},"Ese proyecto es la razón por la que en esta página hablamos primero de fiabilidad de sesión. En telesalud la conexión ",[265,266,267],"em",{},"es"," el producto: una consulta que se cae en el minuto once no es una experiencia degradada, es una cita clínica que no ocurrió, y te cuesta el reembolso, la reprogramación y el paciente.",[187,270,272],{"id":271},"tiempo-real-y-mensajería-segura-construidas-más-de-una-vez","Tiempo real y mensajería segura, construidas más de una vez",[174,274,275,276,280,281,285,286,290,291,295,296,300,301,305],{},"El mismo problema aparece en todo nuestro trabajo. ",[209,277,279],{"href":278},"\u002Fportfolio\u002Fjepta","Jepta"," es una app de comunicación hiperlocal para barrios alemanes con una capa WebSocket detrás de cada chat y canal; ",[209,282,284],{"href":283},"\u002Fportfolio\u002Farcana","Arcana"," transmite la salida del modelo por ",[181,287,289],{"slug":288},"server-sent-events","server-sent events"," a una interfaz de chat que sigue fluida con miles de mensajes. Hemos puesto por escrito nuestra postura sobre la criptografía que hay debajo, en lugar de solo afirmarla: ver ",[209,292,294],{"href":293},"\u002Fblog\u002Fencryption-explained","El cifrado explicado",", ",[209,297,299],{"href":298},"\u002Fblog\u002Fhow-end-to-end-encryption-works","Cómo funciona realmente el cifrado de extremo a extremo"," y ",[209,302,304],{"href":303},"\u002Fblog\u002Fssl-certificate-pinning-flutter","Tu SSL pinning probablemente no funciona",".",[238,307,309],{"id":308},"qué-exigen-de-verdad-las-apps-de-salud","Qué exigen de verdad las apps de salud",[174,311,312],{},"Seis asuntos aparecen en todo proyecto de salud. Así los tratamos.",[187,314,316],{"id":315},"sesiones-que-sobreviven-a-una-red-real","Sesiones que sobreviven a una red real",[174,318,319,320,323,324,326],{},"Un paciente entra a la consulta con datos móviles, en un pasillo, pasando de Wi-Fi a LTE a mitad de camino. El vídeo va por ",[181,321],{"slug":322},"webrtc"," a través del SDK de un proveedor; el chat, la presencia y el estado de sesión van por ",[181,325],{"slug":259},". Ambos se caerán, y la pregunta de diseño no es cómo evitarlo sino qué pasa después.",[174,328,329],{},"Los modos de fallo son concretos, y siempre son los mismos tres: un socket que reconecta pero nunca vuelve a suscribirse, así que la app parece conectada y no recibe nada; mensajes enviados sin conexión que se pierden en lugar de encolarse; y un cliente que sigue mostrando «en sesión» cuando el servidor ya la cerró. Tratamos el estado de entrega como una pieza de primera clase de la interfaz —enviado, entregado, leído, fallido— porque en una conversación clínica «¿le ha llegado?» no es una pregunta cosmética, y un fallo silencioso es peor que uno visible.",[187,331,333],{"id":332},"datos-del-paciente-y-las-reglas-que-los-gobiernan","Datos del paciente y las reglas que los gobiernan",[174,335,336,337,340,341,344],{},"No tenemos atestación ",[181,338],{"slug":339},"hipaa"," ni certificación ",[181,342],{"slug":343},"soc-2",", y cualquier agencia que ofrezca una certificación como argumento de venta en lugar de describir cómo construye te está vendiendo algo. Las obligaciones de HIPAA recaen sobre la entidad cubierta (covered entity) y sus socios comerciales (business associates) —donde HIPAA se aplica, eso suele significar tú, tu proveedor de hosting y tu proveedor de vídeo, con acuerdos de socio comercial (Business Associate Agreements) firmados—. Nuestro trabajo es construir de forma que tu cumplimiento sea alcanzable y no una reescritura:",[192,346,347,350,356,359,362,365],{},[195,348,349],{},"Credenciales y tokens en el Keychain de iOS y el Keystore de Android, nunca en preferencias compartidas",[195,351,352,355],{},[181,353],{"slug":354},"tls"," con certificate pinning y un plan de rotación que no deje inservibles los clientes antiguos",[195,357,358],{},"Bloqueo biométrico o por código sobre el acceso a la información sanitaria protegida, no solo al abrir la app",[195,360,361],{},"Almacenamiento local cifrado para todo lo que se cachee en el dispositivo, con política de retención y borrado al cerrar sesión",[195,363,364],{},"Ningún dato de salud en logs, informes de fallos ni analítica: la fuga real más frecuente que encontramos",[195,366,367],{},"El mínimo de datos en el dispositivo que el producto pueda permitirse, porque un dato que nunca se cacheó no se puede extraer de un móvil robado",[174,369,370,373],{},[181,371],{"slug":372},"gdpr"," añade sus propias restricciones de arquitectura, y los datos de salud son datos de categoría especial con arreglo al artículo 9, así que su tratamiento necesita una condición concreta en la que apoyarse —y, cuando te apoyas en el consentimiento, este debe ser explícito y revocable—. Una solicitud de supresión debe ser una consulta y no un proyecto de arqueología, y dónde residen físicamente los datos pasa a ser una decisión de diseño y no un detalle de hosting. Son decisiones que se toman pronto o se pagan después.",[187,375,377],{"id":376},"una-cita-es-un-instante-no-una-cadena-de-texto","Una cita es un instante, no una cadena de texto",[174,379,380,381,385],{},"Este es el equivalente sanitario del problema de la aritmética del dinero en ",[209,382,384],{"href":383},"\u002Fservices\u002Fflutter-app-development\u002Ffintech","fintech",". Una cita es un instante en el tiempo que dos personas en dos zonas horarias tienen que acordar. Guárdalo como hora local en texto y acabarás moviendo una consulta una hora cuando un cambio de horario de verano caiga entre la reserva y la sesión, o mostrando a un profesional sanitario en Berlín un hueco que un paciente en Lisboa reservó a una hora completamente distinta.",[174,387,388],{},"Guardamos los instantes en UTC, conservamos junto a ellos la zona horaria de origen cuando la regla de visualización lo exige, mostramos en la zona local de cada participante y probamos los casos límite a propósito: una reserva hecha antes de un cambio de hora para una sesión posterior, un paciente que viaja entre ambas, un recordatorio que debe dispararse a la hora local correcta en un dispositivo cuya zona cambió después de programar la notificación. Reprogramar y cancelar es el mismo problema con una máquina de estados encima, y en la gestión de ausencias es donde se acumulan los casos límite.",[187,390,392],{"id":391},"datos-de-salud-en-el-dispositivo","Datos de salud en el dispositivo",[174,394,395],{},"Las lecturas de Apple HealthKit, Android Health Connect y periféricos Bluetooth Low Energy —tensiómetros, básculas, glucómetros, wearables— llegan a una app Flutter por platform channels. Algunos fabricantes publican paquetes Flutter; los que solo existen en nativo necesitan un envoltorio, que es una cantidad de trabajo conocida y no un riesgo, pero tiene que estar en la estimación.",[174,397,398],{},"Lo que los equipos subestiman son los permisos y los huecos. Los permisos de salud son granulares, revocables y distintos en cada plataforma; la entrega en segundo plano tiene sus propias reglas; y una sincronización que asume datos continuos mostrará un sinsentido la primera vez que alguien deje el reloj cargando dos días. Qué hace tu app con los datos que faltan es una decisión de producto, y se toma mejor antes de construir el gráfico.",[187,400,402],{"id":401},"accesibilidad-que-aquí-no-es-opcional","Accesibilidad, que aquí no es opcional",[174,404,405],{},"Las apps de salud las usan personas con baja visión, temblor, pérdida auditiva y la carga cognitiva de estar enfermas, además de cuidadores que actúan en nombre de otro. Eso convierte la accesibilidad en un requisito funcional y no en una casilla de cumplimiento: tipografía dinámica que no rompe el diseño al 200 %, contraste que aguanta una sala de espera muy iluminada, áreas táctiles pensadas para una mano insegura, etiquetas de lector de pantalla en cada control con significado y subtítulos en el vídeo.",[174,407,408,409,413],{},"También es cada vez más una cuestión legal. La Ley Europea de Accesibilidad se aplica a una serie de servicios digitales de consumo en la UE desde junio de 2025, y la contratación pública federal estadounidense conlleva requisitos de la Sección 508 —si un producto concreto entra en su ámbito es una pregunta para tu asesoría jurídica, pero la respuesta de ingeniería es la misma en ambos casos—. Flutter alimenta las API de accesibilidad de ambas plataformas desde el árbol que construye su widget ",[410,411,412],"code",{},"Semantics",", así que es alcanzable; simplemente es trabajo que hay que especificar en lugar de descubrirlo al final.",[187,415,417],{"id":416},"la-revisión-de-las-tiendas-más-estricta-aquí-de-lo-que-esperas","La revisión de las tiendas, más estricta aquí de lo que esperas",[174,419,420],{},"Apple revisa las apps médicas bajo la directriz 1.4.1 y puede pedir la metodología y la autorización regulatoria detrás de cualquier afirmación clínica. La política de apps de salud de Google Play tiene sus propias declaraciones, y las funcionalidades de telemedicina y de receta electrónica conllevan requisitos país por país. Nada de esto es motivo para no lanzar, pero sí para cerrar tres cosas antes de construir la funcionalidad: qué afirma la app, quién respalda esa afirmación y en qué mercados se lanza. Los equipos que descubren esto al enviar la app a revisión pierden semanas.",[238,422,424],{"id":423},"por-qué-flutter-para-salud","Por qué Flutter para salud",[174,426,427],{},"El argumento honesto a favor de Flutter aquí:",[429,430,431,444],"table",{},[432,433,434],"thead",{},[435,436,437,441],"tr",{},[438,439,440],"th",{},"Requisito",[438,442,443],{},"Cómo lo aborda Flutter",[445,446,447,456,464,472,480,488],"tbody",{},[435,448,449,453],{},[450,451,452],"td",{},"iOS y Android con un solo equipo",[450,454,455],{},"Una base de código, en torno a un 30-40 % menos que dos desarrollos nativos",[435,457,458,461],{},[450,459,460],{},"Interfaz clínica consistente entre dispositivos",[450,462,463],{},"Flutter dibuja sus propios píxeles, así que un flujo de reserva o de consulta es idéntico en ambas plataformas",[435,465,466,469],{},[450,467,468],{},"Sesiones de vídeo y chat fiables",[450,470,471],{},"Hay SDK de WebRTC y WebSocket; la fiabilidad está en el diseño de la reconexión, no en el framework",[435,473,474,477],{},[450,475,476],{},"Primitivas de seguridad de la plataforma",[450,478,479],{},"Keychain, Keystore y biometría a través de platform channels",[435,481,482,485],{},[450,483,484],{},"HealthKit y Health Connect",[450,486,487],{},"Accesibles por platform channels; hay paquetes de la comunidad consolidados para los casos habituales",[435,489,490,493],{},[450,491,492],{},"Accesibilidad",[450,494,495,496,498],{},"Las API de accesibilidad de ambas plataformas se alimentan del árbol ",[410,497,412],{},", con tipografía dinámica y contraste resueltos en el sistema de diseño",[174,500,501],{},"El ahorro no es un descuento en ingeniería: es la eliminación del trabajo duplicado. Un flujo de reserva, un flujo de consentimiento, un conjunto de pantallas clínicas, probados dos veces en lugar de construidos dos veces.",[174,503,504,505,305],{},"Dónde sigue ganando el nativo: si tu producto es esencialmente un envoltorio fino alrededor de una capacidad específica de la plataforma —una experiencia profunda en Apple Watch o una integración con un dispositivo que solo existe como framework de iOS—, la ventaja multiplataforma se encoge y lo nativo puede ser la respuesta honesta. Te lo diremos cuando sea el caso. La página general del servicio es ",[209,506,508],{"href":507},"\u002Fservices\u002Fflutter-app-development","desarrollo de apps con Flutter",[238,510,512],{"id":511},"cómo-trabajamos","Cómo trabajamos",[174,514,515,518,519,523],{},[198,516,517],{},"Proyecto de alcance cerrado."," Nos hacemos cargo de la entrega de principio a fin: descubrimiento, arquitectura, construcción y envío a tiendas. Mejor cuando quieres delegar un alcance definido y tener un equipo responsable del resultado. Nuestro ",[209,520,522],{"href":521},"\u002Fblog\u002Fflutter-app-development-process","proceso de desarrollo"," describe cómo se ve semana a semana.",[174,525,526,529,530,534,535,539],{},[198,527,528],{},"Ampliación de equipo."," Nuestros ingenieros se incorporan a tu equipo, en tu repositorio y tus sprints, bajo tu gestión. Mejor cuando ya tienes liderazgo técnico y necesitas capacidad en Flutter: mira ",[209,531,533],{"href":532},"\u002Fservices\u002Fteam-augmentation","ampliación de equipo"," y nuestra ",[209,536,538],{"href":537},"\u002Fblog\u002Fhire-flutter-developers-2026","guía para contratar desarrolladores Flutter",", que es honesta sobre cuándo no contratarnos.",[174,541,542,545,546,305],{},[198,543,544],{},"Rescate y estabilización."," A veces la app ya existe y está fallando en producción, que es como empezó el proyecto de YouMi. Ese trabajo se acota a partir de los síntomas, no de una lista de funcionalidades, y ahora tiene ",[209,547,549],{"href":548},"\u002Fservices\u002Fflutter-app-development\u002Fapp-rescue","su propia página",[174,551,552],{},"Sea cual sea la vía, enviamos un presupuesto detallado en un plazo de dos días laborables desde que entendemos los requisitos.",[238,554,556],{"id":555},"cuánto-cuesta-una-app-de-salud","Cuánto cuesta una app de salud",[174,558,559,560,564,565,305],{},"Un primer lanzamiento acotado —cuentas, reserva de citas y un canal de consulta— es un proyecto del nivel Business: ",[561,562],"service-price",{"service":563},"flutter-app-development\u002Fbusiness",", en un plazo de tres a cinco meses. Una plataforma de telesalud completa con videoconsultas, apps separadas para el profesional sanitario y el paciente, integraciones con un sistema clínico existente y datos de dispositivos de salud es trabajo de nivel enterprise, a partir de ",[561,566],{"service":567},"flutter-app-development\u002Fenterprise",[174,569,570,571,573],{},"Son los mismos niveles publicados que en la página de ",[209,572,508],{"href":507},": un vertical no tiene una segunda lista de precios. Lo que mueve una cifra de salud dentro de esos rangos es concreto: el proveedor de vídeo, la profundidad de la integración con sistemas clínicos que no controlas y las decisiones de cumplimiento que determinan dónde pueden residir los datos. Las tres cosas afloran durante la definición del alcance, y por eso el presupuesto llega después de las preguntas y no antes.",[238,575,577],{"id":576},"preguntas-frecuentes","Preguntas frecuentes",[174,579,580],{},"Lo que más nos preguntan los equipos que construyen productos de salud y telemedicina en Flutter.",[582,583],"questions",{":items":584},"[{\"title\":\"¿Flutter es bueno para apps de salud?\",\"text\":\"Sí. Flutter encaja bien en apps de salud porque dibuja su propia interfaz, lo que significa que los flujos de reserva, las pantallas de consulta y los diarios de síntomas se comportan igual en iOS y Android desde una sola base de código, normalmente por un 30 a 40 por ciento menos que construir dos apps nativas. Compila a código nativo, así que una pantalla de consulta se mantiene fluida mientras el vídeo y el chat funcionan encima, y las API de accesibilidad de ambas plataformas se alimentan del árbol que construye su widget Semantics, algo que importa más en salud que en la mayoría de las categorías. La contrapartida es que las capacidades de plataforma como HealthKit, Health Connect, los periféricos Bluetooth y algunos SDK de vídeo se alcanzan mediante platform channels y no directamente, lo cual es rutinario pero es trabajo de ingeniería real.\"},{\"title\":\"¿Puede una app Flutter cumplir con HIPAA?\",\"text\":\"Sí, en el mismo sentido en que puede hacerlo cualquier app. El cumplimiento de HIPAA es una propiedad de tu organización y de cómo tratas los datos, no de tu framework de interfaz, y las obligaciones recaen sobre la entidad cubierta y sus socios comerciales mediante BAA firmados: donde HIPAA se aplica, normalmente tú, tu proveedor de hosting y tu proveedor de vídeo. Flutter usa las mismas primitivas de plataforma que una app nativa para las salvaguardas técnicas: el Keychain de iOS, el Keystore de Android, las API biométricas y TLS con certificate pinning. Lo que determina que una app de salud sea segura es la disciplina de implementación. Los fallos que encontramos en la práctica son información sanitaria protegida escrita en logs e informes de fallos, credenciales en almacenamiento inseguro y caché innecesaria en el dispositivo, y los tres aparecen con la misma frecuencia en código nativo.\"},{\"title\":\"¿Cómo se construyen las videoconsultas en una app Flutter?\",\"text\":\"Con el SDK de un proveedor de WebRTC y no con una pila WebRTC propia: la fontanería de medios, la infraestructura TURN y la negociación de códecs no son cosas en las que un producto de salud deba gastar su presupuesto de ingeniería. El trabajo que de verdad determina la calidad está alrededor de la llamada: una sala de espera que explica a ambas partes qué está pasando, una gestión de permisos de cámara y micrófono que se recupera cuando alguien los deniega y luego cambia de opinión, y el comportamiento de reconexión cuando la red cambia a mitad de sesión. Una consulta que se cae en el minuto once es una cita clínica que no ocurrió, así que la reconexión se diseña desde el principio en lugar de añadirse tras una queja.\"},{\"title\":\"¿Pueden las apps Flutter leer datos de Apple HealthKit y Android Health Connect?\",\"text\":\"Sí, mediante platform channels, y ya existen paquetes de la comunidad consolidados para los casos habituales. El esfuerzo rara vez está en la lectura. Está en los permisos, que son granulares, revocables y distintos en cada plataforma, en las reglas de entrega en segundo plano y en qué hace tu app cuando faltan datos: de lo contrario, a quien dejó el reloj cargando dos días se le mostrará un gráfico que da a entender algo clínicamente falso. Cómo se representan los huecos es una decisión de producto que conviene tomar antes de construir el gráfico.\"},{\"title\":\"¿Cuánto cuesta desarrollar una app de telemedicina?\",\"text\":\"Un primer lanzamiento acotado con cuentas, reserva de cita y un canal de consulta suele suponer entre tres y cinco meses de construcción. Una plataforma de telesalud completa con vídeo, apps para el profesional sanitario y para el paciente, integraciones con un sistema clínico existente y datos de dispositivos médicos lleva más, porque el calendario lo marcan las integraciones de terceros, las decisiones de cumplimiento y la revisión de las tiendas más que el trabajo de interfaz. Cómo se combinan alcance, backend, integraciones y cumplimiento hasta llegar a una cifra final está en nuestra guía sobre el coste de desarrollo con Flutter.\"},{\"title\":\"¿Tenéis certificación HIPAA o SOC 2?\",\"text\":\"No, y conviene desconfiar de cualquier agencia que ofrezca una certificación como argumento de venta en lugar de describir cómo construye. HIPAA no tiene esquema de certificación en absoluto, solo atestación y auditoría frente a la norma, y ambas se aplican a la organización que trata los datos y no al contratista que escribe la app. Lo que aportamos es una arquitectura que mantiene la información sanitaria protegida fuera de los logs, la analítica y el almacenamiento local innecesario, guarda las credenciales en los almacenes de claves de la plataforma respaldados por hardware y convierte una solicitud de supresión del RGPD en una consulta y no en una excavación, para que tu cumplimiento sea alcanzable en lugar de una reescritura.\"},{\"title\":\"¿Por qué la accesibilidad importa más en las apps de salud?\",\"text\":\"Por quién las usa. Entre los usuarios de una app de salud hay personas con baja visión, temblor, pérdida auditiva y la carga cognitiva que trae estar enfermo, además de cuidadores que actúan en nombre de otro. Tipografía dinámica que sobrevive al ajuste del 200 por ciento, contraste que funciona en una sala de espera muy iluminada, áreas táctiles pensadas para una mano insegura y etiquetas de lector de pantalla en cada control con significado son requisitos funcionales, no una casilla de cumplimiento. También hay una dimensión legal —la Ley Europea de Accesibilidad se aplica a una serie de servicios digitales de consumo en la UE desde junio de 2025, y la contratación pública federal estadounidense conlleva requisitos de la Sección 508—, pero la respuesta de ingeniería es la misma esté o no tu producto en su ámbito.\"}]",[174,586,587,588,592,593,596],{},"Lee el desglose de costes en ",[209,589,591],{"href":590},"\u002Fblog\u002Fflutter-app-development-cost-2026","Cuánto cuesta desarrollar una app en Flutter en 2026",", o mira el ",[209,594,595],{"href":211},"caso de YouMi"," para ver cómo es un producto de telesalud en Flutter ya publicado.",{"title":598,"searchDepth":599,"depth":599,"links":600},"",2,[601,603,607,615,616,617,618],{"id":189,"depth":602,"text":190},3,{"id":240,"depth":599,"text":241,"children":604},[605,606],{"id":247,"depth":602,"text":248},{"id":271,"depth":602,"text":272},{"id":308,"depth":599,"text":309,"children":608},[609,610,611,612,613,614],{"id":315,"depth":602,"text":316},{"id":332,"depth":602,"text":333},{"id":376,"depth":602,"text":377},{"id":391,"depth":602,"text":392},{"id":401,"depth":602,"text":402},{"id":416,"depth":602,"text":417},{"id":423,"depth":599,"text":424},{"id":511,"depth":599,"text":512},{"id":555,"depth":599,"text":556},{"id":576,"depth":599,"text":577},"Telemedicina, salud mental y apps para pacientes construidas sobre Flutter: sesiones que no se caen, datos clínicos tratados al nivel que exige el regulador y accesibilidad que aguanta a usuarios reales","md",{"heading":622,"text":623,"buttons":624},"¿Estás construyendo una app de salud?","Cuéntanos qué estás construyendo y dónde está la parte difícil: videoconsultas, datos clínicos, integraciones con dispositivos o la revisión de las tiendas. Te diremos con honestidad si Flutter encaja y qué hace falta para entregarlo.",[625,631],{"to":626,"label":627,"leadingIcon":628,"color":629,"variant":630},"\u002Fcontact?intent=flutter-app-development","Agendar una consulta","lucide:message-circle","neutral","outline",{"to":211,"label":632,"color":633,"variant":634},"Ver el proyecto YouMi","primary","solid",[636,637],{"to":626,"label":627,"leadingIcon":628,"color":633,"variant":634},{"to":211,"label":638,"color":629,"variant":630},"Ver nuestro trabajo",{"url":640,"alt":641,"text":642},"\u002Fservices\u002Fhealthcare.webp","Desarrollo de apps de salud y telemedicina con Flutter","Telemedicina, salud mental y atención al paciente: una base de código, ambas tiendas",{},"Desarrollo de apps de salud y telemedicina con Flutter: videoconsultas y chat, arquitectura pensada para HIPAA y el RGPD, y sesiones que no se caen.","Desarrollo de apps de salud con Flutter",true,"Telemedicina en Flutter, de un equipo llamado para arreglar una app de terapia cuyas sesiones se caían: consultas fiables y datos clínicos bien tratados.","flutter-app-development","\u002Fservices\u002Fflutter-app-development\u002Fhealthcare",{"title":169,"description":619},"healthcare","services\u002Fhealthcare","2026-09-03","HI5N58EGkbWf0IkJP836uD4vWL-MgTebXpfbYOI7D_M",{"id":656,"title":657,"body":658,"description":1113,"extension":620,"footerCta":1114,"headingCta":1122,"image":1128,"meta":1131,"metaDescription":1132,"metaTitle":1133,"navigation":646,"ogDescription":1134,"parent":1135,"path":507,"seo":1136,"slug":648,"stem":1137,"updated":1138,"__hash__":1139},"services_es\u002Fservices\u002Fflutter-app-development.md","Desarrollo de apps con Flutter",{"type":171,"value":659,"toc":1097},[660,667,683,687,691,694,698,709,713,720,724,741,755,768,772,775,779,785,788,793,800,805,808,814,817,822,826,829,835,852,856,859,893,896,900,903,1007,1014,1016,1030,1038,1045,1049,1052,1056,1070,1072,1075,1078],[174,661,662,663,666],{},"El desarrollo de apps con Flutter consiste en construir tus apps de iOS y Android —y, donde se gana su sitio, tu app web— desde una sola base de código, con un solo equipo, sobre el kit de herramientas Flutter de Google. Bien hecho, cuesta ",[198,664,665],{},"un 30-40 % menos de construir que dos apps nativas",", y la brecha se ensancha a lo largo de la vida del producto, porque cada funcionalidad y cada corrección futuras se escriben una vez en lugar de dos. Mal hecho, produce una app que se siente ligeramente extraña en ambas plataformas, y por eso el framework importa menos que quién lo maneja.",[174,668,669,670,674,675,679,680,305],{},"Somos un equipo que lleva publicando Flutter en producción desde 2019 y que apenas hace otra cosa. Siete de los ocho proyectos de nuestro ",[209,671,673],{"href":672},"\u002Fportfolio","portfolio"," son apps Flutter, desde una plataforma de inversión en producción hasta una flota de quince apps de marca blanca construidas desde una sola base de código. Nuestros ingenieros mantienen ",[209,676,678],{"href":677},"\u002Fopen-source","paquetes Flutter de código abierto"," en pub.dev, y nuestros precios están publicados en esta página en lugar de darse en privado: preferimos poner los números encima de la mesa y que nos los discutan antes que abrir con un «depende». El desglose completo de qué los determina está en nuestra ",[209,681,682],{"href":590},"guía de costes",[684,685],"statistics-grid",{":items":686},"[{\"icon\": \"lucide:dollar-sign\", \"value\": \"30-40%\", \"label\": \"Menos coste de construcción\", \"description\": \"Una base de código en vez de dos apps nativas, y la brecha se ensancha con el mantenimiento\"}, {\"icon\": \"lucide:clock\", \"value\": \"2-3x\", \"label\": \"Más rápido a ambas tiendas\", \"description\": \"Un solo equipo publica iOS y Android a la vez\"}, {\"icon\": \"lucide:layers\", \"value\": \"7\", \"label\": \"Apps Flutter publicadas\", \"description\": \"En producción, con casos de estudio que puedes leer\"}, {\"icon\": \"lucide:package\", \"value\": \"6\", \"label\": \"Paquetes de código abierto\", \"description\": \"Mantenidos por nuestros ingenieros en pub.dev y más allá\"}]",[238,688,690],{"id":689},"quién-construye-tu-app-flutter","Quién construye tu app Flutter",[174,692,693],{},"Cualquiera puede enumerar frameworks. Lo que separa a una agencia Flutter de una agencia que ha usado Flutter es trabajo en producción que se puede inspeccionar, así que aquí está el nuestro.",[187,695,697],{"id":696},"una-app-de-inversión-en-producción-bajo-datos-de-mercado-en-tiempo-real","Una app de inversión en producción bajo datos de mercado en tiempo real",[174,699,700,704,705,305],{},[209,701,703],{"href":702},"\u002Fportfolio\u002Fextraetf","ExtraETF"," es una app de inversión para Isarvest GmbH: precios de mercado en vivo, seguimiento de carteras y gráficos que se mantienen fluidos mientras las cotizaciones llegan por WebSockets desde un backend en Go que también construimos nosotros. Seis meses hasta ambas tiendas. La parte difícil de una app así no es dibujar el gráfico: es mantener plana la tasa de fotogramas mientras los datos llegan cada pocos cientos de milisegundos, que es un problema de acotar reconstrucciones que hemos documentado con ",[209,706,708],{"href":707},"\u002Fblog\u002Fextraetf-realtime-fintech-flutter-go","detalle de ingeniería",[187,710,712],{"id":711},"dos-apps-nativas-fusionadas-en-una-sola-base-de-código","Dos apps nativas, fusionadas en una sola base de código",[174,714,715,719],{},[209,716,718],{"href":717},"\u002Fportfolio\u002Fformtastic","Formtastic"," se publicó durante años como apps de iOS y Android separadas: cada funcionalidad construida dos veces, releases que se desincronizaban. Consolidamos el producto en una única base de código Flutter sin interrumpir a los clientes que ya dependían de él, y después seguimos construyendo: soporte para iPad, sincronización offline y entrada por voz en los campos de los formularios. Es el antes y después más claro que podemos enseñar de lo que una sola base de código hace por una hoja de ruta, y el cliente lo cuenta más abajo con sus propias palabras.",[187,721,723],{"id":722},"quince-apps-de-marca-desde-una-sola-base-de-código","Quince apps de marca desde una sola base de código",[174,725,726,727,731,732,736,737,305],{},"Para una plataforma de cashback y fidelización bajo NDA, una sola base de código Flutter produce ",[209,728,730],{"href":729},"\u002Fportfolio\u002Fcashback-loyalty-platform","una flota de más de quince apps totalmente personalizadas",", cada una con su propio nombre, su tema y su ficha en las tiendas, más una app para comercios y un panel de administración que lanza una marca nueva sin trabajo de ingeniería. Esa construcción se convirtió en su propia línea de servicio —",[209,733,735],{"href":734},"\u002Fservices\u002Fwhitelabel-app-development","desarrollo de apps de marca blanca","— y en su propia ",[209,738,740],{"href":739},"\u002Fblog\u002Fwhite-label-app-platform-flutter","arquitectura documentada",[174,742,743,744,746,747,751,752,754],{},"Más pequeño y más rápido, la misma disciplina: ",[209,745,284],{"href":283},", un compañero de chat con IA que transmite markdown a 60 fps a través de miles de mensajes, llevó tres semanas. ",[209,748,750],{"href":749},"\u002Fportfolio\u002Fonetwodo","OneTwoDo",", un marketplace de servicios de dos lados, llevó siete. ",[209,753,279],{"href":278},", una app de barrio con chats y canales en tiempo real, publicó todo su conjunto de funcionalidades en menos de seis meses.",[756,757,762,765],"testimonial",{"author":758,"avatar":759,"linkedin":760,"role":761},"Julian Garbotz","\u002Fclients\u002Fjulian-garbotz.png","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjulian-garbotz","Director general, Formtastic GmbH",[174,763,764],{},"Durante años, Formtastic se publicó como dos apps nativas separadas: una para iOS y otra para Android. Cada funcionalidad había que construirla dos veces, las releases se desincronizaban entre plataformas y mantener dos bases de código iba drenando nuestra hoja de ruta en silencio.",[174,766,767],{},"Nerdy Production lo unificó todo en una única base de código Flutter sin interrumpir el producto del que dependen nuestros clientes. Ahora ambas apps publican las mismas funcionalidades al mismo tiempo, la experiencia es idéntica en iPhone y en Android, y nuestro tiempo hasta producción ha bajado drásticamente. Mantenemos una base de código en vez de dos, y el equipo por fin dedica su energía a funcionalidades nuevas en lugar de a mantener dos apps sincronizadas.",[238,769,771],{"id":770},"cómo-funciona-flutter-el-secreto-de-su-rendimiento","Cómo funciona Flutter: el secreto de su rendimiento",[174,773,774],{},"La razón por la que las apps Flutter no cargan con la penalización de rendimiento de las «apps híbridas» es arquitectónica, y merece dos minutos aunque nunca vayas a leer Dart.",[187,776,778],{"id":777},"la-arquitectura-de-renderizado-de-flutter","La arquitectura de renderizado de Flutter",[780,781,782],"ol",{},[195,783,784],{},"Compilación directa a código nativo",[174,786,787],{},"A diferencia de los frameworks híbridos que pasan por puentes de JavaScript, Flutter compila de forma anticipada a código máquina ARM nativo. No hay intérprete entre tu app y el procesador, así que los tiempos de arranque y la velocidad de ejecución se sitúan en el mismo rango que los de apps escritas en Swift o Kotlin.",[780,789,790],{"start":599},[195,791,792],{},"Su propio motor gráfico",[174,794,795,796,799],{},"Flutter dibuja cada píxel por sí mismo, a través de ",[181,797],{"slug":798},"skia",", el motor 2D detrás de Chrome y Android, y de su sucesor Impeller en los dispositivos modernos. En lugar de ensamblar componentes de UI de la plataforma, renderiza la interfaz directamente sobre el lienzo de la pantalla. Por eso una app Flutter se ve y se comporta igual en todas las plataformas, y por eso el control completo sobre cada animación es el punto de partida y no una batalla.",[780,801,802],{"start":602},[195,803,804],{},"Framework de UI declarativo",[174,806,807],{},"El árbol de widgets de Flutter reconstruye solo las partes de la UI que cambian, mediante un algoritmo de comparación eficiente similar al de React. Las pantallas complejas con cientos de elementos animados mantienen los 60 fps —120 fps en las pantallas que lo permiten— siempre que las reconstrucciones estén acotadas con cuidado, que es exactamente el tipo de cuidado que separa el Flutter de producción del Flutter de demo.",[780,809,811],{"start":810},4,[195,812,813],{},"Arquitectura en capas optimizada",[174,815,816],{},"El motor (C\u002FC++) se encarga del renderizado, la maquetación de texto y la E\u002FS; el framework (Dart) ofrece la API por encima. La separación mantiene las operaciones críticas para el rendimiento a velocidad nativa mientras el código en el que trabaja tu equipo sigue siendo productivo y testeable.",[818,819],"features",{":items":820,":title":821},"[{\"label\": \"Animaciones a 60\u002F120 FPS\", \"description\": \"Animaciones de una suavidad total en todas las plataformas, sin fotogramas perdidos\"}, {\"label\": \"Arranque rápido\", \"description\": \"Las apps se lanzan en milisegundos, igual que las aplicaciones nativas\"}, {\"label\": \"Binario pequeño\", \"description\": \"La división de código y el tree shaking optimizados reducen el tamaño de la app\"}, {\"label\": \"Poca huella de memoria\", \"description\": \"Una gestión eficiente de la memoria mantiene las apps ágiles\"}]","Por qué el rendimiento no es una preocupación",[238,823,825],{"id":824},"flutter-frente-a-react-native-frente-a-desarrollo-nativo","Flutter frente a React Native frente a desarrollo nativo",[174,827,828],{},"Cómo se compara Flutter con otros enfoques de desarrollo móvil",[830,831],"features-table",{":heading":832,":rows":833,":top-left-label":834},"[{\"label\": \"Flutter\", \"hightlightLabel\": \"Recomendado\"}, {\"label\": \"React Native\"}, {\"label\": \"Nativo (Swift\u002FKotlin)\"}]","[{\"label\": \"Rendimiento\",\"cells\": [{\"text\": \"Velocidad nativa\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Casi nativo\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Nativo\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" }]}, {\"label\": \"Velocidad de desarrollo\",\"cells\": [{\"text\": \"Muy rápida\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Rápida\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Lenta (2 bases de código)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"Coherencia de la UI\",\"cells\": [{\"text\": \"Perfecta al píxel\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Depende de la plataforma\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Requiere diseñar dos veces\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Reutilización de código\",\"cells\": [{\"text\": \"90-95%\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"70-85%\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"0% (apps separadas)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"Hot reload\",\"cells\": [{\"text\": \"Menos de un segundo\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Disponible\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Limitado\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Plataformas compatibles\",\"cells\": [{\"text\": \"6 plataformas\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"iOS, Android, web\", \"color\": \"warning\"},{ \"text\": \"Solo una plataforma\", \"color\": \"warning\"}]}, {\"label\": \"Curva de aprendizaje\",\"cells\": [{\"text\": \"Sencilla (Dart)\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Sencilla (JavaScript)\", \"color\": \"success\"},{ \"text\": \"Pronunciada (2 lenguajes)\", \"color\": \"warning\"}]}, {\"label\": \"Coste de desarrollo\",\"cells\": [{\"text\": \"30-40% menor\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"20-30% menor\", \"color\": \"warning\"},{ \"text\": \"El más alto (equipo doble)\", \"color\": \"error\"}]}, {\"label\": \"Mantenimiento\",\"cells\": [{\"text\": \"Una sola base de código\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Correcciones por plataforma\", \"color\": \"warning\"},{ \"text\": \"Doble mantenimiento\", \"color\": \"error\"}]}, {\"label\": \"Respaldado por\",\"cells\": [{\"text\": \"Google\", \"color\": \"success\"},{ \"text\": \"Meta\"},{ \"text\": \"Apple \u002F Google\"}]}]","Característica",[836,837,838],"info-box",{},[174,839,840,843,844,300,848,305],{},[198,841,842],{},"En resumen:"," Flutter ofrece rendimiento nativo con unos costes de desarrollo y mantenimiento notablemente menores. React Native es una opción creíble —sobre todo para un equipo ya muy metido en React—, pero el modelo de renderizado de Flutter, su coherencia de UI y su alcance de plataformas lo convierten en la mejor opción por defecto para la mayoría de los productos. Para el análisis completo de los compromisos, lee ",[209,845,847],{"href":846},"\u002Fblog\u002Fflutter-vs-react-native-2026","Flutter frente a React Native en 2026",[209,849,851],{"href":850},"\u002Fblog\u002Fflutter-vs-native-2026","Flutter frente a nativo en 2026",[238,853,855],{"id":854},"cuándo-flutter-es-la-elección-equivocada","Cuándo Flutter es la elección equivocada",[174,857,858],{},"Una recomendación solo vale algo si puede salir en sentido contrario, así que aquí es donde desaconsejamos nuestro propio servicio.",[192,860,861,867,878],{},[195,862,863,866],{},[198,864,865],{},"El producto es una capacidad de plataforma."," Una experiencia profunda en Apple Watch, un producto centrado en widgets, una app construida alrededor de una API que solo existe en una plataforma: el ahorro multiplataforma no es el punto, y nativo es la respuesta honesta.",[195,868,869,872,873,877],{},[198,870,871],{},"Tu equipo ya es un equipo nativo."," Si tienes ingenieros fuertes en Swift y Kotlin, una base de código consolidada y ninguna presión de costes por la doble entrega, cambiar de framework resuelve un problema que no tienes. La misma honestidad aplica a la inversa en las ",[209,874,876],{"href":875},"\u002Fservices\u002Fflutter-app-development\u002Fflutter-migration","migraciones",": esa página la abrimos diciéndote quién no debería migrar.",[195,879,880,883,884,887,888,892],{},[198,881,882],{},"Quieres lógica compartida pero UI nativa."," ",[209,885,74],{"href":886},"\u002Ftechnologies\u002Fkmp"," comparte la lógica de negocio manteniendo la interfaz nativa de cada plataforma. Es una apuesta distinta —más fidelidad de plataforma, menos reutilización de UI— y para algunos equipos es la correcta. Comparamos las dos opciones con honestidad en ",[209,889,891],{"href":890},"\u002Fblog\u002Fflutter-vs-kotlin-multiplatform-2026","Flutter frente a Kotlin Multiplatform en 2026",", y te lo diremos en la primera llamada y no en la última.",[174,894,895],{},"Todo lo demás —productos de consumo, marketplaces, fintech, salud, herramientas internas, productos que deben existir en ambas tiendas con un solo presupuesto— es el territorio donde Flutter, según nuestra experiencia en siete apps en producción, gana por méritos propios.",[238,897,899],{"id":898},"qué-construimos","Qué construimos",[174,901,902],{},"El pilar es un solo servicio; el trabajo llega en formas distintas. Cada una de estas páginas publica su propio alcance, sus números y sus modos honestos de fallo:",[192,904,905,914,922,930,939,948,957,965,974,982,990,999],{},[195,906,907,913],{},[198,908,909],{},[209,910,912],{"href":911},"\u002Fservices\u002Fflutter-app-development\u002Fmvp","Desarrollo de MVP",": la app más pequeña capaz de responder a tu pregunta de negocio, en ambas tiendas en dos o tres meses, a un precio publicado.",[195,915,916,921],{},[198,917,918],{},[209,919,920],{"href":383},"Apps fintech",": productos de inversión, banca y pagos: datos de mercado en tiempo real, aritmética precisa del dinero, postura de cumplimiento. ExtraETF es la prueba.",[195,923,924,929],{},[198,925,926],{},[209,927,928],{"href":649},"Apps de salud",": productos de telemedicina y salud mental: videoconsultas que sobreviven a redes reales, datos de pacientes tratados con la disciplina de HIPAA y el RGPD.",[195,931,932,938],{},[198,933,934],{},[209,935,937],{"href":936},"\u002Fservices\u002Fflutter-app-development\u002Fe-commerce","Apps de e-commerce",": catálogo, checkout y pagos, de un solo escaparate a una flota de marca; el nivel de la tabla de precios de abajo por fin tiene su propia página.",[195,940,941,947],{},[198,942,943],{},[209,944,946],{"href":945},"\u002Fservices\u002Fflutter-app-development\u002Fmarketplace","Apps de marketplace",": productos de dos lados, ambos roles desde una base de código. OneTwoDo es la prueba.",[195,949,950,956],{},[198,951,952],{},[209,953,955],{"href":954},"\u002Fservices\u002Fflutter-app-development\u002Fsocial","Apps sociales y de comunidad",": chats, canales y feeds en vivo sobre una sola capa de tiempo real. Jepta es la prueba.",[195,958,959,964],{},[198,960,961],{},[209,962,963],{"href":875},"Migración desde React Native y nativo",": pantalla a pantalla, add-to-app, sin tiempo de inactividad, y una página que empieza diciéndote cuándo no hacerlo.",[195,966,967,973],{},[198,968,969],{},[209,970,972],{"href":971},"\u002Fservices\u002Fflutter-app-development\u002Fadd-to-app","Integración add-to-app",": Flutter incrustado en la app nativa que ya tienes: nuevas funciones en ambas plataformas sin comprometerte con una migración.",[195,975,976,981],{},[198,977,978],{},[209,979,980],{"href":548},"Rescate y rendimiento",": auditorías, trabajo de frame rate y estabilización de una app Flutter que falla en producción, acotado a partir de los síntomas, no de una lista de funcionalidades.",[195,983,984,989],{},[198,985,986],{},[209,987,988],{"href":734},"Plataformas de marca blanca",": una base de código, una flota de apps de marca, y las trampas de la directriz 4.2.6 de Apple desactivadas desde el diseño.",[195,991,992,998],{},[198,993,994],{},[209,995,997],{"href":996},"\u002Fservices\u002Fchatbot-to-app","De chatbot a app",": un bot de Telegram o WhatsApp con una base de usuarios real, convertido en app de tienda sin perderlos.",[195,1000,1001,1006],{},[198,1002,1003],{},[209,1004,1005],{"href":532},"Ampliación de equipo",": ingenieros Flutter sénior integrados en tu equipo, en tu repositorio y tus sprints, cuando necesitas capacidad más que entrega.",[174,1008,1009,1010,305],{},"Si la app ya existe y la pregunta es su estado y no su hoja de ruta —el traspaso de una agencia, un prototipo construido con IA, una base de código de la que dudas—, empieza mejor por una ",[209,1011,1013],{"href":1012},"\u002Fservices\u002Fai-code-audit","auditoría de código IA",[238,1015,512],{"id":511},[174,1017,1018,1021,1022,1025,1026],{},[198,1019,1020],{},"Entrega de alcance cerrado."," Somos dueños del resultado de principio a fin: descubrimiento, diseño, arquitectura, construcción y envío a tiendas. Un solo equipo responsable de la fecha de lanzamiento. Cómo se ve eso semana a semana está en nuestro ",[209,1023,1024],{"href":521},"artículo sobre el proceso de desarrollo",", y el calendario fase a fase en ",[209,1027,1029],{"href":1028},"\u002Fblog\u002Fhow-long-to-build-a-flutter-app","¿Cuánto se tarda en construir una app Flutter?",[174,1031,1032,1034,1035,1037],{},[198,1033,528],{}," Nuestros ingenieros se suman a los tuyos, bajo tu gestión. Mejor cuando ya tienes liderazgo de ingeniería y necesitas profundidad en Flutter; nuestra ",[209,1036,538],{"href":537}," es honesta sobre cuándo esto supera a un encargo de agencia y cuándo no.",[174,1039,1040,1041,1044],{},"Sea cual sea la vía que encaje, enviamos un presupuesto detallado en un plazo de dos días laborables desde que entendemos los requisitos; y la ingeniería que nos negamos a recortar, sea cual sea el presupuesto, es la misma en todas partes: ",[181,1042],{"slug":1043},"ci-cd"," desde la primera semana, tests donde equivocarse cuesta dinero y fronteras de módulo que permiten que la v2 crezca sin una reescritura.",[238,1046,1048],{"id":1047},"precios-del-desarrollo-de-apps-con-flutter","Precios del desarrollo de apps con Flutter",[174,1050,1051],{},"Precios transparentes para tu proyecto de app en Flutter",[1053,1054],"pricing-table",{":items":1055},"[{\"title\": \"MVP\", \"subtitle\": \"Valida tu idea rápido\", \"price\": \"flutter-app-development\u002Fmvp\", \"terms\": \"2-3 meses\", \"lines\": [\"Apps para iOS y Android\", \"5-8 funcionalidades principales\", \"Diseño UI\u002FUX básico\", \"Integración con API REST\", \"Autenticación de usuarios\", \"Analítica básica\", \"Publicación en las tiendas\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Empezar\"}},{\"title\": \"App de negocio\", \"subtitle\": \"Solución con todas las funcionalidades\", \"price\": \"flutter-app-development\u002Fbusiness\", \"terms\": \"3-5 meses\", \"lines\": [\"iOS, Android y web\", \"15-20 funcionalidades\", \"Diseño UI\u002FUX a medida\", \"Integraciones de API avanzadas\", \"Notificaciones push\", \"Funcionamiento sin conexión\", \"Analítica y monitorización\", \"Panel de administración\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Empezar\"}},{\"highlight\": \"Popular\",\"title\": \"E-commerce \u002F Retail\", \"subtitle\": \"Vende online con estilo\", \"price\": \"flutter-app-development\u002Fecommerce\", \"terms\": \"4-6 meses\", \"lines\": [\"Todas las plataformas + escritorio\", \"Catálogo de productos y búsqueda\", \"Carrito y proceso de compra\", \"Integración de pasarela de pago\", \"Seguimiento de pedidos\", \"Reseñas y valoraciones de clientes\", \"Gestión de inventario\", \"Paneles de administración y de vendedor\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Empezar\"}},{\"title\": \"Enterprise \u002F IA\", \"subtitle\": \"Complejo y escalable\", \"price\": \"flutter-app-development\u002Fenterprise\", \"terms\": \"6+ meses\", \"lines\": [\"Todas las plataformas\", \"Integración de IA\u002FML\", \"Flujos de trabajo complejos\", \"Seguridad de nivel empresarial\", \"Infraestructura de backend a medida\", \"Analítica avanzada\", \"Arquitectura multiinquilino\", \"Soporte dedicado\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Empezar\"}}]",[836,1057,1060],{":leading-icon":1058,":title":1059},"lucide:dollar-sign","Precios a medida disponibles",[174,1061,1062,1063,1065,1066,305],{},"Cada proyecto es único. Estos precios son rangos aproximados basados en requisitos típicos. Te daremos un presupuesto detallado tras entender tus necesidades concretas, tus plazos y la complejidad. Contáctanos para una consulta gratuita y una estimación precisa. Para saber qué determina realmente el coste de una app, mira ",[209,1064,591],{"href":590}," y nuestros ",[209,1067,1069],{"href":1068},"\u002Fblog\u002Fmobile-cost-reduction-case-studies","casos de reducción de costes en móvil",[238,1071,577],{"id":576},[174,1073,1074],{},"Todo lo que necesitas saber sobre nuestros servicios de desarrollo con Flutter",[582,1076],{":items":1077},"[{\"title\":\"¿Qué es Flutter y por qué debería usarlo para mi app?\",\"text\":\"Flutter es un kit de herramientas de UI de código abierto de Google para construir aplicaciones compiladas de forma nativa para móvil, web y escritorio desde una sola base de código. El argumento de negocio es estructural: una base de código significa un equipo, un tren de releases y cada funcionalidad construida una sola vez; por eso una construcción en Flutter cuesta típicamente entre un 30 y un 40 por ciento menos que dos apps nativas, con una brecha que se ensancha a lo largo de la vida del producto a medida que el mantenimiento se acumula. El argumento de ingeniería es que Flutter compila a código nativo y dibuja su propia UI, así que evita tanto la penalización de rendimiento de los frameworks híbridos como la deriva entre plataformas de mantener dos implementaciones.\"},{\"title\":\"¿Cuánto cuesta desarrollar una app con Flutter?\",\"text\":\"Nuestros niveles publicados van de 15.000 a 30.000 dólares para un MVP, de 30.000 a 60.000 para una app de negocio completa, de 50.000 a 90.000 para un producto de e-commerce y desde 90.000 para trabajo enterprise; los rangos exactos están en la sección de precios de esta página y no detrás de una llamada comercial. Lo que mueve la cifra es primero el alcance y después las integraciones. El desglose completo de qué determina el número, incluidos los costes que los equipos olvidan presupuestar, está en nuestra guía sobre el coste de desarrollar una app Flutter en 2026.\"},{\"title\":\"¿Cuánto se tarda en construir una app Flutter?\",\"text\":\"Un MVP lleva de dos a tres meses desde el arranque hasta una ficha publicada en las tiendas. Una app de negocio completa lleva de tres a cinco meses, y una construcción de e-commerce o enterprise, de cuatro a seis o más. El calendario rara vez se lo come el código: los flujos de pago que aparecen a mitad de proyecto, las rondas de diseño, el acceso a APIs de terceros y el ciclo de revisión de las tiendas son donde los plazos se mueven de verdad. Nuestro desglose fase a fase está en ¿Cuánto se tarda en construir una app Flutter?\"},{\"title\":\"¿Pueden las apps de Flutter rendir tan bien como las nativas?\",\"text\":\"Sí. Flutter compila de forma anticipada a código ARM nativo y renderiza a través de su propio motor gráfico, así que las animaciones mantienen los 60 fotogramas por segundo —120 en las pantallas compatibles— sin la sobrecarga de puente que arrastran los frameworks híbridos. Apps en producción como Google Ads, Alibaba y la app de vehículos de BMW funcionan sobre Flutter, y nuestra propia ExtraETF mantiene su tasa de fotogramas bajo datos de mercado en streaming. La advertencia honesta es que el rendimiento es una propiedad de la ingeniería, no del framework: las reconstrucciones de widgets sin acotar perderán fotogramas en Flutter exactamente igual que los observers con fugas los perderán en Swift.\"},{\"title\":\"¿En qué se diferencia Flutter de React Native?\",\"text\":\"Flutter compila a código nativo y dibuja su propia UI mediante su motor de renderizado; React Native tiende puentes hacia los componentes nativos de cada plataforma. En la práctica eso da a Flutter más margen de rendimiento, una UI idéntica al píxel entre plataformas, entre un 90 y un 95 por ciento de reutilización de código frente al 70-85 de React Native, y seis plataformas compatibles incluido el escritorio. React Native sigue siendo una elección creíble para equipos ya muy metidos en React. Nuestra comparación completa, incluidos los casos en los que gana React Native, está en Flutter frente a React Native en 2026.\"},{\"title\":\"¿Es Flutter una buena elección para apps web y de escritorio?\",\"text\":\"Con matices. Flutter web es más fuerte en experiencias tipo app —cuadros de mando, portales, herramientas detrás de un login— donde su renderizado sobre lienzo es una ventaja y no un coste; para sitios de contenido que viven del SEO y del primer pintado instantáneo, una pila web convencional es la mejor herramienta, y lo decimos aunque vendamos ambas. El soporte de escritorio para Windows, macOS y Linux está listo para producción y brilla en herramientas internas y apps de acompañamiento que comparten una base de código móvil.\"},{\"title\":\"¿Podéis haceros cargo de una app Flutter existente o rescatarla?\",\"text\":\"Sí: parte de nuestro trabajo mejor documentado empezó así, incluido un producto de telesalud en producción que estabilizamos mientras seguía publicado. Un traspaso empieza con una auditoría de la base de código: arquitectura, gestión de estado, cobertura de pruebas y los síntomas concretos que motivaron la llamada. Recibes un informe escrito de hallazgos y un plan secuenciado antes de cualquier conversación sobre reconstrucción, porque a veces la respuesta son dos semanas de correcciones y no una reescritura; y cuando lo es, lo decimos.\"},{\"title\":\"¿Construís también el backend además de la app?\",\"text\":\"Sí. ExtraETF funciona sobre un backend en Go que construimos para el fan-out de datos de mercado en tiempo real; la plataforma de Formtastic incluye backend y web junto a las apps; y para los MVP recurrimos deliberadamente a backends gestionados como Firebase cuando escribir uno desde cero sería gastar tu presupuesto en fontanería. La elección entre a medida y gestionado es una decisión de ingeniería que tomamos abiertamente durante la definición del alcance, porque mueve tanto el precio como el calendario.\"},{\"title\":\"¿Seguirá siendo Flutter una apuesta segura dentro de cinco años?\",\"text\":\"Tan segura como pueden ser las apuestas en esta industria. Flutter se desarrolla en abierto por Google, publica versiones estables con regularidad, impulsa apps críticas para los ingresos del propio Google como Google Ads y tiene una de las mayores comunidades y ecosistemas de paquetes multiplataforma. Ninguna elección de framework está libre de riesgo, y por eso el seguro más duradero es la calidad del código: una app Flutter bien estructurada, con fronteras de módulo claras, mantiene su lógica de negocio portable haga lo que haga la industria después.\"},{\"title\":\"¿Para qué industrias construís apps Flutter?\",\"text\":\"Nuestro trabajo vertical más profundo está en fintech —productos de inversión, banca y pagos— y en salud, incluida la telemedicina, cada uno con su propia página de servicio dedicada que cubre los detalles de cumplimiento y de ingeniería. Más allá de eso hemos publicado marketplaces, productos sociales y de comunidad, plataformas de fidelización y apps de consumo impulsadas por IA. Lo que se transfiere entre todas ellas es la disciplina de producción: manejo de datos en tiempo real, comportamiento offline, accesibilidad y los requisitos de revisión de las tiendas.\"},{\"title\":\"¿Cómo empezamos un proyecto con vosotros?\",\"text\":\"Cuéntanos qué estás construyendo a través del formulario de contacto, incluido lo que ya exista hoy: una especificación, un prototipo, una app ya en las tiendas. Volvemos con preguntas, no con una presentación comercial, y en cuanto entendemos los requisitos recibes un presupuesto detallado en un plazo de dos días laborables: qué entra, qué queda explícitamente fuera, cuánto cuesta y cuánto tarda. Si Flutter es la herramienta equivocada para tu producto, esa conversación es donde te lo decimos.\"}]",[174,1079,1080,1081,295,1084,300,1087,1091,1092,300,1094,1096],{},"Empieza por los números: ",[209,1082,1083],{"href":590},"cuánto cuesta una app Flutter en 2026",[209,1085,1086],{"href":1028},"cuánto se tarda",[209,1088,1090],{"href":1089},"\u002Fblog\u002Fflutter-app-maintenance-cost","cuánto cuesta el mantenimiento tras el lanzamiento",". O lee el trabajo: los casos de estudio de ",[209,1093,703],{"href":702},[209,1095,718],{"href":717}," son lo más parecido a vernos en mitad de un proyecto.",{"title":598,"searchDepth":599,"depth":599,"links":1098},[1099,1104,1107,1108,1109,1110,1111,1112],{"id":689,"depth":599,"text":690,"children":1100},[1101,1102,1103],{"id":696,"depth":602,"text":697},{"id":711,"depth":602,"text":712},{"id":722,"depth":602,"text":723},{"id":770,"depth":599,"text":771,"children":1105},[1106],{"id":777,"depth":602,"text":778},{"id":824,"depth":599,"text":825},{"id":854,"depth":599,"text":855},{"id":898,"depth":599,"text":899},{"id":511,"depth":599,"text":512},{"id":1047,"depth":599,"text":1048},{"id":576,"depth":599,"text":577},"Una base de código, ambas tiendas y un coste de construcción un 30-40 % inferior al de dos apps nativas, de un equipo que ha llevado Flutter a producción siete veces y publica sus precios",{"heading":1115,"text":1116,"buttons":1117},"¿Listo para construir tu app en Flutter?","Cuéntanos qué estás construyendo y para quién es. Te diremos qué hace falta, cuánto cuesta y si Flutter es la decisión correcta, antes de que te comprometas a nada.",[1118,1121],{"to":1119,"label":1120,"leadingIcon":628,"color":629,"variant":630},"\u002Fcontact","Empieza tu proyecto",{"to":672,"label":638,"color":633,"variant":634},[1123,1125],{"to":1119,"label":1124,"leadingIcon":628,"color":633,"variant":634},"Consulta gratuita",{"to":1126,"label":1127,"color":629,"variant":630},"#precios-del-desarrollo-de-apps-con-flutter","Ver precios",{"url":1129,"alt":657,"text":1130},"\u002Fservices\u002Fflutter.webp","Construye una vez, despliega en todas partes",{},"Desarrollo de apps con Flutter: apps rápidas y cuidadas para iOS, Android y web desde una base de código, un 30-40% menos que nativo. Consulta gratuita.","Servicios de desarrollo de apps con Flutter","Un solo código para iOS, Android y web, y un 30-40% menos que nativo. Desarrollo Flutter de una agencia que solo se dedica a esto.",null,{"title":657,"description":1113},"services\u002Fflutter-app-development","2026-09-04","9TQr_K71mGHF1ZL1kNbsF1h92EHJVmhdSAZCZMFNfGc",[],[1142,1157,1174,1188,1201,1213,1226,1241,1254,1268,1281,1296,1308,1321,1334,1346,1363,1376,1389,1400,1414,1428,1440,1451,1462,1474,1487,1497,1506,1519,1531,1545,1551,1563,1574,1585,1597,1612,1625,1637,1649,1660,1674,1688,1700,1711,1723,1734,1747,1759,1770,1783,1792],{"slug":1143,"term":1144,"definition":1145,"category":1146,"aliases":1147,"links":1149,"related":1153,"readMore":-1,"target":1155,"hasArticle":1156},"aosp","AOSP","El Android Open Source Project: Android sin la capa de Google encima, que cualquiera puede forkear. Los terminales de punto de venta, los kioscos y los sistemas de a bordo funcionan sobre forks suyos, y trabajar a ese nivel expone partes del SO que un desarrollador de apps nunca ve.","platform",[1148],"Android Open Source Project",[1150],{"kind":1151,"url":1152},"website","https:\u002F\u002Fsource.android.com\u002F",[1154],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":1158,"term":1159,"definition":1160,"category":1161,"aliases":1162,"links":1167,"related":1171,"readMore":-1,"target":1173,"hasArticle":1156},"object-storage","Almacenamiento de objetos","Almacenamiento que guarda un archivo entero bajo una clave en vez de en un árbol de directorios: Amazon S3 y los muchos servicios que hablan su API. Barato, casi ilimitado y el hogar habitual de eventos en bruto, backups y multimedia: se escriben una vez, se leen poco y se guardan para siempre.","architecture",[1163,1164,1165,1166],"S3","almacenamiento compatible con S3","object storage","blob storage",[1168],{"kind":1169,"url":1170},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[1172],"bigquery","\u002Fglossary#object-storage",{"slug":1175,"term":1005,"definition":1176,"category":1177,"aliases":1178,"links":1183,"related":1184,"readMore":-1,"target":1187,"hasArticle":1156},"staff-augmentation","Un modelo de contratación en el que ingenieros de un socio externo se suman a tu equipo y trabajan bajo tu gestión —en tu repositorio, tus sprints, tu proceso— en vez de entregar un proyecto propio. Compras capacidad; el código y el contexto se quedan contigo.","business",[1179,1180,1181,1182],"staff augmentation","team augmentation","desarrolladores dedicados","outstaffing",[],[1185,1186],"total-cost-of-ownership","time-to-market","\u002Fglossary#staff-augmentation",{"slug":1189,"term":1190,"definition":1191,"category":1146,"aliases":1192,"links":1193,"related":1197,"readMore":-1,"target":1200,"hasArticle":1156},"app-clips","App Clips","Una función de Apple que ejecuta una porción pequeña de una app de iOS —menos de 15 MB— sin instalarla entera. Se invoca desde un código QR, una etiqueta NFC o un enlace, para cuando lo primero que hace un usuario no debería exigir pasar por la tienda.",[],[1194],{"kind":1195,"url":1196},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[1198,1199],"deep-linking","install-referrer","\u002Fglossary#app-clips",{"slug":1172,"term":1202,"definition":1203,"category":1146,"aliases":1204,"links":1205,"related":1210,"readMore":-1,"target":1212,"hasArticle":1156},"BigQuery","El almacén analítico de Google Cloud. Le lanzas SQL a miles de millones de filas y las recorre en segundos, sobre un almacenamiento separado de las máquinas que consultan, que es lo que mantiene los informes y la exploración fuera de la base de datos que sirve tráfico real.",[],[1206,1208],{"kind":1151,"url":1207},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":1169,"url":1209},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[1158,1211],"elasticsearch","\u002Fglossary#bigquery",{"slug":1043,"term":1214,"definition":1215,"category":1216,"aliases":1217,"links":1221,"related":1224,"readMore":-1,"target":1225,"hasArticle":1156},"CI\u002FCD","Automatización que compila, testea y publica cada cambio sin que nadie ejecute comandos a mano. En móvil es lo que convierte una release en pulsar un botón en lugar de en una tarde esperando a que alguien esté disponible.","practice",[1218,1219,1220],"CI","integración continua","entrega continua",[1222],{"kind":1169,"url":1223},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":1227,"term":1228,"definition":1229,"category":1161,"aliases":1230,"links":1234,"related":1237,"readMore":-1,"target":1240,"hasArticle":1156},"headless-cms","CMS headless","Un sistema de contenidos con editor y API pero sin frontend propio. Los editores publican en un solo sitio y el sitio web o la app renderizan ese contenido por su cuenta, así que la capa de presentación es tuya y no del proveedor del CMS.",[1231,1232,1233],"headless CMS","gestor de contenidos headless","API de contenidos",[1235],{"kind":1169,"url":1236},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[1238,1239],"server-side-rendering","rest","\u002Fglossary#headless-cms",{"slug":1242,"term":1243,"definition":1244,"category":1161,"aliases":1245,"links":1248,"related":1251,"readMore":-1,"target":1253,"hasArticle":1156},"crud","CRUD","Create, read, update, delete: las cuatro operaciones detrás de casi todo formulario y pantalla de administración. Nombre corto para la mitad rutinaria de una app, la que gestiona datos, frente a la que lleva la lógica de dominio.",[1246,1247],"Create, Read, Update, Delete","crear, leer, actualizar, borrar",[1249],{"kind":1169,"url":1250},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[1239,1252],"graphql","\u002Fglossary#crud",{"slug":1255,"term":1256,"definition":1257,"category":1161,"aliases":1258,"links":1262,"related":1265,"readMore":-1,"target":1267,"hasArticle":1156},"end-to-end-encryption","Cifrado de extremo a extremo","Cifrado aplicado en el dispositivo que envía y deshecho solo en el que recibe, de modo que el servicio que transporta el mensaje no puede leerlo: ni por orden judicial ni tras una brecha. Protege el contenido y nunca los metadatos.",[1259,1260,1261],"E2EE","cifrado extremo a extremo","end-to-end encryption",[1263],{"kind":1169,"url":1264},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[354,1266],"jwt","\u002Fglossary#end-to-end-encryption",{"slug":1269,"term":1270,"definition":1271,"category":1161,"aliases":1272,"links":1276,"related":1279,"readMore":-1,"target":1280,"hasArticle":1156},"floating-point","Coma flotante","El formato binario IEEE 754 detrás de double y float. No puede representar 0,1 de forma exacta, así que 0,1 + 0,2 da 0,30000000000000004: invisible en gráficos y fatal en dinero, que va en unidades menores enteras o en un tipo decimal.",[1273,1274,1275],"IEEE 754","double","aritmética de coma flotante",[1277],{"kind":1169,"url":1278},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point",{"slug":1282,"term":1283,"definition":1284,"category":1177,"aliases":1285,"links":1290,"related":1293,"readMore":-1,"target":1295,"hasArticle":1156},"in-app-purchase","Compra dentro de la app","Vender bienes digitales o una suscripción a través de la facturación de Apple o Google, obligatoria para contenido digital en ambas tiendas y sujeta a comisión. Lo difícil nunca es la compra: es restaurarla en un dispositivo nuevo y mantener honesto el estado de los derechos.",[1286,1287,1288,1289],"IAP","in-app purchase","compras integradas","suscripción in-app",[1291],{"kind":1195,"url":1292},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[1294],"product-market-fit","\u002Fglossary#in-app-purchase",{"slug":1185,"term":1297,"definition":1298,"category":1177,"aliases":1299,"links":1303,"related":1306,"readMore":-1,"target":1307,"hasArticle":1156},"Coste total de propiedad","Lo que cuesta un producto a lo largo de toda su vida, no solo construirlo: mantenimiento, actualizaciones, migraciones anuales de SO y de tiendas, y el segundo equipo que contratas para mantener dos bases de código alineadas. Suele superar al presupuesto de desarrollo, y casi nunca va dentro.",[1300,1301,1302],"TCO","total cost of ownership","coste de propiedad",[1304],{"kind":1169,"url":1305},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[1186],"\u002Fglossary#total-cost-of-ownership",{"slug":1309,"term":1310,"definition":1311,"category":1312,"aliases":1313,"links":1316,"related":1319,"readMore":-1,"target":1320,"hasArticle":1156},"post-quantum-cryptography","Criptografía poscuántica","Algoritmos de cifrado pensados para resistir a un futuro ordenador cuántico, ya estandarizados por el NIST. La migración urge antes que el hardware: el tráfico capturado hoy puede descifrarse cuando esa máquina exista.","protocol",[1314,1315],"PQC","cifrado poscuántico",[1317],{"kind":1169,"url":1318},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[354,1255],"\u002Fglossary#post-quantum-cryptography",{"slug":1198,"term":1322,"definition":1323,"category":1146,"aliases":1324,"links":1329,"related":1332,"readMore":1333,"target":1333,"hasArticle":646},"Deep linking","Un enlace que abre una pantalla concreta dentro de una app instalada en vez de su pantalla de inicio o una página web. El deep linking diferido sobrevive a la instalación, así que un toque que pasa por la tienda acaba igualmente en la pantalla correcta.",[1325,1326,1327,1328],"deep linking diferido","enlaces profundos","universal links","Android App Links",[1330],{"kind":1169,"url":1331},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[1189,1199],"\u002Fglossary\u002Fdeep-linking",{"slug":1335,"term":1336,"definition":1337,"category":1216,"aliases":1338,"links":1342,"related":1343,"readMore":-1,"target":1345,"hasArticle":1156},"staged-rollout","Despliegue escalonado","Publicar una build primero a un porcentaje pequeño de usuarios y ampliarlo solo cuando la tasa sin fallos aguanta. Una build mala detectada al diez por ciento es una tarde mala; esa misma build al cien por cien es una semana mala.",[1339,1340,1341],"staged rollout","lanzamiento por fases","release canaria",[],[1344,1043],"feature-flags","\u002Fglossary#staged-rollout",{"slug":1347,"term":1348,"definition":1349,"category":1216,"aliases":1350,"links":1355,"related":1360,"readMore":-1,"target":1362,"hasArticle":1156},"dev-container","Dev Container","Un entorno de desarrollo descrito una sola vez en devcontainer.json —el SO, las herramientas y las versiones de runtime que un proyecto necesita— y abierto de forma idéntica en un contenedor por el editor de cada colaborador, en vez de una guía que cada quien interpreta a su manera.",[1351,1352,1353,1354],"devcontainer.json","Dev Containers","VS Code Dev Containers","contenedor de desarrollo",[1356,1358],{"kind":1151,"url":1357},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":1195,"url":1359},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[1361],"container-registry","\u002Fglossary#dev-container",{"slug":1211,"term":1364,"definition":1365,"category":1146,"aliases":1366,"links":1369,"related":1374,"readMore":-1,"target":1375,"hasArticle":1156},"Elasticsearch","Un motor de búsqueda y analítica que indexa registros para poder filtrarlos y buscarlos de forma interactiva en vez de recorrerlos. Lo que usas cuando la pregunta es «enséñame estas sesiones concretas, filtradas de seis maneras» y no «suma esta columna».",[1367,1368],"Elastic","ELK",[1370,1372],{"kind":1151,"url":1371},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":1169,"url":1373},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[1172],"\u002Fglossary#elasticsearch",{"slug":1294,"term":1377,"definition":1378,"category":1177,"aliases":1379,"links":1383,"related":1386,"readMore":-1,"target":1388,"hasArticle":1156},"Encaje producto-mercado","El punto en el que un producto ha encontrado de forma demostrable a gente que lo quiere: lo usa, vuelve y paga. Antes de eso la ingeniería responde a una pregunta; después, responde a la demanda.",[1380,1381,1382],"PMF","product-market fit","product\u002Fmarket fit",[1384],{"kind":1169,"url":1385},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[1387,1186],"mvp","\u002Fglossary#product-market-fit",{"slug":1390,"term":1391,"definition":1392,"category":1161,"aliases":1393,"links":1396,"related":1397,"readMore":-1,"target":1399,"hasArticle":1156},"fan-out","Fan-out","Leer una fuente una sola vez y entregar cada actualización a todos los clientes suscritos. La versión ingenua escribe a los suscriptores en un bucle y se atasca en cuanto un socket va lento; una real usa un búfer por cliente y descarta a quien no siga el ritmo.",[1394,1395],"fanout","difusión",[],[259,1398,288],"pub-sub","\u002Fglossary#fan-out",{"slug":1344,"term":1401,"definition":1402,"category":1216,"aliases":1403,"links":1407,"related":1410,"readMore":-1,"target":1413,"hasArticle":1156},"Feature flags","Interruptores que activan o desactivan funcionalidad desde la configuración y no desde una release. Permiten que un mismo binario se comporte distinto por marca, mercado o usuario, y apagar una función arriesgada sin pasar una build nueva por revisión.",[1404,1405,1406],"feature flag","feature toggle","banderas de funcionalidad",[1408],{"kind":1169,"url":1409},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[1335,1411,1412],"white-label","multi-tenancy","\u002Fglossary#feature-flags",{"slug":1415,"term":1416,"definition":1417,"category":1161,"aliases":1418,"links":1422,"related":1425,"readMore":-1,"target":1427,"hasArticle":1156},"state-management","Gestión de estado","Cómo decide una app dónde vive un valor, quién puede cambiarlo y qué partes de la pantalla se redibujan cuando lo hace. En Flutter, elegir entre Riverpod, BLoC y Provider es de las primeras decisiones arquitectónicas y de las más difíciles de revisar.",[1419,1420,1421],"state management","BLoC","Riverpod",[1423],{"kind":1195,"url":1424},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[1426],"golden-test","\u002Fglossary#state-management",{"slug":1426,"term":1429,"definition":1430,"category":1216,"aliases":1431,"links":1435,"related":1438,"readMore":-1,"target":1439,"hasArticle":1156},"Golden test","Un test que renderiza un widget y compara el resultado píxel a píxel con una imagen de referencia guardada. En Flutter es la forma más barata de saber si un rediseño rompió el estado vacío a 320 pt, en modo oscuro y con el texto al 200 %.",[1432,1433,1434],"golden tests","test de captura","snapshot test",[1436],{"kind":1195,"url":1437},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[1043],"\u002Fglossary#golden-test",{"slug":1252,"term":1441,"definition":1442,"category":1161,"aliases":1443,"links":1444,"related":1449,"readMore":-1,"target":1450,"hasArticle":1156},"GraphQL","Un lenguaje de consulta para APIs donde el cliente nombra exactamente los campos que quiere y recibe una única respuesta con esa forma. Elimina el exceso de datos al que derivan los endpoints REST y añade un fallo propio: una consulta sin límites que recorre todo el modelo.",[],[1445,1447],{"kind":1151,"url":1446},"https:\u002F\u002Fgraphql.org\u002F",{"kind":1169,"url":1448},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[1239],"\u002Fglossary#graphql",{"slug":339,"term":1452,"definition":1453,"category":1216,"aliases":1454,"links":1456,"related":1459,"readMore":-1,"target":1461,"hasArticle":1156},"HIPAA","La ley estadounidense que regula la información sanitaria protegida: cómo puede almacenarse, transmitirse, registrarse y divulgarse. Como PCI-DSS, es una restricción arquitectónica que se elige al principio, no un documento de políticas que se añade antes del lanzamiento.",[1455],"Health Insurance Portability and Accountability Act",[1457],{"kind":1169,"url":1458},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[1460,372,343],"pci-dss","\u002Fglossary#hipaa",{"slug":1154,"term":1463,"definition":1464,"category":1146,"aliases":1465,"links":1469,"related":1472,"readMore":-1,"target":1473,"hasArticle":1156},"Host Card Emulation","Permitir que un móvil Android actúe por software como una tarjeta contactless sobre NFC, sin elemento seguro por hardware. Es así como paga una app de wallet en un terminal: el teléfono habla el mismo protocolo EMV contactless que habría hablado la tarjeta de plástico.",[1466,1467,1468],"HCE","EMV Contactless","pagos contactless",[1470],{"kind":1195,"url":1471},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[1460,1143],"\u002Fglossary#host-card-emulation",{"slug":1475,"term":1476,"definition":1477,"category":1161,"aliases":1478,"links":1482,"related":1485,"readMore":-1,"target":1486,"hasArticle":1156},"multi-arch-image","Imagen multiarquitectura","Una única etiqueta de imagen que resuelve a binarios distintos según la arquitectura de CPU —linux\u002Famd64 y linux\u002Farm64 son el par habitual—, de modo que el mismo docker pull funciona sin cambios tanto en servidores Intel\u002FAMD como en portátiles con Apple Silicon.",[1479,1480,1481],"build multiarquitectura","multi-arch build","linux\u002Famd64 + linux\u002Farm64",[1483],{"kind":1195,"url":1484},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[1361],"\u002Fglossary#multi-arch-image",{"slug":1488,"term":1489,"definition":1490,"category":1146,"aliases":1491,"links":1492,"related":1495,"readMore":-1,"target":1496,"hasArticle":1156},"impeller","Impeller","El motor de renderizado que usa Flutter hoy, por defecto en iOS desde 2023 y en Android desde 2024. Compila sus shaders por adelantado en lugar de durante la primera animación, lo que eliminó el jank de shaders, el problema más visible de Flutter en producción.",[],[1493],{"kind":1195,"url":1494},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[798],"\u002Fglossary#impeller",{"slug":1199,"term":1498,"definition":1499,"category":1146,"aliases":1500,"links":1501,"related":1504,"readMore":-1,"target":1505,"hasArticle":1156},"Install Referrer","Una API de Google Play que entrega a una app Android recién instalada los parámetros de campaña del enlace que llevó a la instalación. La mitad Android del deep linking diferido y la forma fiable de atribuir de dónde viene un usuario.",[],[1502],{"kind":1195,"url":1503},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[1198,1189],"\u002Fglossary#install-referrer",{"slug":1507,"term":1508,"definition":1509,"category":1216,"aliases":1510,"links":1513,"related":1516,"readMore":-1,"target":1518,"hasArticle":1156},"prompt-injection","Inyección de prompts","Un ataque en el que el texto que aporta un usuario lo lee un modelo de lenguaje como instrucciones y no como datos, desviándolo de sus propias reglas. El hermano de la inyección SQL en la era de los LLM, y aparece donde se concatena entrada de usuario en un prompt.",[1511,1512],"prompt injection","ataque de inyección",[1514],{"kind":1169,"url":1515},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[1517],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":1266,"term":1520,"definition":1521,"category":1312,"aliases":1522,"links":1524,"related":1529,"readMore":-1,"target":1530,"hasArticle":1156},"JWT","Un token firmado que lleva sus propios claims, de modo que un servidor puede saber a quién pertenece una petición sin consultar una sesión. Estándar para la autenticación móvil. La firma prueba que no se alteró; no oculta lo que hay dentro.",[1523],"JSON Web Token",[1525,1527],{"kind":1151,"url":1526},"https:\u002F\u002Fjwt.io\u002F",{"kind":1169,"url":1528},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[1460],"\u002Fglossary#jwt",{"slug":1532,"term":1533,"definition":1534,"category":1216,"aliases":1535,"links":1540,"related":1543,"readMore":-1,"target":1544,"hasArticle":1156},"kyc","KYC","Know Your Customer: las verificaciones de identidad que hace un producto financiero regulado antes de dejar mover dinero —captura de documentos, prueba de vida, listas de sanciones y control antiblanqueo—. Condiciona el onboarding más que cualquier decisión de diseño.",[1536,1537,1538,1539],"Know Your Customer","AML","KYC\u002FAML","conocimiento del cliente",[1541],{"kind":1169,"url":1542},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[1460,372],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":1546,"category":1146,"aliases":1547,"links":1549,"related":1550,"readMore":886,"target":886,"hasArticle":1156},"Compartir lógica de negocio escrita en Kotlin entre Android, iOS y el servidor mientras cada plataforma conserva su UI nativa. La alternativa a Flutter cuando la interfaz tiene que ser nativa pero las reglas que hay detrás no.",[1548],"KMP",[],[],{"slug":1517,"term":1552,"definition":1553,"category":1216,"aliases":1554,"links":1558,"related":1561,"readMore":-1,"target":1562,"hasArticle":1156},"Limitación de tasa","Un tope de cuántas peticiones puede hacer un mismo cliente en una ventana de tiempo. Es lo que impide que un usuario entusiasta, un scraper o un bot se gaste en una tarde un mes de presupuesto de API, y tiene que vivir en tu lado de la integración.",[1555,1556,1557],"rate limiting","rate limit","throttling",[1559],{"kind":1169,"url":1560},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[1507],"\u002Fglossary#rate-limiting",{"slug":1387,"term":1564,"definition":1565,"category":1177,"aliases":1566,"links":1569,"related":1572,"readMore":-1,"target":1573,"hasArticle":1156},"MVP","La versión más pequeña de un producto que puede ponerse delante de usuarios reales y aun así responder la pregunta por la que lo construiste. Una decisión sobre alcance, no sobre calidad: un MVP también tiene que funcionar.",[1567,1568],"producto mínimo viable","minimum viable product",[1570],{"kind":1169,"url":1571},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[1411],"\u002Fglossary#mvp",{"slug":1411,"term":1575,"definition":1576,"category":1177,"aliases":1577,"links":1580,"related":1583,"readMore":1584,"target":1584,"hasArticle":646},"Marca blanca","Un mismo producto publicado bajo muchas marcas. Una plataforma móvil de marca blanca construye para cada cliente una app lista para la tienda con su nombre, su diseño y su contenido desde una única base de código compartida, en vez de forkear el proyecto por cliente.",[1411,1578,1579],"white label","app multiinquilino",[1581],{"kind":1169,"url":1582},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",[1387],"\u002Fglossary\u002Fwhite-label",{"slug":1412,"term":1586,"definition":1587,"category":1161,"aliases":1588,"links":1592,"related":1595,"readMore":-1,"target":1596,"hasArticle":1156},"Multi-tenancy","Un solo despliegue que sirve a muchos clientes, cada uno viendo solo sus datos, su configuración y sus funciones activas porque el contexto de tenant se resuelve en cada petición. Es lo que hace que una flota de apps de marca sea un producto y no muchos forks.",[1589,1590,1591],"multi-tenant","multiinquilino","tenant",[1593],{"kind":1169,"url":1594},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[1411,1344],"\u002Fglossary#multi-tenancy",{"slug":1598,"term":1599,"definition":1600,"category":1312,"aliases":1601,"links":1605,"related":1610,"readMore":-1,"target":1611,"hasArticle":1156},"oauth","OAuth","El estándar detrás de Iniciar sesión con Apple, con Google y demás: el usuario autoriza tu app en un proveedor en el que ya confía y tu app recibe un token en lugar de su contraseña. Nadie inventa una credencial nueva y tú nunca almacenas ninguna.",[1602,1603,1604],"OAuth 2.0","login social","Iniciar sesión con Apple",[1606,1608],{"kind":1151,"url":1607},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":1169,"url":1609},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[1266],"\u002Fglossary#oauth",{"slug":1460,"term":1613,"definition":1614,"category":1216,"aliases":1615,"links":1618,"related":1623,"readMore":-1,"target":1624,"hasArticle":1156},"PCI-DSS","El estándar de seguridad del sector de tarjetas que obliga a quien almacena, procesa o transmite datos de tarjeta. La mayoría de las apps se mantienen fuera de su alcance a propósito, delegando la introducción de la tarjeta en un proveedor de pagos certificado.",[1616,1617],"PCI DSS","Payment Card Industry Data Security Standard",[1619,1621],{"kind":1151,"url":1620},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":1169,"url":1622},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[1266],"\u002Fglossary#pci-dss",{"slug":183,"term":1626,"definition":1627,"category":1146,"aliases":1628,"links":1632,"related":1635,"readMore":-1,"target":1636,"hasArticle":1156},"Platform channels","El puente que usa una app Flutter para llamar a código nativo de iOS y Android: Keychain y Keystore, biometría, hojas de pago, cualquier SDK sin paquete de Dart. Trabajo rutinario pero real, y lo primero donde encalla quien nunca salió de Dart.",[1629,1630,1631],"platform channel","method channel","canales de plataforma",[1633],{"kind":1195,"url":1634},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":1398,"term":1638,"definition":1639,"category":1161,"aliases":1640,"links":1644,"related":1647,"readMore":-1,"target":1648,"hasArticle":1156},"Pub\u002FSub","Un patrón de mensajería donde un productor publica un evento y cualquier número de consumidores lo lee de forma independiente, con un broker en medio. El productor nunca los espera, y así la ruta de la petición sigue siendo rápida mientras el trabajo lento ocurre detrás.",[1641,1642,1643],"publicación\u002Fsuscripción","publish\u002Fsubscribe","Google Cloud Pub\u002FSub",[1645],{"kind":1169,"url":1646},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":1239,"term":1650,"definition":1651,"category":1161,"aliases":1652,"links":1655,"related":1658,"readMore":-1,"target":1659,"hasArticle":1156},"REST","El estilo convencional de las APIs HTTP: una URL nombra un recurso y el verbo HTTP dice qué hacer con él. La forma por defecto en que una app habla con un backend, y lo que esperan encontrar la mayoría de integraciones de terceros.",[1653,1654],"API REST","Representational State Transfer",[1656],{"kind":1169,"url":1657},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[259,288],"\u002Fglossary#rest",{"slug":372,"term":1661,"definition":1662,"category":1216,"aliases":1663,"links":1667,"related":1672,"readMore":-1,"target":1673,"hasArticle":1156},"RGPD","El reglamento de la UE sobre los datos personales de las personas en la UE: una base legal para recogerlos, consentimiento real para el rastreo y derechos de acceso y supresión. Sigue a tus usuarios, no a tus servidores, así que se aplica esté donde esté la empresa.",[1664,1665,1666],"GDPR","Reglamento General de Protección de Datos","protección de datos",[1668,1670],{"kind":1151,"url":1669},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":1169,"url":1671},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[1460,343,339],"\u002Fglossary#gdpr",{"slug":1361,"term":1675,"definition":1676,"category":1161,"aliases":1677,"links":1683,"related":1686,"readMore":-1,"target":1687,"hasArticle":1156},"Registro de contenedores","Almacenamiento alojado para imágenes de contenedores, direccionadas por nombre y etiqueta: Docker Hub, GitHub Container Registry o el propio de un proveedor cloud. Publicar una build ahí convierte 'funciona en mi máquina' en una imagen que cualquiera puede descargar y ejecutar sin cambios.",[1678,1679,1680,1681,1682],"registro de imágenes","Docker registry","GHCR","ghcr.io","container registry",[1684],{"kind":1195,"url":1685},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[1347,1475],"\u002Fglossary#container-registry",{"slug":1238,"term":1689,"definition":1690,"category":1161,"aliases":1691,"links":1695,"related":1698,"readMore":-1,"target":1699,"hasArticle":1156},"Renderizado en servidor","Construir una página como HTML terminado en el servidor, de modo que la primera respuesta ya lleva el contenido, los encabezados, las metaetiquetas y los datos estructurados. Los rastreadores, las vistas previas de enlaces y los dispositivos lentos lo leen sin ejecutar JavaScript.",[1692,1693,1694],"SSR","server-side rendering","renderizado del lado del servidor",[1696],{"kind":1169,"url":1697},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[1227],"\u002Fglossary#server-side-rendering",{"slug":343,"term":1701,"definition":1702,"category":1216,"aliases":1703,"links":1706,"related":1709,"readMore":-1,"target":1710,"hasArticle":1156},"SOC 2","Un informe de auditoría externa sobre cómo trata una organización los datos de clientes —seguridad, disponibilidad, confidencialidad— y no un certificado que se compra. Los clientes empresariales lo piden, y condiciona la arquitectura mucho antes que la propia auditoría.",[1704,1705],"SOC2","System and Organization Controls",[1707],{"kind":1169,"url":1708},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[1460,372,339],"\u002Fglossary#soc-2",{"slug":1712,"term":1713,"definition":1714,"category":1177,"aliases":1715,"links":1718,"related":1721,"readMore":-1,"target":1722,"hasArticle":1156},"saas","SaaS","Software vendido como suscripción continua a un producto alojado, en lugar de como una licencia única que el cliente instala y opera. El proveedor mantiene los servidores, publica actualizaciones sin parar y cobra por usuario o por uso.",[1716,1717],"Software as a Service","software como servicio",[1719],{"kind":1169,"url":1720},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[1412,1411],"\u002Fglossary#saas",{"slug":288,"term":1724,"definition":1725,"category":1312,"aliases":1726,"links":1729,"related":1732,"readMore":-1,"target":1733,"hasArticle":1156},"Server-Sent Events","Un flujo unidireccional del servidor al cliente sobre una conexión HTTP corriente. Más simple que un WebSocket y suficiente allí donde solo el servidor tiene algo que decir: un feed de progreso, o una respuesta de IA que llega token a token.",[1727,1728],"SSE","eventos enviados por el servidor",[1730],{"kind":1169,"url":1731},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[259,1239],"\u002Fglossary#server-sent-events",{"slug":798,"term":1735,"definition":1736,"category":1146,"aliases":1737,"links":1740,"related":1745,"readMore":-1,"target":1746,"hasArticle":1156},"Skia","La librería gráfica 2D de código abierto de Google que dibuja Chrome, Android y —hasta Impeller— cada fotograma de Flutter. Renderiza tanto a PDF como a pantalla, que es lo que hace la función de imprimir a PDF de Chrome.",[1738,1739],"Skia Graphics Engine","skia-safe",[1741,1743],{"kind":1151,"url":1742},"https:\u002F\u002Fskia.org\u002F",{"kind":1169,"url":1744},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[1488],"\u002Fglossary#skia",{"slug":354,"term":1748,"definition":1749,"category":1312,"aliases":1750,"links":1754,"related":1757,"readMore":-1,"target":1758,"hasArticle":1156},"TLS","La capa de cifrado bajo HTTPS. Demuestra que el servidor es quien dice su certificado, acuerda una clave nueva para la sesión y cifra todo lo demás, de modo que la red intermedia solo ve texto cifrado que no puede alterar sin que se note.",[1751,1752,1753],"SSL","HTTPS","Transport Layer Security",[1755],{"kind":1169,"url":1756},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[1255,1266],"\u002Fglossary#tls",{"slug":1186,"term":1760,"definition":1761,"category":1177,"aliases":1762,"links":1765,"related":1768,"readMore":-1,"target":1769,"hasArticle":1156},"Time to market","Cuánto se tarda en llevar un producto desde la decisión hasta usuarios reales. Casi todas las discusiones sobre stack y alcance son en realidad discusiones sobre este número, porque cada semana ahorrada es una semana de ingresos, feedback y posición competitiva.",[1763,1764],"TTM","tiempo de salida al mercado",[1766],{"kind":1169,"url":1767},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[1387,1185],"\u002Fglossary#time-to-market",{"slug":322,"term":1771,"definition":1772,"category":1312,"aliases":1773,"links":1775,"related":1780,"readMore":-1,"target":1782,"hasArticle":1156},"WebRTC","El estándar de navegador y móvil para enviar audio, vídeo y datos directamente entre dos dispositivos, con los servidores implicados solo en presentarlos entre sí. Es sobre lo que se construye una videollamada dentro de una app cuando no es un SDK alquilado.",[1774],"Web Real-Time Communication",[1776,1778],{"kind":1151,"url":1777},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":1169,"url":1779},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[1781,259],"xmpp","\u002Fglossary#webrtc",{"slug":259,"term":1784,"definition":1785,"category":1312,"aliases":1786,"links":1787,"related":1790,"readMore":-1,"target":1791,"hasArticle":1156},"WebSocket","Un protocolo que mantiene una conexión abierta entre cliente y servidor para que cualquiera de los dos pueda enviar en cualquier momento, en vez de que el cliente pregunte una y otra vez. Sobre esto funcionan los precios en vivo, el chat y los indicadores de presencia.",[],[1788],{"kind":1169,"url":1789},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[288,1239],"\u002Fglossary#websocket",{"slug":1781,"term":1793,"definition":1794,"category":1312,"aliases":1795,"links":1798,"related":1803,"readMore":-1,"target":1804,"hasArticle":1156},"XMPP","Un protocolo de mensajería abierto y federado, y la alternativa de siempre a escribir un backend de chat o alquilarlo. Se extiende a presencia, indicadores de escritura y transferencia de archivos, y es lo bastante antiguo como para que cada plataforma tenga una librería madura.",[1796,1797],"Jabber","Extensible Messaging and Presence Protocol",[1799,1801],{"kind":1151,"url":1800},"https:\u002F\u002Fxmpp.org\u002F",{"kind":1169,"url":1802},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[322,259],"\u002Fglossary#xmpp"]