
למה Linear כל כך מהיר: ניתוח טכני
ניתוח טכני מסביר כיצד Linear שומר על עדכוני ממשק בסדר גודל של אלפיות שנייה: מסד הנתונים חי בדפדפן, השינויים מיושמים מקומית, והאפליקציה שולחת פחות קוד ביותר חלקים כדי להיראות מיידית.
עדכון משימה ב-Linear אורך כמה אלפיות שנייה, בעוד אפליקציית CRUD מסורתית עושה את אותו דבר בכ-300 מ"ש. ניתוח טכני שפורסם ב-performance.dev מסביר את הטכניקות שמאחורי התחושה הזו ומדגיש שאין "כדור כסף" סודי. המחבר מבהיר כי מעולם לא עבד ב-Linear ולא ראה את הקוד שלה.
מסד נתונים בדפדפן
רוב אפליקציות הרשת פועלות באותו לופ: המשתמש לוחץ, הדפדפן שולח בקשת HTTP, השרת שואל מסד נתונים, והממשק ממתין מאחורי ספינר כמה מאות מילישניות. Linear הופכת את הסדר: מסד הנתונים שממנו קורא הממשק חי בדפדפן, ב-IndexedDB — שינויים מיושמים קודם מקומית, ואז נשלחים באופן אסינכרוני לשרת, שמשדר דלתות לשאר הלקוחות דרך WebSocket.
בפועל שינוי הוא שתי שורות: issue.title = "Faster app launch" מעדכן מאגר בזיכרון (אובייקטים נצפים של MobX), ו-issue.save() מכניס לתור טרנזקציה שמנוע הסנכרון מאגד ושולח. הממשק מתרענן באופן סינכרוני מהמצב המקומי, כך שאין על מה לחכות. אחד ממייסדי Linear, טואומאס, אמר בוועידה ב-2024 ש"השורות הראשונות של הקוד" שכתב היו מנוע הסנכרון. רוב הצוותים לא זקוקים למנוע כזה: TanStack Query או SWR עם עדכונים אופטימיים מגיעים קרוב למדי.
טעינה ראשונה שמרגישה מיידית
המהירות מתחילה עוד בשלב הבנייה. Linear כתבה מחדש את שרשרת הבנייה ארבע פעמים — Parcel, Rollup, Vite, Rolldown — בכל פעם כדי לשלוח פחות JavaScript ו-CSS. לפי נתוני החברה: 50% פחות קוד, 30% קטן יותר אחרי דחיסה, טעינת עמודים עם מטמון קר ב-10–30% מהירה יותר, ירידה של 59% בזמן לציור הראשון של תצוגת המשימות הפעילות ב-Safari, וצמצום של 70–80% בשימוש בזיכרון. רוב זה הגיע מנטישת דפדפנים ישנים, סילוק קוד מת ופיצול קוד אגרסיבי.
למרות זאת Linear עדיין שולחת כ-21 MB של JavaScript ממוזער, מפוצל למאות חלקים ברמת המסלולים שנטענים לפי דרישה. כדי למנוע מפל של ייבואים, ה-HTML שלה מצהיר על רמזי modulepreload, כך שהדפדפן שולח את כל הבקשות במקביל עוד לפני שהקוד רץ.
אנימציה ופרטים אחרונים
אנימציה היא השכבה האחרונה. בגיליון הסגנונות של Linear המשכים קצרים: 0.1 שניות למעברים מהירים, 0.25 לשגרתיים, 0.35 לאיטיים, ודעיכת הדגשה של 0.15 שניות — מתחת ל-200 מ"ש של Material ולכ-350 מ"ש של קפיץ ב-iOS. כניסה ויציאה אינן סימטריות: הדגשות, חלוניות קופצות ופאנל הסוכן מופיעים מיד ודועכים תוך 150 מ"ש. התנועה בדרך כלל מצביעה על מקור — למשל חלונית הסטטוס נפתחת מתוך תג הסטטוס.
אין כדור כסף
מסקנת הניתוח היא שאף החלטה בודדת לא הופכת אפליקציה למהירה. המודל של Linear הוא כזה: השרת הוא יעד סנכרון ולא מקור אמת, מסד הנתונים חי בדפדפן, השינויים מתיישבים ברקע, והטעינה הראשונה שולחת פחות קוד ביותר חלקים. החלק הקשה, כותב המחבר, אינו המימוש אלא מסירות לאומנות לאורך שנים, כשבסיס הקוד גדל ונתקל באילוצים חדשים.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.