Guides · 08
Performance und Wiedergabe
Wie Animated Arbeit pro Frame vermeidet, wie du prüfst, welchen Weg ein Element nimmt, und wie die Zahlen auf der Startseite gemessen wurden.
Drei Wiedergabewege
Animated wählt pro Eigenschaft einen Weg. Die API ändert sich mit dem Weg nicht.
| Weg | Wann | Arbeit pro Frame |
|---|---|---|
| browser | Endliche transform- und opacity-Bewegung auf Animated.<tag>-Elementen, Federn eingeschlossen | Keine im JavaScript der Seite |
| css | Exakte Kurven, die der Browser mit geteilten CSS-Keyframes ausdrücken kann | Keine im JavaScript der Seite |
| js | Normale style-Variablen, Eingaben, eigene Berechnungen und sequence-Grenzen | Ein Schreibvorgang pro Wert, kein React-Render |
Ein Wert, viele Elemente
Ableitungen eines Hook-Werts sind calc()-Ausdrücke. Mit scope treibt ein Variablen-Schreibvorgang pro Frame jedes Element im Container an.
Beispiel wird vorbereitet…
Den Weg prüfen
inspect(element) gibt während eines echten Durchlaufs für jede animierte Eigenschaft den Driver und den Fallback-Grund zurück.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsStartet ab dem ersten Frame
Hält die Aufgabe, die eine Bewegung startet, den Main-Thread beschäftigt – etwa die Hydration oder ein großer Commit –, startet die Bewegung neu, sobald diese Arbeit endet, statt bereits fortgeschritten zu erscheinen. Ein Start auf einer ausgeblendeten Seite wird im Hintergrund fertig.
So wurden die Zahlen der Startseite gemessen
Jedes Szenario lief in einer frischen Seite nach einem Warm-up, mit drei aufgezeichneten Messungen; angegeben ist der Median. Die JavaScript-Zeit ist die Zeit in Animation-Frame-Callbacks, während die Bewegung läuft. Style, Layout und Paint sind nicht enthalten, weil der Browser sie bei jedem Ansatz erledigt – es ist also kein Maß für die gesamte CPU-Last oder die Bildrate.
Browser-Wiedergabe macht Layout, Paint, Compositing und Speicher nicht kostenlos. Miss den echten Bildschirm auf den Geräten, die du unterstützt.
| Szenario | Aufbau | Ergebnis |
|---|---|---|
| 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