Linear-ი არის აპლიკაცია, სადაც ნებისმიერი ცვლილება მილიწამებში აისახება. მაშინ, როდესაც ტრადიციულ სისტემებს მოქმედების დასასრულებლად 300 მილიწამი სჭირდებათ, Linear-ი მომხმარებელს თითქმის მყისიერ უკუკავშირს სთავაზობს. ამ შედეგის მისაღწევად კომპანიამ რადიკალურად განსხვავებული მიდგომები აირჩია.

ბრაუზერი, როგორც მონაცემთა ბაზა

ყველაზე დიდი შეცდომა, რასაც ვებ-აპლიკაციები უშვებენ, ქსელურ კავშირზე დამოკიდებულებაა. Linear-ი ამ მიდგომას ცვლის: აპლიკაცია იყენებს ბრაუზერში არსებულ IndexedDB-ს. შედეგად, ნებისმიერი მოქმედება პირველად ლოკალურად მუშავდება და მხოლოდ ამის შემდეგ იგზავნება სერვერზე. ეს გამორიცხავს დამაბნეველ „ჩატვირთვის“ ანიმაციებს.


სისწრაფის არქიტექტურა

Linear-ის ტექნოლოგიური სტეკი საკმაოდ მარტივია: React, TypeScript, MobX და Postgres. აქ არ არის რთული ფრეიმვორკები ან სერვერული გადაწყვეტილებები, რომლებიც სისტემას ამძიმებს. აპლიკაციის სისწრაფის საიდუმლო შემდეგ დეტალებშია:


  • ოპტიმისტური განახლებები: ინტერფეისი არ ელოდება სერვერის პასუხს, ის მყისიერად ანახლებს მონაცემებს ლოკალურ მეხსიერებაში.
  • მკაცრი ოპტიმიზაცია: აპლიკაცია მუდმივად ამცირებს JavaScript-ის მოცულობას, რაც პირველადი ჩატვირთვის პროცესს აჩქარებს.
  • Service Worker-ები: ფონურ რეჟიმში ხდება მონაცემების წინასწარ ჩატვირთვა, რაც მომხმარებელს საშუალებას აძლევს, აპლიკაციით ოფლაინ რეჟიმშიც ისარგებლოს.

ბილდინგის პროცესი და კოდის მართვა

Linear-ის გუნდმა წლების განმავლობაში არაერთხელ შეცვალა აპლიკაციის აწყობის ინსტრუმენტები — Parcel-დან Rollup-ის, შემდეგ Vite-სა და Rolldown-ის გავლით. თითოეული გადასვლა მიზნად ისახავდა კოდის ზომის შემცირებას და შესრულების სიჩქარის ზრდას. შედეგად, მათ შეძლეს კოდის მოცულობის თითქმის განახევრება.


კიდევ ერთი მნიშვნელოვანი დეტალია შრიფტების დამუშავება. Linear-ი იყენებს ცვლად შრიფტებს (variable fonts) და სწორად კონფიგურირებულ preload-ს, რაც ხელს უშლის ტექსტის „ხტუნვას“ და ვიზუალურ შეფერხებებს. საბოლოო ჯამში, სისწრაფე არ არის ერთი კონკრეტული ფუნქცია, არამედ ათასობით პატარა გადაწყვეტილების ერთობლიობა, რომელიც მომხმარებლის გამოცდილებას პრიორიტეტად აქცევს.