La forma universal: una base de código, todas las plataformas
Write Once, Run Anywhere es un sueño desde los años 90, una búsqueda continua que evolucionó a lo largo de los años. Hoy, gracias a la maduración de ciertas tecnologías, podemos hablar seriamente de su evolución natural: Write Once, Run Anywhere.
Históricamente, los ingenieros tienen una especie de pereza funcional: buscamos optimizar, abstraer y estandarizar todo lo repetitivo para centrarnos en lo que realmente importa. Una búsqueda que mejora nuestras vidas y que, a menudo, tiene un impacto positivo en nuestros equipos, nuestra organización, la comunidad e incluso la industria.
El mundo de los ingenieros se basa en capas de abstracción, algunas buenas, otras malas... pero todas nacen del deseo constante de optimizar nuestra productividad y tener más impacto con menos esfuerzo.
En 2019 llegó a Paisanos un proyecto que necesitaba añadir nuevas funcionalidades y renovar su producto. En Paisanos ya teníamos experiencia en la transformación de productos obsoletos y lentos en experiencias memorables e impactantes. Recuerdo que el cliente mencionaba constantemente problemas de «compatibilidad» y «consistencia», algo que puede ocurrir al interactuar con tecnologías antiguas o malas prácticas.
Al revisar la plataforma, encontramos una combinación de Electron, React Native, React Native Web y muchísimas soluciones alternativas, todas en react-native-web. Habían intentado crear una aplicación universal, pero el resultado fue malo: tuvieron muchos problemas para compartir código entre plataformas.
El resultado final: reelaboraron todo en proyectos separados, dejando atrás la idea de algo universal.
Conceptualmente la idea era genial: una única base de código, múltiples plataformas... pero ese espectacular concepto se vio opacado por la imposibilidad de ejecutarse de manera efectiva, en algún momento porque no había el progreso necesario para lograr el resultado esperado de manera efectiva.
En nuestro entorno, todo es cuestión de tiempo y avance tecnológico, muchos conceptos son buenos en teoría, pero si no tenemos la tecnología, tendemos a guardarla en un cajón hasta que el mundo esté preparado o hagamos algo al respecto para hacerla realidad.
Hoy, llegó el momento. Las herramientas maduraron. Crear productos verdaderamente multiplataforma que sean rápidos, consistentes y escalables es una posibilidad real.
En estos años, hemos probado docenas de tecnologías, lanzado productos para nuevas empresas y grandes empresas y hemos aprendido mucho. Estas son algunas de las lecciones que hemos aprendido tras implementar varias aplicaciones universales y alcanzar más de 2 millones de usuarios y una valoración media de +4,5 en los stores.
%20(1).png)
¿Por qué una Universal App?
Los productos digitales son, en su mayor parte, canales para conectar a las personas con la propuesta de valor de nuestro producto. Cuanta más presencia tengamos, más usuarios podremos llegar, por lo que tendremos más oportunidades de triunfar.
Una aplicación universal te permite estar en todos los dispositivos con un solo esfuerzo técnico.
- Móvil sigue siendo el rey de la interacción y la activación: notificaciones, proximidad al hardware, experiencia más centrada y acceso directo con un toque de distancia.
- Web sigue siendo inmejorable en cuanto a la adquisición: pueden encontrar nuestro producto con una simple búsqueda en Google (o con alguna IA), pueden compartir una URL y comunicarse con nosotros más rápido.
Además, una universal app no solo puede aumentar nuestra presencia, sino también optimizar nuestro equipo.
Mientras que antes era necesario gestionar tres equipos diferentes (iOS, Android y Web), hoy en día un solo equipo puede gestionar todo mediante una única base de código. Esto significa que menos o la misma cantidad de personas pueden hacer más y centrarse en la funcionalidad, el descubrimiento y, simplemente, mejorar profesionalmente.
Según nuestra experiencia, la creación de aplicaciones universales redujo la necesidad de un equipo entre un 30 y un 40% y, cuando no hubo reducción, hubo un aumento considerable en la velocidad de entrega y descubrimiento.
Universal = más presencia de marca y menos impacto o costo operativo por ciclo de construcción.
No siempre fue la mejor opción
Soy un early adapter por naturaleza, lo que me brinda la oportunidad de validar continuamente la tecnología y experimentar, eligiendo lo que puede beneficiar al equipo hoy y lo que tiene potencial para el futuro. Sin embargo, esta mentalidad, mal controlada, puede resultar perjudicial si adoptas algo demasiado pronto en un producto que debe ampliarse.
En Paisanos creamos muchos productos, algunas app universales: tecnología financiera, entretenimiento, deportes.
Hace varios años, uno de estos proyectos era un producto de entretenimiento cuya necesidad estaba dirigida directamente a ser una aplicación universal, tenía que estar presente en todos los dispositivos posibles, las funciones y la interfaz de usuario iban a ser las mismas y tenían un presupuesto muy ajustado.
Recuerdo que mi entusiasmo era increíble, ya que era la oportunidad de implementar Universals después de tantos meses de pruebas en el Paisanos LAB, un lugar donde hacemos pruebas controladas y vemos qué debemos o no adoptar. Así que, después de un período dedicado a la arquitectura, decidimos apostar por Universal por completo.
Para ese producto, utilizamos Expo para crear una aplicación en React Native y utilizamos la función de exportación web como SPA. La Expo recién comenzaba en ese momento y tanto la documentación como las guías y las bibliotecas estaban un poco anticipadas.
Los primeros meses fueron bastante buenos, pero con el paso del tiempo nos encontramos con varios problemas: cierta compatibilidad móvil <> web en las bibliotecas, lo que implicaba optar por bibliotecas comunitarias o directamente crear/adaptar algunas nosotros mismos, nos encontramos creando muchos archivos específicos para plataformas (.ios.tsx, .web.tsx) y utilizando mucha carga diferida o división de código porque el paquete SPA era demasiado pesado en la web y nos mataba los Core Web Vitals, por no mencionar el SEO.
Fue un producto en el que ganamos mucho tiempo de desarrollo y pudimos probar Universals a escala. También nos enfrentamos a muchas complejidades técnicas innecesarias, pero esas son las desventajas de cualquier decisión de arquitectura. Aun así, el producto tuvo éxito, consiguió inversiones y nos dejó muchos aprendizajes.
Ahora, es posible

