Skip to content

La nueva herramienta de Vercel pone fin al infierno de la terminal

Durante años, las terminales web se sintieron defectuosas, obligando a los desarrolladores a luchar con selecciones de texto torpes y funciones de búsqueda. wterm de Vercel soluciona esto al abandonar el canvas por HTML puro, y los resultados son revolucionarios.

Hero image for: La nueva herramienta de Vercel pone fin al infierno de la terminal
💡

Resumen / Puntos clave

Durante años, las terminales web se sintieron defectuosas, obligando a los desarrolladores a luchar con selecciones de texto torpes y funciones de búsqueda. wterm de Vercel soluciona esto al abandonar el canvas por HTML puro, y los resultados son revolucionarios.

La prisión del canvas en las terminales web

Durante años, xterm.js ha reinado como el estándar indiscutible para las terminales web. Los IDEs en la nube como GitHub Codespaces, las herramientas de gestión de infraestructura como Portainer, e incluso los entornos de escritorio como VS Code integran universalmente esta biblioteca, convirtiéndola en la solución de facto para incrustar interfaces de línea de comandos en navegadores. Su presencia omnipresente consolidó su estatus a pesar de sus limitaciones inherentes.

Sin embargo, la elección de diseño fundamental de xterm.js —renderizar la salida de la terminal a un elemento canvas de HTML— presenta un obstáculo técnico significativo. Este canvas actúa como una 'caja negra' visual para el navegador, ocultando eficazmente el contenido de texto subyacente. En consecuencia, el navegador no puede interpretar ni interactuar de forma nativa con los caracteres mostrados.

Por lo tanto, los desarrolladores que construyen con xterm.js deben reimplementar manualmente las funcionalidades básicas del navegador. Características esenciales como la selección de texto, las operaciones de "buscar" y los mecanismos familiares de copiar y pegar requieren código personalizado, a menudo complejo y a medida. Esta reingeniería repetitiva de interacciones centrales introduce inconsistencias y potencial de errores en diferentes implementaciones.

Esta restricción arquitectónica impacta directamente la experiencia del usuario y la accesibilidad. Los usuarios a menudo encuentran una interacción de texto torpe y no nativa, donde seleccionar o copiar texto se siente engorroso y poco fiable. Fundamentalmente, los lectores de pantalla tienen dificultades para interpretar el contenido renderizado en el canvas, limitando severamente la accesibilidad para usuarios con discapacidad visual y no logrando proporcionar una sensación nativa y fluida.

La apuesta radical de wterm: DOM-First

El wterm de Vercel introduce un paradigma radicalmente diferente para las terminales web, rompiendo fundamentalmente con el modelo centrado en el canvas que ha dominado el espacio durante mucho tiempo. A diferencia de xterm.js, que renderiza píxeles en un canvas aislado, wterm renderiza directamente la salida de la terminal como elementos HTML estándar dentro del Document Object Model. Este cambio arquitectónico significa que la terminal no es una superficie de dibujo separada y encapsulada, sino un componente intrínseco y totalmente accesible de la propia página web, integrado sin problemas con las capacidades nativas del navegador.

Esta audaz apuesta DOM-first desbloquea inmediatamente características críticas de experiencia de usuario que antes eran una lucha para los emuladores basados en canvas, a menudo requiriendo reimplementaciones complejas y defectuosas. Los desarrolladores obtienen: - Selección de texto nativa - Funcionalidad de búsqueda del navegador Ctrl+F lista para usar - Operaciones de copiar y pegar sin interrupciones - Soporte completo para lectores de pantalla

Estas interacciones esenciales ahora funcionan de forma inherente, sin requerir código adicional. Esto elimina la necesidad de que los desarrolladores recreen minuciosamente funcionalidades a nivel de navegador, lo que con frecuencia resultaba en experiencias de usuario inconsistentes o subóptimas en las terminales web tradicionales.

La base del front-end responsivo de wterm es un backend hipereficiente escrito en Zig. Este código base compacto se compila en un binario WebAssembly de apenas 12KB, asegurando una sobrecarga mínima y una carga rápida. El motor analiza inteligentemente las secuencias de escape de la terminal entrantes, asegurando que solo vuelve a renderizar las filas específicas que han cambiado durante cada fotograma. Este pipeline de renderizado altamente optimizado permite a wterm mantener un rendimiento fluido incluso con herramientas de línea de comandos exigentes y de alta actualización como `htop`, convirtiéndola en una solución verdaderamente viable para aplicaciones complejas directamente en el navegador.

Poténcialo: La opción del motor Ghostty Engine

Aunque el Zig core predeterminado de `wterm` ofrece una eficiencia impresionante para operaciones básicas de terminal, lograr una representación pixel-perfecta y una compatibilidad impecable con aplicaciones complejas exige una ingeniería más robusta. Aquí es donde entra en juego el backend opcional `wterm-ghostty`, ofreciendo una mejora significativa para escenarios exigentes.

El paquete `wterm-ghostty` reemplaza el ligero Zig core por libghostty, el mismo potente motor de renderizado que impulsa el terminal nativo Ghostty. Esta integración aporta un nivel de fidelidad nunca antes visto en terminales web, permitiendo: - Representación de texto pixel-perfecta - Precisión de color superior y soporte para color verdadero de 24 bits - Ejecución fluida de aplicaciones complejas como Vim, Neovim e incluso `htop`

