No deberías empezar con una SPA

Las aplicaciones de una sola página (SPA) están siendo reevaluadas como la opción predeterminada para nuevos proyectos web, y muchos ingenieros argumentan que los enfoques modernos renderizados en servidor (a menudo mejorados con herramientas como htmx, Hotwire o LiveView) ahora ofrecen una interactividad comparable con menos complejidad y sobrecarga operativa. Quienes defienden las SPA señalan ventajas para interfaces ricas y de larga duración, comportamiento offline o local-first, y APIs compartidas entre clientes web y móviles, mientras que los críticos destacan bundles de JavaScript más pesados, tooling frágil, rendimiento más lento en redes deficientes y un acoplamiento entre frontend y backend más estrecho de lo que se suele admitir. Un tema recurrente es que la arquitectura debe seguir las necesidades del producto y la estructura del equipo: las SPA pueden ser la opción adecuada para apps complejas y densas en datos con sesiones de usuario largas, pero se consideran excesivas para sitios más simples o equipos pequeños que se benefician de UIs integradas y dirigidas por el servidor.

Cuándo tiene sentido una SPA

  • Varios comentaristas sostienen que las SPA están justificadas para UIs complejas y muy interactivas (por ejemplo, paneles de administración ricos, apps con muchos datos, escenarios local-first/offline-first).
  • Otros sugieren que las SPA solo deberían elegirse cuando la profundidad de la sesión o el “holotype” de la app muestran que los usuarios se quedan e interactúan en profundidad, no para blogs sencillos o páginas de marketing.
  • Algunos creen que las SPA se volverán más simples gracias a herramientas más nuevas (Remix, Livewire, frameworks WASM como Blazor/Leptos).

Acoplamiento frente a desacoplamiento de frontend y backend

  • Un bando dice que el desacoplamiento الحقيقي es imposible: los frontends siempre dependen de las estructuras de datos del backend; los intentos de ocultar este límite son engañosos.
  • Otro bando informa de éxito con APIs públicas consumidas tanto por la UI como por usuarios avanzados, diseñadas desde el principio, con APIs simuladas que permiten trabajar en paralelo.
  • Hay un argumento recurrente de que el “backend for frontend” (endpoints por vista) reintroduce un acoplamiento estrecho incluso en sistemas nominalmente desacoplados.

Preocupaciones sobre tooling, JavaScript y escalado

  • Muchas quejas se centran en el tooling de las SPA: bundling, tiempos de compilación, invalidación de caché y bundles enormes que crecen con las funcionalidades y el tamaño del equipo.
  • Algunos argumentan que esto es inherente a las SPA; otros dicen que herramientas como esbuild, configuraciones más simples o no usar frameworks pesados mitigan el problema.
  • Debate sobre el propio JavaScript: algunos lo ven intrínsecamente desordenado; otros dicen que el “spaghetti” se debe más a las prácticas del equipo que a la elección del lenguaje.

UX, rendimiento y condiciones de red

  • Las voces a favor de las SPA citan navegaciones posteriores más rápidas, menos transferencia de datos mediante JSON, comportamiento adaptativo y mejores oportunidades para soporte offline y UI optimista.
  • Los críticos responden que los grandes bundles de JS perjudican la carga inicial, especialmente en redes lentas y dispositivos débiles, y que muchas SPA fallan de forma grave y opaca bajo problemas de red.
  • Hay desacuerdo sobre si las SPA realmente envían menos datos que HTML una vez que se consideran la compresión, el chrome de la interfaz y el sobrefetching.

Estructura organizativa, equipos y cultura

  • Algunos dicen que la arquitectura sigue naturalmente el organigrama (Ley de Conway); las divisiones SPA suelen reflejar equipos separados de frontend y backend.
  • Otros argumentan que elegir la arquitectura en función de la estructura organizativa es arriesgado; los flujos full-stack con UIs renderizadas en servidor y estrechamente acopladas pueden ser más productivos para equipos pequeños.
  • Críticas culturales: las SPA surgieron en parte porque los desarrolladores de frontend escapaban de frameworks centrados en backend, pero también por seguir modas y por adopción de “cargo cult”.

APIs, móvil y enfoques alternativos

  • Un lado sostiene que las apps móviles hacen que las APIs sean obligatorias de todos modos, por lo que la reutilización de SPA tiene sentido.
  • Otros responden que, en la práctica, móvil y web a menudo divergen lo suficiente como para que las APIs compartidas no aporten mucho.
  • Alternativas como htmx, Hotwire/Turbo, LiveView, Livewire y frameworks clásicos (Django/Rails/Laravel) se citan con frecuencia como opciones más simples y productivas que no son SPA.