Satu sesi snapshot untuk tab, bukan satu per hook instance

Performancekamo-internal
Dikirim
26 Agustus 2026 pukul 05.40 UTC
Penulis
kamo
Commit
2241a5c

useUserInfo mengadakan sesi dalam tiga sel usestate. Memiliki 187 situs panggilan dan sekitar 27 mereka dipasang untuk seluruh sesi - nav, setiap penyedia shell, launchpad. The REQUEST sudah diperas, jadi hanya ada satu panggilan informasi, tapi ketika itu memecahkan semua 27 contoh yang disebut mereka sendiri setUserInfo dengan data yang sama. Dua puluh tujuh pembaruan Reaktif independen membawa keadaan identik, pada setiap fokus tab dan setiap lima menit centang. Negara bergerak ke sebuah toko modul di belakang usSyncExternall Store, sehingga penyegaran adalah satu tulis dan satu jalan buntu. Toko ini app / lib / userInfoStore.ts daripada sebuah modul lokal untuk alasan tertentu: Tidak ada dalam repo ini dapat menangkap regresi hak. Tidak ada pustaka @ testing-, tidak ada tes mount sebuah komponen, dan aplikasi / kait / * * tidak dalam vitest daftar include - sebuah tes ditempatkan di samping Hook tidak akan pernah lari. app / lib / * * termasuk, sehingga aturan yang hak gerbang seluruh produk sekarang memiliki 25 tes meliputi setiap jalur menulis. Tiga sifat load- bantalan dan masing-masing disematkan oleh tes: 'loading' dimulai TRUE dan adalah kait one- way. Para penjaga hak jatuh melalui untuk DENY, tidak tunggu, dan checkRight dibuka dengan 'if (! userInfo) kembali false' - sehingga laporan toko loading: salah sebelum data tiba membuat "no permission" kepada anggota yang memegang hak, dan kebakaran dua puluh 'useEffect (..., [loading])' mengarahkan kembali yang membaca hak pada pertama non-loading render. Tidak ada yang jatuh dan tidak ada tes yang gagal. Sama sekali tidak boleh kembali ke kenyataan, atau setiap penjaga di aplikasi berkedip kondisi pemuatan setiap lima menit. Penulis adalah browser- hanya dengan konstruksi. Pada server satu proses melayani setiap concurrent permintaan, jadi sebuah variabel modul memegang hak anggota adalah salah satu dibagi dengan setiap lainnya member 's render. publish () menolak untuk menulis tanpa jendela dan getServerSnapshot mengembalikan konstanta beku daripada membaca snapshot mutable. Konstan itu juga wajib: shell terotentikasi diserver- dirender dan hook ini dicapai selama server lulus dari akar layout pohon klien, dimana React 19 melempar daripada mundur, tanpa batas di atas AuthedChrome untuk menangkapnya. Snapshot diadakan, tidak pernah dibangun kembali. loadUserInfoShared mengembalikan sebuah objek yang baru diurai setiap waktu, yang tepatnya mengapa semua 27 kasus-diberikan; sebuah getSnapshot yang dibangun satu akan tidak hanya re-render tetapi membuang. Pembayaran yang sama sekali tidak lagi dipublikasikan, sehingga konsumen menghilangkan memo dari identitas SugInfo - SettingsApppinsContext 's gerbang di atas semua - stop menghitung ulang setiap lima menit untuk muatan yang tidak berubah. Tiga keputusan yang pantas dinamai, karena masing-masing memiliki alternatif yang dapat dipertahankan: Navigasi logout sekarang dibagi pada ada menjadi pelanggan. The old is mountedRef guard sat di atas switch, bukan pada setState, sehingga melewati redirect terlalu - sebuah instansi yang unmount Mid- penerbangan tidak menavigasi. Menghapus ref secara langsung, yang merupakan langkah biasa ketika mengadopsi modul toko, akan dipromosikan diam-diam yang redirect dari kondisional ke tanpa syarat. Hanya beban pertama adalah latar depan; kemudian mount menyegarkan di latar belakang. Hak tinggal sebagai segar di navigasi seperti sebelumnya, tapi sebuah kesalahan sementara pada mount akhir tidak dapat lagi kosong userInfo untuk semua 27 konsumen ketika sebelumnya hanya dikosongkan satu contoh yang memukulnya. Tujuh eksternal loadUserInfoShared penelepon sengaja tidak mempublikasikan. Mereka menembak websocket menyambung kembali pada waktu yang sewenang-wenang, dan mendorong gating produk dari permukaan pemicu tidak ada yang menonton lebih buruk daripada bundaran buntang buntang tidak melakukannya - mereka membaca skalar identitas yang tidak dapat berubah dalam sesi. Aksesoris yang tersisa sebagai panah polos pada tujuan. Stabilisasi mereka adalah naluri alami di sini dan akan memecahkan sembilan situs panggilan diam-diam - Use HrOverview, Use Subscription Permission, Platform Kanan Context dan enam lainnya - yang tergantung pada identitas tidak stabil saat ini untuk tetap segar, komputer sekali terhadap snapshot null sebagai gantinya. Entri allowlist log dalam navigasi check-client-. mjs mengikuti baris itu ada untuk. Diverifikasi: tsc bersih, semua 10 penjaga lulus, 3286 tes hijau, produksi perusahaan bangunan, dan server mandiri masih membuat shell terotentikasi - 200, 16,238 bytes dari DOM di 153 elemen, dua header, sepuluh tombol, My Businesses / My Profile / Log keluar. Ingin manusia untuk klik melalui nav rights- gated, anggota limited- hak, dan sesi yang diekspor sebelum itu Kapal.

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