Lo que necesitamos en lugar de "Web Components"
Las críticas a Web Components se centran en su complejidad, su semántica débil y su mala adaptación a cómo los frameworks modernos de JavaScript construyen realmente las interfaces, y muchos sostienen que añaden especificaciones frágiles sin resolver problemas centrales como la gestión de estado, la reconciliación y el estilo. En su lugar, los comentaristas piden que los navegadores estandaricen primitivas de nivel más bajo en torno a las que los desarrolladores ya convergen —como mejor diffing del DOM, reactividad y widgets de UI—, mientras otros defienden Web Components (a menudo mediante bibliotecas como Lit) como una forma útil e independiente del framework para encapsular elementos interactivos. El intercambio se amplía a preocupaciones sobre la rotación del ecosistema JavaScript, estándares superpuestos como Observables y signals, y si la web debería moverse hacia modelos de aplicación más parecidos a los nativos o binarios.
Estándares, navegadores y gobernanza
- Debate sobre para quién son realmente los Web Components: desarrolladores de aplicaciones vs. ingenieros de navegadores/estándares.
- Desacuerdo sobre los papeles de W3C vs WHATWG: algunos ven a W3C formalizando las especificaciones de facto de WHATWG; otros destacan fricciones (instantáneas de HTML, privacidad, cambios de especificación que rompen contenido existente).
- Preocupación de que las especificaciones HTML y los procesos relacionados se hayan vuelto desordenados, lentos y, a veces, rompan la compatibilidad hacia atrás.
Web Components: beneficios y escepticismo profundo
- A los defensores les gusta:
- Poder definir elementos personalizados que funcionen entre frameworks y en HTML puro.
- Encapsulación mediante Shadow DOM y módulos ES.
- Uso en bibliotecas de componentes y aplicaciones complejas (a menudo con Lit) sin pasos de compilación, en principio.
- Los críticos argumentan:
- El diseño ignoró la experiencia real de los frameworks y la evolución del entorno de usuario.
- Las especificaciones son complejas, frágiles y generan más especificaciones para arreglar problemas específicos de Web Components.
- Mala adaptación como bloques de construcción fundamentales para frameworks modernos (renderizado eager, historia de SSR débil, composición incómoda, sorpresas de Shadow DOM).
- Los líderes del ecosistema que antes impulsaban Web Components se han alejado de ellos.
- Un nicho en el que muchos coinciden en que ayudan: widgets encapsulados y controles de formulario personalizados, algo así como iframes más seguros y pequeños.
Frameworks, rotación del ecosistema y compatibilidad
- Fuerte frustración con la complejidad del frontend en JS: muchas capas (bundlers, linting, TS, build/transpile) y cambios de paradigma frecuentes (classes → hooks → server components).
- Otros responden que todos los ecosistemas evolucionan, y que JS no es especialmente malo comparado, por ejemplo, con el empaquetado de Python o con cambios que rompen en otras pilas.
- Preocupación más amplia de que las bibliotecas y herramientas de JS rara vez priorizan interfaces estables y compartidas, lo que lleva a “incompatibilidad interna” y actualizaciones dolorosas.
Reactividad, observables y primitivas superpuestas
- Hay acuerdo en que la “reactividad” y la reconciliación son problemas reales, pero aún no existe consenso sobre un diseño.
- Signals, observables, streams y otras primitivas reactivas corren el riesgo de convertirse en estándares superpuestos e incompatibles.
- Algunos celebran observables a nivel del navegador; otros temen la proliferación de formas casi duplicadas de “enterarse de los cambios”.
WASM, aplicaciones nativas y el papel de la web
- Algunos desearían que los navegadores simplemente ejecutaran binarios nativos; otros señalan los fracasos y problemas de seguridad de los plugins del pasado.
- Hay consenso en que las operaciones del DOM dominan el rendimiento de la UI; WASM ayuda sobre todo para cómputo pesado, no para UIs reactivas típicas.
- Se ve que las herramientas para WASM mejoran, pero siguen siendo inferiores a las nativas; existen flujos de trabajo de cross-compiling, aunque se sienten torpes.