Estado

Todos los sistemas operativosActualizado el 31 de octubre de 2026
console.logOperativo
Hace 90 díasUna llamada por fotograma modificado, ninguna en reposo.Hoy
console.clearUso poco frecuente
Hace 90 díasEn el primer fotograma, tras invalidate(), en reposo al acumular 100 fotogramas y al llegar a 300.Hoy
YogaOperativo
Hace 90 díasLayout flexbox con WebAssembly, pointScaleFactor 1.Hoy
Turbolog encoderOperativo
Hace 90 díasFiltro por hash de fila y codificación %c por longitud de racha.Hoy
DevTools ThrottlerRespetado
Hace 90 díasActualización del área visible limitada a 50 ms. Los fotogramas se espacian al menos 66 ms.Hoy
textjs.orgOperativo
Hace 90 díasDocumentación, Aprender, Playground, blog y tienda.Hoy

Prueba de rendimiento en vivo

El pipeline de @textjs/core se ejecuta en esta pestaña sobre un panel de 100×32 y escribe fotogramas en una consola en memoria.

Fotograma completo
—
layout + pintado + codificación
Escritura
—
edición de una fila
Fotograma inactivo
—
sin cambios
spans %c
—
3200 celdas

Se inicia automáticamente cuando la página está inactiva.

Historial de rendimiento

packages/core/test/perf.test.ts en cada hito, en el mismo equipo (Apple M5 Pro · Bun 1.4.4). Media de 1000 fotogramas.

VersiónFotograma completoEscrituraInactividadspans %c
0.1.0mar 2025 · @textjs/core · 7c91cea0.194ms0.065ms0.043ms205
0.2.0jul 2025 · textjs.org · 92437cc0.192ms0.067ms0.042ms205
0.3.0nov 2025 · 10× input · 8c2d1b10.205ms0.065ms0.043ms146
0.3.0nov 2025 · Mobile pass · e2e6e460.212ms0.067ms0.045ms146
0.4.0may 2026 · Zero-flash frames · f007ade0.184ms0.046ms0.028ms146
1.0.0oct 2026 · Text.js 1.0 · 57968b60.163ms0.011ms0.000ms149

Frontend de DevTools

bench/devtools en Chrome for Testing: repintados en blanco, fotogramas entregados y retraso de visualización, 5 s por ejecución. Cómo medimos.

ControladorFPSRepintados en blancoPintados / emitidosRetraso p50
Añadir al final (en producción)151.0%74 / 7510.4ms
Borrar en cada fotograma1570.6%70 / 7560.4ms
Añadir al final, sin pausas600.8%67 / 29531.2ms
Borrar en cada fotograma6081.1%45 / 3009.8ms

Incidentes anteriores

Más recientes primero. Las horas se indican en UTC.