Esta capacidad mejorada conlleva una compensación crucial en el tamaño del binario. El Zig core minimalista, escrito en Zig, se compila en un binario WebAssembly de apenas 12KB, lo que hace que `wterm` sea increíblemente ligero. En contraste, el backend `wterm-ghostty`, que aprovecha `libghostty`, infla el binario WASM a aproximadamente 400KB. Esto presenta a los desarrolladores una clara elección: priorizar la eficiencia minimalista para casos de uso más simples u optar por la máxima fidelidad y compatibilidad al ejecutar un entorno de desarrollo completo en el navegador. Se pueden encontrar más detalles técnicos en la página de GitHub del proyecto: vercel-labs/wterm: A terminal emulator for the web - GitHub.

El veredicto: ¿Es un asesino de xterm.js?

Enfrentar a wterm contra el venerable `xterm.js` revela una clara división generacional. Durante más de una década, `xterm.js` ha sido el estándar indiscutible, impulsando desde VS Code hasta GitHub Codespaces con su estabilidad probada en batalla y su vasto ecosistema de plugins. Su madurez lo convierte en una opción pragmática y de bajo riesgo para la mayoría de los desarrolladores.

Sin embargo, `wterm` ofrece una experiencia de usuario fundamentalmente superior, aprovechando su renderizado DOM-first para la selección de texto nativa, la búsqueda del navegador y el soporte crítico para lectores de pantalla, características que `xterm.js` ha luchado por emular durante mucho tiempo. Este cambio arquitectónico significa que la salida del terminal es simplemente HTML, otorgando características del navegador de forma gratuita.

Mientras que otros proyectos como Coder's Ghostty Web también aprovechan el potente motor `libghostty`, a menudo conservan el enfoque de canvas de `xterm.js`. `wterm` se distingue por incrustar verdaderamente el terminal como HTML nativo, convirtiéndolo en un elemento web más, no en una capa de canvas separada.

Todavía incipientes, `wterm` y su backend opcional `wterm-ghostty` no están exentos de imperfecciones. El Zig core de 12KB, aunque notablemente eficiente, puede requerir la opción `libghostty` de 400KB para una compatibilidad total con el terminal, especialmente con aplicaciones complejas como Neovim u OpenCode.

Sin embargo, para nuevos proyectos web que priorizan una sensación verdaderamente nativa y accesibilidad desde cero, `wterm` presenta una alternativa convincente y moderna. `xterm.js` sigue siendo la opción más segura y establecida para la integración de sistemas heredados, pero `wterm` aborda de manera decisiva un problema de una década con una solución elegante y con visión de futuro.

Preguntas Frecuentes

¿Qué es wterm de Vercel?

wterm es un emulador de terminal moderno, basado en web, de Vercel que renderiza la salida directamente al DOM como HTML, en lugar de usar un elemento canvas como las soluciones tradicionales.

¿En qué se diferencia wterm de xterm.js?

La principal diferencia es la tecnología de renderizado. wterm utiliza el DOM (HTML), lo que proporciona selección de texto nativa, búsqueda del navegador y accesibilidad de forma gratuita. xterm.js renderiza en un canvas, lo que requiere que estas características se reimplementen en JavaScript.

¿Cuál es el papel de Ghostty en wterm?

wterm ofrece un backend opcional de alta fidelidad impulsado por libghostty, el mismo motor que la terminal nativa Ghostty. Esto proporciona una precisión de renderizado y compatibilidad superiores, especialmente para UIs de terminal complejas, a costa de un tamaño de archivo mayor.

¿Con qué está construido wterm?

El núcleo de wterm está escrito en el lenguaje de programación Zig y compilado a un binario WebAssembly (WASM) diminuto (~12KB), lo que lo hace extremadamente ligero y de alto rendimiento.

One weekly email of tools worth shipping. No drip funnel.

one email per week · unsubscribe in two clicks · no third-party tracking

Preguntas frecuentes

El veredicto: ¿Es un asesino de xterm.js?
Enfrentar a wterm contra el venerable `xterm.js` revela una clara división generacional. Durante más de una década, `xterm.js` ha sido el estándar indiscutible, impulsando desde VS Code hasta GitHub Codespaces con su estabilidad probada en batalla y su vasto ecosistema de plugins. Su madurez lo convierte en una opción pragmática y de bajo riesgo para la mayoría de los desarrolladores.
¿Qué es wterm de Vercel?
wterm es un emulador de terminal moderno, basado en web, de Vercel que renderiza la salida directamente al DOM como HTML, en lugar de usar un elemento canvas como las soluciones tradicionales.
¿En qué se diferencia wterm de xterm.js?
La principal diferencia es la tecnología de renderizado. wterm utiliza el DOM , lo que proporciona selección de texto nativa, búsqueda del navegador y accesibilidad de forma gratuita. xterm.js renderiza en un canvas, lo que requiere que estas características se reimplementen en JavaScript.
¿Cuál es el papel de Ghostty en wterm?
wterm ofrece un backend opcional de alta fidelidad impulsado por libghostty, el mismo motor que la terminal nativa Ghostty. Esto proporciona una precisión de renderizado y compatibilidad superiores, especialmente para UIs de terminal complejas, a costa de un tamaño de archivo mayor.
¿Con qué está construido wterm?
El núcleo de wterm está escrito en el lenguaje de programación Zig y compilado a un binario WebAssembly diminuto , lo que lo hace extremadamente ligero y de alto rendimiento.
🚀Descubre más

Mantente a la vanguardia de la IA

Descubre las mejores herramientas de IA, agentes y servidores MCP seleccionados por Stork.AI.

P.S. ¿Construiste algo que vale la pena usar? Publícalo en Stork — $49

Volver a todas las publicaciones