Dos versiones, un comportamiento

El mismo panel, escrito dos veces a partir de una especificación: una con React y otra sin ningún framework. Elige un escenario y las dos lo ejecutan a la vez, aquí en tu navegador.

Escenario para las dos versiones
Lector de pantalla y teclado en

Las dos versiones anuncian los cambios con regiones activas, así que un lector de pantalla oiría cada mensaje dos veces. Solo una versión a la vez es accesible con el teclado y las tecnologías de apoyo; la otra sigue visible.

¿Se comportan igual?

Esperando a que arranquen las dos versiones.

Un paso es cualquier cosa que una persona puede notar: una solicitud, un cambio de estado, una fase de carga, un anuncio o un movimiento del foco. El tiempo no cuenta; el orden y el contenido deben coincidir.

React

React 19, hooks y un reducer

Lista en
Midiendo…
JavaScript descargado
Midiendo…
Pasos en esta ejecución
0

Último anuncio: ninguno todavía

El teclado y el lector de pantalla están en esta versión.

TypeScript sin framework

Sin framework ni dependencias en ejecución

Lista en
Midiendo…
JavaScript descargado
Midiendo…
Pasos en esta ejecución
0

Último anuncio: ninguno todavía

El teclado y el lector de pantalla están en esta versión.

Medido en tu navegador en esta visita, con las dos versiones cargando a la vez. Las cifras cambian con el dispositivo, la red y la caché; recarga para medir de nuevo.

Al compilar

Tamaño del código y dependencias de cada versión, contados al generar esta página.
MedidaReactTypeScript sin framework
Líneas de código (no vacías)10631061
Archivos de código148
Dependencias en ejecuciónreact, react-domNinguna

Las dos versiones usan además la especificación compartida: 2212 líneas de datos, reglas, formatos y textos que ninguna repite.

Dónde costó más cada versión

Lo que una versión obtiene gratis y la otra tuvo que hacer a mano.
TemaReactTypeScript sin framework
Conservar el orden y las vistasGratis: el estado del componente sobrevive a una actualización de datos.Un pequeño objeto de memoria los guarda mientras se reconstruye el cuerpo.
Conservar el foco del tecladoGratis: un botón que se vuelve a renderizar es el mismo elemento.Los controles reconstruibles llevan una clave; el foco vuelve al que coincide.
Activar a tiempo los temporizadores de cargaNecesita useLayoutEffect; si no, el temporizador de 300 ms empieza un fotograma tarde.Se activan directamente en la misma tarea que el renderizado.
Tamaño de descargaEl runtime de React es la mayor parte del paquete.Solo se envía el propio panel.

Leer el registro completo de diferencias