octubre de 2026

  • Páginas atascadas bajo la cabecera en Safari para iOS27 oct – 28 oct 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto.

    2. En seguimiento

      Se ha desplegado una corrección. El anclaje de desplazamiento está desactivado (overflow-anchor: none). Seguimos supervisando.

    3. Identificado

      El título principal aún puede quedar fijado bajo la cabecera fija tras desplazarse hacia abajo y volver a subir. El anclaje de desplazamiento de Safari está ajustando la posición de desplazamiento.

    4. En seguimiento

      Se ha desplegado una corrección. Esos elementos ahora solo se desplazan horizontalmente, y scrollbar-gutter: stable solo se aplica a dispositivos con ratón.

    5. Identificado

      Las pestañas de archivos, los bloques de código y las tablas del texto tienen un desbordamiento vertical de 1 px por el subrayado de la pestaña activa, por lo que se desplazan en ambos ejes e iOS les asigna los gestos verticales destinados a la página. scrollbar-gutter: stable también provoca un salto en el primer desplazamiento en iOS.

    6. En investigación

      Estamos investigando informes de que no se puede volver al inicio de las páginas de textjs.org al desplazarse en Safari para iOS.

    Este incidente afectó a: textjs.org.

    Análisis posterior

    Las páginas de textjs.org no se mueven mientras cargan, así que el anclaje de desplazamiento no tenía nada que corregir. En Safari para iOS fijaba la sección principal bajo la cabecera fija e impedía volver al inicio al desplazarse. ?debug=scroll en textjs.org ahora muestra en tiempo real los eventos de desplazamiento, interacción táctil y cambio de tamaño e identifica quién origina cada llamada programática de foco o desplazamiento.

    Correcciones: 297c5d7, 55da525, 8424fcd · Registro de cambios: 1.0.0

  • Fallos en las pruebas de reglas de lint en CI23 oct 2026 · Resuelto
    1. Resuelto

      El comprobador ahora lee it.only bajo demanda, cuando una prueba llama a RuleTester.itOnly. Las pruebas de CI pasan.

    2. Identificado

      Bun lanza una excepción al leer it.only cuando la variable de entorno CI está definida. El comprobador de reglas asigna RuleTester.itOnly = it.only al importarse, por lo que falla al cargarlo.

    3. En investigación

      La suite de pruebas de eslint-plugin-textjs falla en CI antes de ejecutar ninguna prueba de reglas. Las ejecuciones locales pasan.

    Análisis posterior

    @typescript-eslint/rule-tester recibe sus funciones de prueba como propiedades estáticas de RuleTester. La corrección envuelve it.only en una función. Ningún paquete ni página se vio afectado.

    Corrección: eca3f78

  • Desplazamiento del layout en /playground y /opencode21 oct – 22 oct 2026 · Resuelto
    1. Resuelto

      El desplazamiento acumulado del layout es 0 en todas las rutas.

    2. En seguimiento

      Se ha desplegado una corrección. Ambas páginas comparten un layout de panel, y el tamaño se añade al final sin mover «Ajustar consola». Seguimos supervisando.

    3. Identificado

      El control de tamaño de la consola añade al final de su etiqueta el tamaño medido tras la hidratación (Fit console · 120×36), lo que mueve el nodo de texto «Ajustar consola». Las filas superior e inferior del panel también tienen alturas distintas en ambas páginas, por lo que el panel se vuelve a centrar al navegar.

    4. En investigación

      Nuestra auditoría de desplazamiento del layout registra un desplazamiento acumulado del layout de 0,0001 en /playground y /opencode. Todas las demás rutas que cubre registran 0. El panel de foco también se mueve al navegar entre ambas páginas.

    Este incidente afectó a: textjs.org.

    Análisis posterior

    El panel ahora tiene espacios superior e inferior de altura fija, y todas las demos reservan las mismas filas, por lo que cambiar de página o demo no mueve nada. El panel de conexión de OpenCode muestra una línea de estado en todos los estados, con un esqueleto hasta que se hidrata. apps/web/scripts/e2e-layout.mjs comprueba que los rectángulos sean idénticos entre rutas, demos, tamaños del área de visualización y estados de conexión.

    Corrección: 8f22b9b · Registro de cambios: 1.0.0

  • La barra lateral de la documentación desaparece al final de las páginas largas16 oct – 17 oct 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto.

    2. En seguimiento

      Se ha desplegado una corrección. Los capítulos de Aprender también renderizan el pie de página dentro de la columna de contenido. Seguimos supervisando.

    3. Identificado

      La barra lateral de capítulos de Aprender tiene el mismo problema.

    4. En seguimiento

      Se ha desplegado una corrección. Las páginas de documentación renderizan el pie de página dentro de la columna de contenido, por lo que el layout llega hasta el final de la página.

    5. Identificado

      La barra lateral usa position: sticky dentro del layout de la documentación, y el pie de página del sitio se renderiza después de ese layout. Un elemento fijo solo permanece anclado mientras su bloque contenedor está en pantalla, por lo que, cuando aparece el pie de página al desplazarse, arrastra consigo la barra lateral.

    6. En investigación

      Estamos investigando informes de que la barra lateral de la documentación desaparece al desplazarse hasta el final de las páginas largas.

    Este incidente afectó a: textjs.org.

    Análisis posterior

    Las páginas con una barra lateral fija (documentación y capítulos de Aprender) renderizan el pie de página en su columna de contenido. Las demás páginas mantienen el pie de página compartido.

    Corrección: 131ac96 · Registro de cambios: 1.0.0

  • Nombre de paquete textjs no disponible en npm14 oct – 15 oct 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto.

    2. En seguimiento

      El paquete del framework y la CLI ahora es @textjs/next, en el mismo ámbito que @textjs/core y @textjs/react. Las importaciones cambian de textjs a @textjs/next.

    3. Identificado

      El nombre textjs pertenece a otro paquete de npm desde el 25 de marzo de 2016.

    4. En investigación

      La publicación del paquete del framework textjs en npm falla con 403 Forbidden.

    Análisis posterior

    A partir de Text.js 1.0, las apps importan desde @textjs/next en lugar de textjs, y el puente de OpenCode es bunx @textjs/app proxy, que se ejecuta desde cualquier directorio.

    Text.js 1.0: Un cambio de nombre · Registro de cambios: 1.0.0

