Un message à l'arrivée ne devrait pas remonter toute l'histoire

Performancekamo-internal
Expédié
26 août 2026 à 02:18 UTC
Auteur
kamo
Commite
0aee8b0

Lieu 5 de l'audit de performance du client. MessageList cartographie chaque message chargé à un MessageBubble, et MessageBubble n'était pas mémorisée. Avec 300 messages ouverts, un message à venir ou l'indicateur de frappe le basculement, ou un changement d'état piloté par la défilement signifie 300 bulles rend, chacun un MUI/Emotion subtree portant ses propres appels Tooltip, Menu et Formateur, quand rien à propos des 299 autres avaient changé. Memoizing the bubble ne aurait pas aidé, et c'est la partie qui vaut la peine d'écrire vers le bas. Une ligne traduite construite ..m, texte: ts.translatedText à l'intérieur de la carte, donc il était un objet frais sur chaque rendu et une comparaison superficielle ne pourrait jamais frapper pour quoi Le message traduit - la note aurait été appliquée et n'aurait rien fait. La bulle les messages sont construits une fois par historique/changement de traduction maintenant, et les lignes non traduites passent l'objet d'origine directement, qui était déjà stable. Trois autres choses étaient en train d'être recompatibles par rendu, deux par ligne: - Le mouvement de préféré réduit a été lu avec un matchMedia dans le corps de rendu. C'est a useSyncExternalStore abonnement maintenant, qui est à la fois moins cher et en fait en direct l'ancienne forme n'a jamais remarqué un membre changeant le réglage, parce que rien Remis pour le relire. - Le dernier message non supprimé est venu d'un "filtre" complet sur l'histoire chaque rendu. Il ne change que lorsque l'historique le fait, et un scanner inverse le trouve sans répartition. - L'infidélité à la traduction est la même corde pour chaque rangée et était en cours d'exécution. formaté à l'intérieur de la carte. Lassés. Le ResizeObserver est délibérément indifférent. Le changer pour observer le défilement un conteneur au lieu des éléments de message ressemblerait à une simplification et casser l'auto-rouleau: la boîte de bordure du conteneur ne change pas lorsque le contenu augmente, Seule son rouleau de hauteur de ruisseau, et ResizeObserver ne l'indique pas. Vérifié: tsc --noEmit nettoyer sur MessageList, MessageBubble et ChatBox avec leur importations de transit; 63 tests à travers la carte de passe de la suite de discussion, y compris messageRowIdentity, qui affirme un message envoyé, conserve le même élément de ligne lorsque le serveur id remplace le serveur local - la régression précise d'une mauvaise note causerait.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation