Muy buenas!
Hoy leí un artículo interesante vía Linkedin:
https://www.linkedin.com/feed/update/urn:li:activity:6458324706864041984/
Sin embargo, veo que aunque pasen los años existen ciertas ideas ya superadas que siguen grabadas a fuego y como Linkedin no me deja poner mis +6000 caracteres en los comentarios, lo escribo por aquí 😉
A día de hoy pensar que las webapps o las híbridas existen porque son la versión lowcost de las nativas es un error… hace 5 años estaría de acuerdo, pero a día de hoy no. Una solución basada en web (PWA o híbrida) puede aportar una experiencia de usuario igual que una nativa. Eso sí, pagándola como es debido. Si pagamos +20K por una nativa Android, +40K por una nativa iOS, pero 10K-15K por una híbrida, el problema no es la híbrida, sino que para crear una buena experiencia nativa sueltas +60K y para una híbrida que funcione en todas partes 15K, así es lógico que la experiencia en híbrida sea mala.
Sobre las webapps
A día de hoy, si hablamos de webapps hablamos de PWA. Las características de las PWA, entre otras son:
- Notificaciones Push: Hace tiempo que tenemos notificaciones push en la web, por lo que decir que una webapp no tiene push pos… no es del todo cierto, porque donde no tenemos es en iOS (lo tienen en su teórico roadmap). Sí están disponibles en Android, en Windows y en Linux… porque no son sólo push a nivel de dispositivo móvil, sino que lo son a nivel de navegador… pudiendo enviar la notificación al último dispositivo abierto si puedes identificar al usuario (vamos, si te tienes que conectar para disfrutar del servicio…) etc etc.
- Base de datos local: La web desde hace tiempo puede almacenar información en una base de datos de objetos. Puedes tener la data que necesitas para mostrar la información en local, sin necesidad de pedirlo a la web, por lo que «bye bye tiempos de espera».
- Caché local: Se utiliza para poder almacenar los archivos de la web en local y no tener que andar a pedirlos… ¿ese HTML que te retorna el servidor? no lo pido pq lo tengo en local … ¿esas imagenes? no las pido porque ya las tengo descargadas… etc etc. Esto permite dar una experiencia excelente sin tiempos de espera ni transiciones extrañas como pasaba hace años.
- Workers en segundo plano: La PWA puede solicitar actualizaciones en segundo plano, lo que nos permite descargar lo necesario antes de que el usuario lo vaya a utilizar.
- Disponibilidad offline: Todo lo anterior junto y bien hecho conlleva una disponibilidad offline… eso de que las webapps sin conexión no funcionan es cosa del pasado.
Una buena PWA gestiona maravillosamente bien la carga de elementos, puede mostrar una experiencia en modo offline o con conexión liefi… y tantas mejoras más que me dejo atrás en lo que respecta a PWAs
La pega es que iOS aún no soporta la PWA… tan fácil como conocer tu target y saber que % usa iOS y determinar si ese % es lo suficientemente importante para negocio como para gastarte 50.000 EUR más (de ahí para el norte y sin contar el coste a largo plazo…) en dar ese soporte a iOS con una app nativa… y para Android puedes apostar tranquilamente en una PWA híbrida que, a la larga, cuando iOS soporte PWA como es debido, podrás plantearte unificar aplicaciones, experiencias y dejar de perderte en detalles de implementación y centrarte en negocio.
Si iOS es el 80% de tu target pues no es una opción claro… aunque suele ser más el 20% que el 80%… pero como siempre, habrá casos y casos, siempre y cuando la decisión se base en quien va a usar la aplicación y no en otros temas…
Sobre las híbridas
Todo lo que se puede hacer con una PWA se puede hacer con una híbrida. No necesitamos hacer peticiones a URLs externas para cargar la página… necesitaremos las peticiones a la API que sean necesarias para obtener info… algo que en las nativas hace falta igual… porque al final la info está en una API no en la app nativa.
Para mí, poder publicarlas en un store no es una ventaja… es una característica… pero en un mercado saturado de aplicaciones con unos usuarios que usan practicamente sólo aplicaciones sociales no lo consideraría una ventaja… porque obligamos al usuario a encontrarnos en la tienda y a decidir instalar la aplicación… y ya sabemos que cada toma de decisión del usuario se traduce en fugas.
Medir las acciones y eventos que realiza un usuario dentro de una app híbrida… o sea una web… es extremadamente sencillo, sólo hace falta una buena estructura… así o chou basada en enlaces con identificadores y un listener disparando los eventos con una estructura automática a la herramienta de medición de turno… para nada es complejo… ¿que tiene que pensarse? si, ¿que normalmente no se piensa y no se hace ? también, pero eso no lo convierte en complejo.
Los tiempos de espera de la carga son irrisorios… si está bien hecha, como todo en este mundo.
Sobre las nativas
Facebook pasó a nativa sí… no por ello mejoró la experiencia del usuario. Al igual que tantos otros, pensaron que el problema era el HTML y la solución la nativa… va a ser que no lo era!
Puedes aprovechar al 100% el dispositivo… si claro por poder… la realidad es que tu app nativa va a utilizar un % ridículo de las características del dispositivo… y nada que no tengas en híbrido.
Hay casos en los que la opción nativa es obligada… modelado 3D, realidad aumentada, VR … aunque la web tiene soluciones también para todo ello, a día de hoy son un comerecursos que no son viables (salvo excepciones) para producción.
Además de los problemas del coste, está el peligro de tener dos equipos tan diferenciados dedicándose a negocio, es muy fácil caer en dinámicas que afecten a la escalabilidad, adaptabilidad y a la tolerancia al cambio pudiendo convertir en un auténtico infierno la gestión del crecimiento, entre otras cosas.
En resumen
Ni de lejos es todo tan blanco o negro… era así hace varios años, pero se ha evolucionado mucho y hay que empezar a actualizar ciertas aserciones:
- Las soluciones web sí tienen notificaciones push.
- Las soluciones web sí tienen disponibilidad offline.
- Las soluciones web sí permiten medición avanzada del usuario.
- Las soluciones web sí permiten actualización de información en segundo plano.
- Las soluciones web sí interactuan con el hardware del dispositivo.
Optar por un tipo de app u otro ya no está tan ligado a las limitaciones sino que lo está más al modelo de negocio y al plan de crecimiento.
Nos vemos en 4 años 😉
Actualización: Y puestos ha comentar de Facebook… «abandonaron» el desarrollo híbrido por nativo… y acabaron sacando ReactJS y evolucionando el concepto con React Native… que a grosso modo es desarrollar una aplicación a lo híbrido (HTML, Javascript y esas cosas) y transpilarla en nativo… que es con lo que hacen sus cositas.
Buen artículo, más claro que el agua. Felicidades
Hola, podrias ayudarme con algo de html porfavor