Primero, ¿qué es un SPA?, bueno la forma más simple de explicarlo es:
Una web que solo tiene una página y en esta página se simula una app nativa tanto de escritorio como móvil. Y todo se maneja dentro de esta única página al igual que una aplicación nativa.
Esto fue posible gracias a la mejora de los motores de javascript en los exploradores y al boom de frameworks como Angular a los inicios y luego React, que predomina hasta hoy.
Hoy es parte común que los nuevos frameworks y herramientas apoyen este tipo de aplicaciones, si bien todavía la mayoría de las web disponibles son de navegación, hoy por hoy las grandes web apps son parte de este cambio y lo seguiremos viendo ya que es el presente.
Ahora, yo no soy la persona más experimentada en SPA, pero sí tengo vasta experiencia en desarrollo web en general, y personalmente no creí en esta forma de hacer FrontEnd cuando la conocí. Me pareció una mala idea, y odié la posibilidad de trabajar con ellas en ese entonces y era principalmente por la desconfianza en los exploradores de Internet.
Para mí la idea de dejar que estos exploradores tan caóticos en ese momento manejen la data y la memoria, el confiar en sus estados y diferencias a su antojo; a mí no me parecía correcto. Muchos exploradores en ese entonces incluso limitaban las pestañas, cerraban estas o las recargaban sin advertencia alguna, otros por alguna configuración por defecto de uso de memoria o tiempo idle en espera para optimizar recursos y no quiero hablar siquiera de los escenarios donde había un crash por solo solo leer un archivo.
¡No lo sé!, no era algo que estaba dispuesto aceptar ciegamente y tampoco consideré que era algo digno de invertir mi tiempo.
Han pasado 7 años desde entonces, y hoy las grandes web apps dieron y están dando el paso a PWA, incluso las PWA están gozando del apoyo de Apple con Safari (aunque no totalmente, pero algo es algo), y viendo todos estos cambios, la mejora de los recursos, el motor mejorado de javascript que continua evolucionando y siendo adaptado en los browsers populares, la adopción de ECMAScript, el boom de React, React Native, Electrón… Siento que la web encontró el camino hacia esta generación cuyo foco de acceso es un dispositivo móvil, la web tiene una mejor forma de llegar al mundo de las apps sin estos feos híbridos que te encapsulan.
Ahora mismo pienso que el usar SPA y PWA solo aporta a toda aplicación web.
Ya no tengo razones para no apoyar las SPA, los browser han crecido en torno a ellas y nuevas y mejores opciones de frameworks han aparecido. El desarrollo actual continuo de las PWA sirve de apoyo así que desde mi punto de vista el camino esta claro para este tipo de aplicaciones en especial si se espera manejar multiplataforma.
Pronto veremos cambios en esto y versiones de WebAssembly para hacer SPA, así que es bastante prometedor, tanto si lo intentan vender como un SPA diferente como si solo siguen el trend de las PWA.