מדריכים · 08
ביצועים וניגון
איך Animated נמנע מעבודה בכל פריים, איך לבדוק באיזה מסלול אלמנט משתמש, ואיך נמדדו המספרים בדף הבית.
שלושה מסלולי ניגון
Animated בוחר מסלול לכל מאפיין. ה־API לא משתנה עם המסלול.
| מסלול | מתי | עבודה לפריים |
|---|---|---|
| browser | תנועה סופית של transform ו־opacity על אלמנטים של Animated.<tag>, כולל קפיצים | אין, ב־JavaScript של העמוד |
| css | עקומות מדויקות שהדפדפן יכול לבטא עם keyframes משותפים של CSS | אין, ב־JavaScript של העמוד |
| js | משתני style רגילים, קלט, חישובים מותאמים וגבולות של רצפים | כתיבה אחת לכל ערך, בלי רינדור React |
ערך אחד, אלמנטים רבים
נגזרות של ערך hook הן ביטויי calc(). עם scope, כתיבת משתנה אחת לפריים מניעה כל אלמנט במכל.
מכין את הדוגמה…
לבדוק את המסלול
inspect(element) מחזיר את ה־driver ואת סיבת ה־fallback לכל מאפיין מונפש במהלך ריצה אמיתית.
import { inspect } from '@kkwaenggwari/animated';
console.table(inspect(element));
// property driver reason
// transform browser null
// opacity css null
// --level js css-variable-requires-jsמתחיל מהפריים הראשון
כשהמשימה שמתחילה תנועה מעסיקה את ה־main thread, כמו hydration או commit גדול, התנועה מתחילה מחדש כשהעבודה הזו נגמרת במקום להופיע כבר מתקדמת. התחלה בעמוד מוסתר מסתיימת ברקע.
איך נמדדו המספרים בדף הבית
כל תרחיש רץ בעמוד חדש אחרי חימום אחד, עם שלוש דגימות מוקלטות, ומדווח החציון. זמן JavaScript הוא הזמן בתוך callbacks של animation frame בזמן שהתנועה רצה. הוא לא כולל style, layout ו־paint, שהדפדפן מבצע בכל גישה, ולכן אינו מדד ל־CPU כולל או לקצב פריימים.
ניגון בדפדפן לא הופך את layout, paint, compositing והזיכרון לחינמיים. מדדו את המסך האמיתי על המכשירים שאתם תומכים בהם.
| תרחיש | הגדרה | תוצאה |
|---|---|---|
| 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