septiembre de 2026

  • Capas de pintura vacías en los saltos de fila15 sept – 16 sept 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto.

    2. En seguimiento

      Se ha desplegado una corrección. Los saltos de fila que no continúan un tramo ahora restablecen primero %c a un estilo vacío, para que DevTools emita un salto de línea sin estilo. Cada fotograma lleva una cortina.

    3. Identificado

      Cuando un tramo con estilo termina en un salto de fila, el \n se escribe dentro del span %c del tramo. DevTools divide el span en el salto de línea, y el resto vacío se convierte en un span display: inline-block con contain: paint, que obtiene su propia capa de pintura.

    4. En investigación

      Estamos investigando elementos <span> vacíos en la mayoría de los saltos de fila de los fotogramas de DevTools, y un span de cortina duplicado en algunos fotogramas.

    Este incidente afectó a: Turbolog encoder.

    Análisis posterior

    Los spans con el mismo estilo siguen fusionándose entre saltos de fila. La cortina también se ha movido a su propia línea: DevTools sitúa el enlace al código fuente (VM12:1) a la derecha de la primera línea de un mensaje, y una cortina en línea dejaba ese enlace junto a la fila 0, reduciendo su anchura.

    Registro de cambios: 1.0.0

agosto de 2026

  • Mayor latencia de visualización tras console.clear27 ago – 31 ago 2026 · Resuelto
    1. Resuelto

      La mediana del retraso de visualización en bench/devtools es de 10,4 ms. La corrección se incluye en Text.js 1.0.

    2. En seguimiento

      Se ha desplegado una corrección. Tras cualquier fotograma que limpie la consola, el renderizador espera 110 ms una sola vez, para que los fotogramas posteriores lleguen más de 50 ms después de la actualización anterior de DevTools y se procesen de inmediato.

    3. Identificado

      Tras una limpieza, DevTools inserta una fila «Se ha borrado la consola». Esta ocupa el turno inmediato del limitador y desplaza el siguiente fotograma al temporizador de 50 ms. Con fotogramas separados por 66 ms, todos los posteriores siguen usando ese temporizador.

    4. En investigación

      bench/devtools registra una mediana de retraso de visualización de 63 ms tras limpiar la consola. El retraso se mantiene en ese nivel en todos los fotogramas posteriores.

    Este incidente afectó a: DevTools Throttler, console.clear.

    Análisis posterior

    La entrada discreta sigue renderizándose de forma síncrona cuando el intervalo entre fotogramas lo permite.

    Romper el bloqueo de fase · Registro de cambios: 1.0.0

  • El indicador de carga desalinea las filas en la consola de DevTools11 ago – 12 ago 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto. La corrección se incluye en Text.js 1.0.

    2. En seguimiento

      Se ha desplegado una corrección. El indicador de carga dots predeterminado ahora dibuja bloques de cuadrante (▘ ▝ ▗ ▖), cada uno de una celda en Menlo. Los fotogramas braille están disponibles con variant="braille" para terminales.

    3. Identificado

      El indicador de carga predeterminado dibuja patrones braille (de U+2800 a U+28FF). Text.js mide cada uno como una celda, pero Menlo, la fuente de la consola de DevTools en macOS, no tiene glifos braille. El glifo de sustitución es más ancho que una celda y desplaza el resto de la fila a la derecha.

    4. En investigación

      En macOS, las filas que contienen un <Spinner> se desalinean en DevTools. Las celdas a la derecha del indicador de carga quedan fuera de la cuadrícula.

    Este incidente afectó a: console.log.

    Análisis posterior

    LineChart dibuja puntos de cuadrante de forma predeterminada por el mismo motivo. Braille está disponible con marker="braille".

    Registro de cambios: 1.0.0

