Eliminar React.js de la base de código y adaptar Htmx para la interactividad de la UI (2023)

Sustituir SPAs al estilo React por HTMX y HTML renderizado en el servidor se presenta como una opción convincente para foros y sitios con mucho CRUD, donde la mayoría de las interacciones son simples y el tamaño de la carga y el tiempo hasta la interactividad importan más que un estado rico del lado del cliente. Los defensores destacan stacks más sencillos, mejor caché y cargas iniciales más rápidas, mientras que los críticos sostienen que HTMX escala mal para UIs complejas y muy interactivas, conduce a un “spaghetti” de atributos y repite problemas antiguos de la era de AngularJS. Muchos concluyen que HTMX funciona bien cuando el estado del lado del cliente es mínimo y las páginas son en gran medida documentales, pero los frameworks de estilo React/Vue siguen siendo más adecuados para interfaces sofisticadas de tipo app.

Alcance de HTMX frente a frameworks React/SPA

  • Muchos ven HTMX como ideal para aplicaciones renderizadas en el servidor, con mucho contenido o de estilo CRUD (foros, UIs de administración, formularios, filtros, paginación).
  • Otros sostienen que los frameworks de estilo React/Vue/Solid son mejores para UIs complejas, muy interactivas y con estado (chat, notificaciones, editores, reproductores multimedia, DAWs).
  • Debate sobre si el frontend moderno se ha “estabilizado” en JSX; algunos dicen que sí (dominio de React/Solid), otros señalan frameworks importantes que no usan JSX por defecto.

Rendimiento, tráfico y caché

  • Comentarios a favor de HTMX: se envía menos JS, primer render más rápido, caché más simple de fragmentos HTML, mejor para dispositivos de gama baja y páginas de aterrizaje con mucho tráfico.
  • Los críticos afirman que React con SSR/hidratación y CDNs puede ser eficiente; la generación pesada de fragmentos HTML a escala (>10k req/s) puede resultar costosa para HTMX.
  • Un practicante encontró HTMX lento al devolver respuestas HTML grandes para filtros complejos; cambiar a Alpine + parciales redujo la carga útil y se sintió más rápido.

Gestión de estado y preocupaciones de “spaghetti”

  • Los detractores argumentan que los enfoques de HTMX/atributos se parecen a Angular 1.0: “codelets” dispersos, gestión de estado difícil y eventual “spaghettificación”.
  • Los defensores de HTMX responden que el estado del lado del cliente debe ser mínimo; el estado real vive en el servidor, y las actualizaciones HTML reflejan la verdad del servidor.
  • Otros informan de equipos que volvieron a React después de que HTMX se volvió difícil de gestionar, mientras que algunos dicen que los sistemas basados en HTMX siguen siendo más fáciles de mantener.

Límites de interactividad y soluciones

  • Puntos débiles citados: interacciones ricas dentro de la página (listas que se desplazan y se actualizan a mitad del scroll, preservación de la selección de texto, formularios facetados complejos).
  • Mitigaciones sugeridas: extensiones de morphing del DOM, swaps out-of-band, mezclar HTMX con pequeños componentes JS (Alpine, Web Components, Leaflet, etc.).
  • Algunos ven HTMX como incompleto para experiencias “tipo app”; otros recomiendan arquitecturas híbridas (HTMX para la mayoría de las páginas, “islas” de React/Vue para widgets pesados).

Casos de uso, herramientas y alternativas

  • Informes entusiastas de HTMX impulsando aplicaciones web completas e incluso PWA; el soporte offline requiere service workers y caché intensiva, lo que algunos consideran complicado.
  • Quejas sobre la débil composición de componentes de HTMX y la falta de herramientas tipo Storybook; se sugieren sistemas al estilo LiveView, Places.js, Pyview o frameworks SSR orientados a JS.
  • Varios subrayan que no existe una herramienta universalmente mejor; la elección correcta depende del nivel de interactividad, la complejidad del estado, la escala y las habilidades del equipo.