Hace unos años salió Solito, una biblioteca creada por Nando Rojo, un ingeniero que está muy involucrado en la comunidad de código abierto nativo de React, y nos brinda dos cosas geniales (extraídas de su web):
- Un wrapper para compartir la navegación entre React Native (o Expo) y Nextjs.
- Un conjunto de patrones y ejemplos para crear aplicaciones multiplataforma con React Native y Nextjs.
A finales de 2023 podremos empezar a crear una universal app para Boca Juniors, un club de fútbol argentino. La necesidad, la oportunidad y el avance tecnológico nos dieron la oportunidad de consolidar los años de aprendizaje en un increíble producto universal.
Tras analizar exhaustivamente la arquitectura y decidir qué camino tomar, comprendimos que el único riesgo que teníamos de bloquear este enfoque podía resolverse creando componentes separados sin afectar a otras funciones o simplemente expulsando la aplicación, ya que al ser un monorepo, en esencia son aplicaciones independientes.
Boca es una pieza de tecnología que realmente exprimió las posibilidades de Nextjs y Expo en su unión y su división. Como aplicación web, el producto requiere mucha flexibilidad en términos de patrones de representación, integraciones y seguridad. En el sector móvil hay ciertas particularidades que también son importantes: en algunos flujos se adopta un enfoque híbrido y se basa en gran medida en Nextjs, mientras que en otros, de forma puramente nativa, se basa en Expo, con diversas integraciones de proveedores y módulos personalizados.
A pesar de ello, en la aplicación móvil nunca se siente el cambio respecto a cuando algo se ejecuta de forma nativa o con una web embebida, algo que solo se puede conseguir gracias a la unión de ambas tecnologías.
Esta elección nos permitió crear un producto escalable y seguro que aloja a cientos de miles de usuarios con un tráfico de momentos extremadamente alto, sin fallas, sin problemas y con un equipo que no necesita mantener dos (o tres) plataformas al mismo tiempo.
Estructuralmente, Solito plantea una arquitectura de monorepo, en la que tiene dos artefactos principales:
- Apps: Donde estén tus aplicaciones separadas, básicamente puedes empezar con una en la exposición y la siguiente, pero puedes añadir tantas como quieras: storybook, desktop, vos elegís. Este enfoque permite que, aunque compartas código, puedas tomar decisiones más personalizadas para cada marco específico.
- Packages: acá están los paquetes que se comparten entre las diferentes aplicaciones, en términos generales, pueden ser componentes UI, features enteros y tu lib con logica de negocio, utils, etc.
%2010.56.43%E2%80%AFa.%C2%A0m..png)
Las aplicaciones de las grandes empresas tienden a necesitar aprovechar al máximo cualquier marco que esté utilizando, por lo que estar atrapado en algo que está en versión beta o experimental puede ser un problema bastante grave si no tiene un plan de respaldo. Ahí es donde Solito brilla: siempre estás en aplicaciones separadas, pero compartiendo lógica y componentes.
Pero hoy, en 2025, Solito no es el único camino