mayo de 2026

  • Aumento de renderizados en blanco en la consola de DevTools5 may – 19 may 2026 · Resuelto
    1. Resuelto

      La corrección se ha publicado en Text.js 0.4.0. Los renderizados en blanco están en el 1,0 %, todos en el primer fotograma.

    2. En seguimiento

      textjs.org ahora añade los fotogramas al final en lugar de limpiar la consola. Un span de cortina de anchura cero mantiene los fotogramas anteriores fuera de la vista, y los fotogramas se separan al menos 66 ms.

    3. Identificado

      DevTools aplica console.clear() de forma síncrona, pero limita el renderizado de mensajes nuevos a intervalos de 50 ms. Cada fotograma elimina el anterior de inmediato y se renderiza hasta 50 ms después. En bench/devtools, un panel de 100×32 quedó en blanco en el 70,6 % de los renderizados de DevTools a 15 fps y en el 81,1 % a 60 fps.

    4. En investigación

      Estamos investigando informes de que la consola de DevTools queda brevemente vacía entre fotogramas bajo carga.

    Este incidente afectó a: console.clear, DevTools Throttler.

    Análisis posterior

    Desde 0.1.0, Turbolog enviaba un console.clear() y un console.log() por cada fotograma modificado. bench/devtools, que controla la interfaz real de DevTools en Chrome for Testing, se creó para medir este incidente y produjo las cifras de la tabla de la interfaz de DevTools anterior.

    Corrección: f007ade · Turbolog: eliminar el parpadeo · Registro de cambios: 0.4.0

abril de 2026

  • Rutas de archivos en los fotogramas de la consola con estilo de enlace14 abr – 15 abr 2026 · Resuelto
    1. Resuelto

      Este incidente se ha resuelto.

    2. En seguimiento

      Se ha desplegado una corrección. El codificador inserta un word joiner (U+2060) en los textos path:line, //host:port y data:, salvo que la celda permita enlaces.

    3. Identificado

      DevTools convierte las URL y los textos path:line y //host:port de los mensajes de la consola en enlaces y les impone los colores de su tema. El codificador ya dividía :// y www., pero path:line y //host:port tras un esquema siguen coincidiendo.

    4. En investigación

      Textos como src/app.tsx:12 y http://localhost:3000 se renderizan con el color de enlace de DevTools en lugar de su estilo %c.

    Este incidente afectó a: Turbolog encoder.

    Análisis posterior

    :// y www. llevan un word joiner desde 0.1.0. Las celdas que deben seguir siendo clicables establecen el atributo allow-link y se escriben sin cambios.

    Registro de cambios: 0.4.0

noviembre de 2025

  • Pulsaciones con retraso en las apps de consola4 nov – 18 nov 2025 · Resuelto
    1. Resuelto

      La corrección se ha publicado en Text.js 0.3.0.

    2. En seguimiento

      Se ha desplegado una corrección. La entrada discreta, como una pulsación o un pegado, ahora se renderiza de forma síncrona en la misma tarea. Las demás actualizaciones siguen confirmándose en requestAnimationFrame.

    3. Identificado

      Cada actualización, incluida una pulsación, espera al siguiente requestAnimationFrame antes de que React confirme los cambios y se registre el fotograma.

    4. En investigación

      La escritura en las apps de consola va por detrás del teclado, de forma más visible en OpenCode en textjs.org.

    Este incidente afectó a: textjs.org.

    Análisis posterior

    Las pulsaciones ya no esperan al siguiente fotograma de animación. Las confirmaciones que no proceden de la entrada, como los temporizadores y los datos en streaming, siguen agrupándose por fotograma de animación.

    Corrección: 8c2d1b1 · Registro de cambios: 0.3.0