Guías · 08
Rendimiento y reproducción
Cómo evita Animated trabajo en cada fotograma, cómo comprobar qué camino usa un elemento y cómo se midieron las cifras de la portada.
Tres caminos de reproducción
Animated elige un camino por propiedad. La API no cambia según el camino.
| Camino | Cuándo | Trabajo por fotograma |
|---|---|---|
| browser | Movimiento finito de transform y opacity en elementos Animated.<tag>, resortes incluidos | Ninguno en el JavaScript de la página |
| css | Curvas exactas que el navegador puede expresar con keyframes CSS compartidos | Ninguno en el JavaScript de la página |
| js | Variables de style normales, entrada, cálculos propios y límites de sequence | Una escritura por valor, sin render de React |
Un valor, muchos elementos
Las derivaciones de un valor de hook son expresiones calc(). Con scope, una escritura de variable por fotograma mueve todos los elementos del contenedor.
Preparando el ejemplo…
Comprueba el camino
inspect(element) devuelve el driver y el motivo de fallback de cada propiedad animada durante una ejecución real.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsEmpieza desde el primer fotograma
Cuando la tarea que inicia un movimiento mantiene ocupado el hilo principal, como la hidratación o un commit grande, el movimiento se reinicia en cuanto termina ese trabajo en lugar de aparecer ya avanzado. Un inicio en una página oculta termina en segundo plano.
Cómo se midieron las cifras de la portada
Cada escenario se ejecutó en una página nueva tras un calentamiento, con tres muestras registradas, y se informa la mediana. El tiempo de JavaScript es el que se pasa dentro de los callbacks de animation frame mientras dura el movimiento. Excluye el estilo, el layout y el pintado, que el navegador hace con cualquier enfoque, así que no mide la CPU total ni la tasa de fotogramas.
La reproducción en el navegador no hace gratis el layout, el pintado, la composición ni la memoria. Mide la pantalla real en los dispositivos que soportas.
| Escenario | Configuración | Resultado |
|---|---|---|
| 400 Animated.div elements move translateX and fade in (timing, 1800 ms) | seed/pose/tempo on Animated.div; 800 browser animations | 0.00 ms |
| One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms) | transform and opacity as calc() of one CSS variable written on a scope element | 0.13 ms |
2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K