Expo está haciendo un trabajo increíble al darle finalmente a React Native un ecosistema sólido. Hace solo unos años, el desarrollo móvil con RN dependía casi por completo del esfuerzo de la comunidad. Hoy en día, Expo se ha convertido en la opción predeterminada para crear aplicaciones móviles con React Native.
Con el lanzamiento de su versión 52, Expo presenta una versión estable Expo Router estable, que permite crear aplicaciones universales sin tener que gestionar varios proyectos independientes. La compilación está optimizada tanto para la web como para los dispositivos móviles, y para el uso de file-based routing lo acerca mucho a la experiencia de desarrollo de Next.js, lo que reduce la curva de aprendizaje para cualquier desarrollador web.
Si preferís usar Next.js con Expo sin pasar por Solito, también puedes seguir la guía oficial de integración. Aunque es posible, puede complicarse si no está bien estructurado.
Hoy estamos utilizando la Expo 52 en proyectos universales para nuevas empresas, y los resultados son excelentes. El marco es sólido, la experiencia de desarrollo es fluida y no cabe duda: Expo está apostando fuerte por convertirse en el nuevo estándar para el desarrollo de aplicaciones universales. Y la verdad... lo está logrando.
Sé universal, pero con esto en mente
The Universal Way puede convertirse en The Universal Mess muy rápidamente y podes tener lo peor de ambos mundos: una mala aplicación móvil y una mala aplicación web.
Estas son algunas cosas que debes tener en cuenta al crear una:
Las reglas de diseño importan
Las aplicaciones móviles nativas y las aplicaciones web adaptables no comparten las mismas reglas de diseño, cada una tiene sus propias convenciones que, si se omiten, pueden afectar negativamente a la percepción del producto.
Uno de los ejemplos más claros es la navegación:
- Uso bottom tabs en una aplicación web es confuso o incluso innecesario.
- Uso de un menú de hamburguesas en una aplicación móvil nativa puede parecer anticuado o ir en contra de los patrones esperados por los usuarios.
Otro ejemplo claro son los modales. Mientras que en la web funcionan bien en el centro de la pantalla, en los móviles es mucho más natural mostrar el componente en un bottom sheet.
No se trata de detalles menores. Son convenciones que, cuando se respetan, refuerzan la confianza del usuario y, cuando se ignoran, hacen que el producto parezca barato.
Es por eso que su sistema de diseño y su equipo de diseño e ingeniería deben trabajar juntos para definir componentes específicos de la plataforma. Esta diferenciación es absolutamente necesaria si quieres que tu aplicación se sienta nativa dondequiera que se utilice.

