Jedna wiadomość nie powinna odtworzyć całej historii

Performancekamo-internal
Szycy
26 sierpnia 2026 02:18 UTC
Autor
kamo
Pochęt się
0aee8b0

Batch 5 audytu wydajności po stronie klienta. MessageList mapuje każdą załadowaną wiadomość do MessageBubble, a MessageBubble nie był Zanotowany. Z 300 wiadomości otwartych, jeden komunikat - lub wskaźnik pisania Przewracanie lub zmiana stanu napędzanego przewijaniem – oznacza 300 renderów bąbelkowych, każdy MUI/Emotion subtree niosący własne połączenia Tooltip, Menu i formater, gdy nic nie O pozostałych 299 się zmieniło. Sama bańka nie pomogłaby, a to jest część, którą warto napisać Na dole. Przetłumaczony wiersz zbudowany : ...m, tekst: ts.przetlatedText - wewnątrz mapy, więc Był świeżym obiektem na każdym renderowaniu i płytkie porównanie nigdy nie mogło uderzyć dla żadnego Przetłumaczona wiadomość – notatka wyglądałaby na zastosowaną i nic nie zrobiła. Bańka Komunikaty są budowane raz na historię / zmianę tłumaczenia teraz, a nieprzetłumaczone wiersze mijają Pierwotny obiekt od razu przeszedł, który był już stabilny. Trzy kolejne rzeczy były rekomplikowane na render, dwie z nich w jednym rzędzie: - "prefers-reduced-motion" został odczytany z matchMedia wywołanym w ciele rendera. To jest Subskrypcja useSyncExternalStore teraz, która jest zarówno tańsza, jak i faktycznie na żywo - Stara forma nigdy nie zauważyła członka zmieniającego ustawienie, ponieważ nic Odnowił, aby go ponownie przeczytać. - Ostatnia własna nieusunięta wiadomość pochodziła z pełnego „filtera” w historii Każdy render. Zmienia się tylko wtedy, gdy historia to robi, a odwrotne skanowanie go znajduje Bez alokacji. - Nieudany tooltip tłumaczenia jest tym samym ciągiem dla każdego rzędu i był Sformatowany wewnątrz mapy. Podniesione. ResizeObserver jest celowo nietknięty. Przełączanie go, aby obserwować zwój Kontener zamiast elementów przekazu wyglądałoby jak uproszczenie i byłoby to możliwe. Auto-scroll: własna skrzynka graniczna kontenera nie zmienia się, gdy zawartość rośnie, Tylko jego scrollHeight robi, a ResizeObserver nie zgłasza tego. Zweryfikowano: tsc --noEmit czyste przez MessageList, MessageBubble i ChatBox z ich Import tranzytowy; 63 testy w całym gadce pakiety czatów, w tym komunikatRówIdentity, który twierdzi, że wysłana wiadomość zachowuje ten sam element wiersza, gdy Id serwer zastępuje lokalny – precyzyjna regresja, którą spowodowałaby zła notatka.

Wszystkie zmiany

Jak to, co widzisz żeglugę?

Każda z tych aktualizacji automatycznie ląduje w miejscu pracy. Zacznij za darmo i obserwuj, jak rośnie tydzień po tygodniu.

Start Free ForeverZobacz ceny