Satu pesan tiba seharusnya tidak kembali -membuat seluruh sejarah

Performancekamo-internal
Dikirim
26 Agustus 2026 pukul 02.18 UTC
Penulis
kamo
Commit
0aee8b0

Batch 5 dari audit kinerja sisi klien. Peta MessageList setiap pesan dimuat ke MessageBubble, dan MessageBubble tidak Dimoized. Dengan 300 pesan terbuka, satu pesan tiba - atau indikator mengetik flipping, atau scroll- driven state change - berarti 300 bubble render, masing-masing Subtree MuI / Emotion membawa Tooltip, Menu dan formatter panggilan, ketika tidak ada sekitar 299 lainnya telah berubah. Memanimasikan gelembung saja tidak akan membantu, dan itu adalah bagian yang layak ditulis turun. Baris terjemahan dibangun '{... m, teks: ts.translated Teks}' di dalam peta, sehingga adalah objek segar di setiap render dan perbandingan dangkal tidak pernah bisa memukul untuk setiap menerjemahkan pesan - memo akan tampak diterapkan dan tidak melakukan apa-apa. Gelembung pesan dibangun sekali per sejarah / terjemahan berubah sekarang, dan baris tidak diterjemahkan lulus objek asli lurus melalui, yang sudah stabil. Tiga hal lagi sedang dihitung ulang per render, dua dari mereka per baris: - 'sebaiknya -reduced- motion' dibaca dengan panggilan matchMedia dalam tubuh render. Hal ini sebuah langganan useSyncExternalStore sekarang, yang mana keduanya lebih murah dan benar-benar hidup - bentuk lama tidak pernah melihat anggota mengubah pengaturan, karena tidak ada dirender untuk dibaca ulang. - Pesan terakhir yang tidak dihapus sendiri berasal dari 'filter' penuh sepanjang sejarah Setiap render. Ini hanya berubah ketika sejarah tidak, dan scan terbalik menemukannya tanpa mengalokasikan. - Kesalahan - terjemahan tooltip adalah string yang sama untuk setiap baris dan sedang format di dalam peta. Tertunda. ResizeObserver sengaja tidak tersentuh. Switching untuk mengamati gulungan kontainer bukan elemen pesan akan terlihat seperti penyederhanaan dan akan istirahat gulungan otomatis: kotak batas kontainer sendiri tidak berubah ketika isi tumbuh, hanya scrollHeight yang melakukannya, dan RezeObserver tidak melaporkan itu. Verifikasi: tsc --noEmit bersih di MessageList, MessageBubble dan ChatBox dengan mereka impor transitif; 63 tes di melewati suite obrolan, termasuk messageRowIdentity, yang menegaskan pesan yang dikirim menyimpan elemen baris yang sama ketika id server menggantikan lokal - regresi yang tepat memo buruk akan menyebabkan.

Semua perubahan

Seperti apa yang Anda lihat pengiriman?

Semua pembaruan ini secara otomatis mendarat di ruang kerja Anda. Mulai bebas dan menontonnya tumbuh minggu demi minggu.

Mulai Bebas SelamanyaTampilkan Harga