Usa en las bibliotecas de estilos existentes
En Paisanos.io hemos probado básicamente todas las librerías que existen para Web y Móvil, nos encanta que las cosas se vean bien y que los productos se puedan escalar fácilmente (¿recuerdas css-in-js?).
Cuando trabajas con una aplicación universal, hay dos excelentes alternativas que puedes usar para diseñar:
- Tamaguí: Un sistema de diseño universal que le permite crear con rapidez y, al mismo tiempo, mantener la coherencia visual y un alto rendimiento en la web y en dispositivos móviles. Nos proporciona componentes optimizados para la producción, temas y mucha facilidad de personalización y adaptación.
- NativeWind + RN Reutilizables: Una combinación muy inspirada en la web, NativeWind nos permite escribir Tailwind en React Native y RN Reusables nos brinda muchos componentes listos para usar al mejor estilo de Shadcn. Aunque te darás cuenta de que optas más por tu cuenta, esta combinación te ofrece una flexibilidad total si tienes que cumplir con un sistema de diseño muy particular para tu producto.
En Paisanos hemos utilizado ambos para crear productos y hemos obtenido buenos resultados. No tenemos ningún favorito, si venis de la web quizás NativeWind + RN Reusables sea una combinación que genere menos curva de aprendizaje, pero Tamagui es simplemente fenomenal.
Lo que sí: recuerda que no debes crear aplicaciones universales con la Stylesheet de React Native, sino te encontrarás reinventando la rueda continuamente y enfrentándote a un nivel de complejidad bastante alto.
%209.23.49%E2%80%AFa.%C2%A0m..png)
Ten cuidado con la experimentación y la compatibilidad
Ser uno de los primeros en adoptarlo es genial.
Si entras en producción con algo demasiado nuevo, es posible que lo pagues más adelante en forma de errores o deuda técnica. Si lo vas a utilizar, recuerda que esta decisión es responsabilidad tuya y de tu equipo; cualquier inconveniente que surja no es culpa de los frameworks.
%205.01.42%E2%80%AFp.%C2%A0m..png)
Puede que no sea para ti (y está bien)
Las aplicaciones universales son geniales, ya que a nivel startup o side project no tendrás ningún problema relevante. Sin embargo, a nivel empresarial, hay muchos requisitos a tener en cuenta para decidir si se debe optar por una universal o no.
La mayoría de los productos Paisanos NO SON UNIVERSALES, solo ocurren cuando el análisis de la arquitectura en su conjunto (requisitos funcionales, atributos de calidad, restricciones, contexto, etc.) da como resultado la posibilidad de crear una. Lo más fundamental es no dejarse llevar por las exageraciones, analizar bien lo que se va a hacer antes de tomar este camino.
Recuerda que puede volverse complicado y tu universal puede ser más que un beneficio, puede ser tu perdición, especialmente a gran escala.
¿Cuál es la mejor opción hoy en día?
Si está construyendo un aplicación universal, puedes hacerlo de dos maneras según el contexto y la escala del proyecto:
Si es un side proyect o una startup, donde sabes que la complejidad y la escala van a ser manejables, puede optar directamente por Expo. Su nuevo Expo Router es muy potente y el equipo que lo respalda está lanzando funciones a un ritmo acelerado. Ten en cuenta que muchas funciones aún son experimentales, y en la web encontrarás algunas limitaciones con respecto a lo que ofrece Next.js en términos de SSR, SEO y capacidades.
Si está desarrollando para una empresa o un producto a gran escala, cuando necesites robustez, flexibilidad y estabilidad, te recomiendo usar Solito combinado con Next.js y Expo. Este stack te permite compartir componentes y lógica cuando tenga sentido, pero también separar comportamientos o estrategias específicos cuando sea necesario. Es lo mejor de ambos mundos: velocidad y unificación sin perder el control. Las aplicaciones empresariales suelen tener un alto nivel de especificidad, por lo que es necesario aprovechar todo el conjunto de aplicaciones para cumplir con los exigentes requisitos técnicos. Esa adaptabilidad solo se puede lograr si tienes la capacidad de ser universal... pero también específico.
En algunos casos, especialmente en las grandes empresas, incluso puede ser conveniente tener proyectos separados para web y móvil. Si es así, aprovecha esa oportunidad. La credibilidad del producto es clave, y no hay nada peor que el equipo de soporte tenga que explicar por qué «la aplicación universal no funciona».
A partir de ahí, puedes hacer lo que tenga más sentido. La tecnología es un medio, no un fin, y si bien los problemas pueden parecer similares entre los productos, los contextos casi nunca son:
- Con la aceleración que estamos viendo gracias a la IA, es posible que incluso optes por crear aplicaciones independientes y automatizar la transformación de los componentes en todas las plataformas y abstraer la lógica empresarial en bibliotecas compartidas.
- Si tiene una web sólida construida con Next.js, Vue o el marco de su elección, también puede úsalo integrado en una aplicación nativa. Lo hicimos varias veces como estrategia de comercialización en Paisanos y funcionó muy bien.
El futuro de las universal apps es magnífico
Este último año, la batalla por la superioridad de la Web finalmente terminó y muchos empezaron a interesarse por los dispositivos móviles y universales. La competencia hace que los ingenieros ganemos y seamos felices.
Algunos de los frameworks, tecnologías o cosas que están sucediendo en el mundo universal son:
One Framework: De los creadores de Tamagui llega One, un framework universal basado en Vite que busca crear aplicaciones rápidas y convertirse en un estándar. Aunque aún no está listo para la producción, el equipo dirigido por Nate está haciendo un gran trabajo. Nosotros, en Paisanos, ya hemos realizado varias pruebas en el LAB con resultados increíbles.
Lynx: Creado por ByteDance, Lynx es un marco respaldado por Rust que busca crear aplicaciones universales inspiradas fuertemente en la web y el uso de CSS. Buscan combinar lo mejor de la web con la experiencia fluida de una aplicación nativa. Aunque aún se encuentra en una etapa muy temprana, su aparición resuena mucho en la comunidad y es una de las apuestas más prometedoras.
Expo: Expo sigue siendo el rey de las aplicaciones universales, especialmente con su última versión 52. No solo por el router, sino también por su servicio EAS, que facilita la implementación de estas aplicaciones, y por su contribución continua a la comunidad móvil y universal.
Algunas de las cosas en las que están trabajando son:
- Elementos Dom: Una forma de utilizar componentes web en aplicaciones móviles de forma sencilla. Resulta especialmente útil en los procesos de migración, en los que estás trasladando tu web a algo nativo o si necesitas usar alguna biblioteca web específica en dispositivos móviles (por ejemplo, mediante gráficos).
- Componentes laterales del servidor Universal React: Expo está intentando llevar los componentes del servidor a todo el mundo, lo que nos ayuda a gestionar los datos, las llamadas a la API y la representación sin cargarlos en el cliente. Se trata de un cambio enorme para quienes desean crear aplicaciones universales con capacidades de SSR.
Vercel
La empresa que ganó la Web anunció recientemente que Fernando Rojo (creador de Moti y Solito) se unió a sus filas como Head of Mobile. No se habla mucho de lo que está haciendo allí, pero podemos suponer dos cosas:
- Hace poco se anunció que estaban trabajando en llevar la v0 a una aplicación móvil, por lo que posiblemente estén buscando llevar el ecosistema de Vercel a algo nativo, para que los usuarios puedan interactuar fácilmente desde nuestro teléfono celular.
- Es posible que quieran unirse a la batalla de las apps universales, ya que tienen el talento y la capacidad para hacerlo. Desde mi punto de vista, la mejor forma de unirse hoy es crear herramientas para el manejo de aplicaciones híbridas en React Native, tomando como ejemplo un Nextjs optimizado para este caso, ya que actualmente el rendimiento de las animaciones o interacciones en la web es muy bueno y puede resultar imperceptible si está embebido. La otra forma es crear un nuevo marco para dispositivos móviles, pero creo que es muy caro y es una apuesta que quizás los desvíe de su propuesta de valor.
En cualquier caso, sería fantástico ver lo que Vercel tiene para aportar al ecosistema, ya que ha hecho cosas increíbles en la web.
Esto es solo el principio
Muchos de los frameworks mencionados aún se encuentran en fase experimental o beta. Todavía necesitan tiempo para madurar para alcanzar versiones estables que les permitan alcanzar su máximo potencial. La carrera no ha hecho más que empezar, con La Expo marcando el ritmo, pero con nuevos competidores listos para entrar en el juego y explorar este fascinante mundo.
Lo que está claro: el futuro es brillante. Y no me cabe duda de que 2026 será el año en que las aplicaciones universales se conviertan en la norma.
Mientras tanto, sigue explorando, probando, rompiendo cosas. Todos los comentarios que damos como desarrolladores impulsan estos frameworks. Son nuestras pruebas, nuestros casos extremos y nuestros usos reales los que les dan orientación.
Y eso también forma parte de la construcción del futuro.
Gracias por leer.
Mantenete curioso.