BlogIngeniería

Una app, cuatro plataformas: cómo publicamos a la vez en web, iOS, Android y Windows

La app web de TradeYoke y las apps nativas son el mismo código. Esto es lo que eso le aporta a los clientes, y las reglas que seguimos para que siga siendo así.

Dos trabajadores de obra con chaleco reflectante revisando juntos una carpeta con sujetapapeles, junto a la agenda semanal de TradeYoke

Respuesta rápida: TradeYoke es un único código compartido que se representa en la web y se empaqueta como apps nativas para Windows, Android e iOS, en lugar de cuatro productos separados construidos para parecerse. Una función escrita una vez para la web es, por construcción, la misma función en todas las demás plataformas, no una reconstrucción aparte que pueda desincronizarse.

Ideas clave

  • Cada pantalla vive en una sola biblioteca de componentes compartida; el servidor web, el navegador y las apps nativas son capas finas alrededor del mismo código.
  • Una corrección o una función nueva se publica en todas las plataformas a la vez, porque solo existe en un sitio.
  • Las apps nativas instaladas funcionan sin conexión; la app web basada en el navegador es la puerta de entrada de la oficina, siempre en línea.
  • Las cosas específicas de cada plataforma (la cámara, el GPS, los selectores de archivos) van detrás de una sola interfaz compartida con una implementación distinta por plataforma, nunca un caso especial en las pantallas compartidas.
  • Una implementación de plataforma que falta se trata como un error que corregir, no como un «próximamente» que sortear.

La regla: un solo código, cuatro caras

La mayoría del software que dice funcionar «en todas partes» en realidad significa dos o tres equipos construyendo apps parecidas contra el mismo backend, que es como una app móvil se queda una versión por detrás de la versión web sin que nadie se dé cuenta, o gana una función que la versión web nunca recibe. TradeYoke no funciona así. Todo lo que ve un usuario (la agenda, el asistente de trabajos, la pantalla de facturas) vive en una sola biblioteca de componentes compartida. El servidor web, el navegador (que ejecuta el mismo código del lado del cliente), y las apps nativas de Windows, Android e iOS son contenedores ligeros alrededor de esos mismos componentes. Una función creada para la web es, por lo tanto, automáticamente la misma función en cualquier otro sitio, porque no existe una segunda versión que pueda quedarse atrás.

Lo que significa en el día a día

Para la persona que la usa, la diferencia práctica es que no existe el momento de «eso solo está en la versión de escritorio». La oficina, planificando la semana en un monitor, y la persona en la furgoneta, comprobando el mismo trabajo en un móvil, ven la misma pantalla haciendo las mismas cosas, no una vista móvil reducida a la que le faltan la mitad de los botones. Cuando algo se corrige o se mejora, llega a todas las plataformas en la misma versión, no a la web este mes y a la app «eventualmente». Y como las apps de móvil y Windows están instaladas de verdad, apps nativas y no una página web envuelta en una carcasa, llevan el soporte sin conexión de TradeYoke: los trabajos del día, los registros de clientes y los precios están disponibles y son editables sin cobertura, y se sincronizan automáticamente en cuanto vuelve la conexión. La app web basada en el navegador es distinta por diseño: es la superficie de oficina siempre en línea para planificar e informar, y no pretende funcionar sin conexión, porque una pestaña del navegador no tiene una forma fiable de garantizarlo.

La disciplina necesaria para que siga siendo así

La regla solo se mantiene si se hace cumplir, así que las diferencias de plataforma (la cámara, el GPS, un selector de archivos, las notificaciones push) nunca se llaman directamente desde las pantallas compartidas. Cada una va detrás de una sola interfaz compartida, con una implementación distinta que aporta cada plataforma: la versión web puede usar una API del navegador, la versión nativa el propio SDK del dispositivo, pero el componente compartido nunca sabe ni le importa cuál hay debajo. Una plataforma que todavía no tiene su propia implementación se trata como un error sin terminar en esa interfaz, no como un motivo para escribir una rama de caso especial en el código compartido: en el momento en que una pantalla empieza a preguntar «¿en qué plataforma estoy?», la promesa de un solo código empieza a romperse, así que esa pregunta nunca puede aparecer fuera del límite de la propia interfaz.

Por qué esto importa para un negocio de oficio, no solo para los ingenieros

El instinto es tratar «un solo código» como un detalle de implementación que solo interesa a los desarrolladores, pero es la razón por la que un negocio que usa TradeYoke nunca tiene que planificar en torno a una diferencia de funciones entre «la app» y «la página web». Un miembro del equipo que prefiere un portátil con Windows, otro que vive en Android en la furgoneta, y un gestor de oficina que solo abre un navegador están todos trabajando con los mismos datos, las mismas pantallas y el mismo plan del día: no hay nada que mantener sincronizado entre ellos porque nunca fueron cuatro cosas distintas para empezar.

Preguntas frecuentes

¿Tiene la app web menos funciones que las apps nativas?

No: las mismas pantallas compartidas se representan en ambas; la diferencia relevante es el soporte sin conexión, que pertenece a las apps nativas instaladas porque una pestaña del navegador no puede garantizarlo de forma fiable, no a una experiencia web reducida.

Si uso la app en Windows y mi compañero usa Android, ¿vemos lo mismo?

Sí. Ambos ejecutáis los mismos componentes compartidos contra los mismos datos; la única diferencia es el dispositivo que los dibuja.

¿Aparece alguna vez una función nueva antes en una plataforma que en otra?

La intención de construirlo así es que no ocurra: una función se escribe una vez en la capa compartida y se publica allí donde funcione esa capa. La parte específica de cada plataforma (como una capacidad del dispositivo) puede tardar una versión más en una plataforma que necesita su propia implementación, lo cual se trata como una diferencia que cerrar, no como una diferencia permanente aceptada.

¿Por qué la app web no funciona sin conexión como la app del móvil?

Una pestaña del navegador no tiene una forma fiable de garantizar que los datos sobrevivan a cerrarla, perder la cobertura o reabrirla días después, como sí puede hacer una app instalada. Las apps instaladas de TradeYoke en Windows, Android e iOS llevan ese soporte sin conexión; la app web es, deliberadamente, la superficie de oficina siempre en línea en su lugar.

Cajas eléctricas empotradas en una pared, con los cables listos para conectar
Una sola app, la misma función, en el teléfono de cada oficio.

AssemblySoft DevOps

The engineering team behind TradeYoke: how it is built, deployed and kept running.

Más del blog

April 2026: one core, many trades

With window cleaning solid, April 2026 was about whether the core could carry other trades. Each trade is a module on the same core: its own terms, forms and colour.

AssemblySoft DevOps 4 min de lectura