00:00:00GitHub baru saja merilis add-on yang sangat canggih untuk Storybook yang benar-benar mengubah
00:00:05cara kita menguji performa komponen.
00:00:07Ini menyertakan panel performa yang sangat detail, penuh dengan wawasan berharga seperti pengukuran
00:00:12waktu frame, responsivitas input, stabilitas tata letak, profil React, tekanan memori
00:00:18dan banyak lagi.
00:00:19Dalam video ini, kita akan melihat lebih dekat apa yang ditawarkan oleh add-on ini.
00:00:23Ini akan sangat menyenangkan, jadi mari kita mulai.
00:00:31Pertanyaan cepat sebelum kita mulai.
00:00:32Tahukah Anda apa itu pengujian performa "shift-left"?
00:00:35Ini adalah paradigma pengembangan yang menetapkan bahwa performa komponen aplikasi Anda
00:00:40harus diuji lebih awal dalam proses pengembangan, bukan sebagai pemikiran belakangan.
00:00:45Dan alat ini khusus dibuat untuk membantu pengembang membuat keputusan awal tersebut,
00:00:50memberi Anda gambaran real-time tentang perilaku komponen sebelum masuk ke tahap produksi.
00:00:55Jadi, panel performa Storybook memberikan tampilan dengan ketelitian tinggi tentang bagaimana komponen Anda
00:01:00berinteraksi dengan mesin perenderan browser.
00:01:02Alat ini melacak, misalnya, waktu frame untuk mengidentifikasi jitter—celah kecil yang tidak teratur
00:01:07di antara frame yang membuat animasi terasa tersendat.
00:01:10Ia juga memantau thread utama untuk melihat adanya DOM churn dan thrashing.
00:01:15DOM churn terjadi saat kode Anda membuat, menghapus, atau memperbarui elemen secara tidak perlu dalam
00:01:20loop yang ketat, sementara thrashing terjadi saat browser dipaksa menghitung ulang tata letak berkali-kali
00:01:25dalam satu frame karena Anda membaca dan menulis gaya secara berturut-turut.
00:01:30Dan add-on ini beradaptasi dengan kerangka kerja apa pun yang Anda gunakan.
00:01:33Jika menggunakan React, ia dapat menyoroti metrik seperti render cascades, yaitu perubahan
00:01:38state kecil yang tidak sengaja memicu gelombang besar render ulang di seluruh aplikasi Anda.
00:01:44Ia juga melacak durasi P95, yang menunjukkan skenario terburuk bagi pengguna terlambat Anda
00:01:50daripada sekadar rata-rata.
00:01:52Dan jika Anda tidak menggunakan React, mode universal berfungsi sempurna untuk Vue, Svelte, atau
00:01:58web components.
00:01:59Untuk hasil terbaik, disarankan untuk menjalankan add-on ini di Chrome atau Edge.
00:02:04Mereka juga memiliki playbook langsung di mana kita bisa melihat aksi metrik-metrik ini.
00:02:08Misalnya, pada contoh kotak animasi, kita bisa melacak tepatnya berapa banyak mutasi
00:02:13inline style yang terjadi selama animasi.
00:02:16Dalam kasus ini, semuanya terlihat sehat.
00:02:18Frame rate dan waktu frame tetap stabil sempurna, artinya browser menangani
00:02:23pembaruan gaya tersebut tanpa masalah sedikit pun.
00:02:25Namun, contoh daftar yang berat menunjukkan cerita yang berbeda.
00:02:29Saat kita memfilter daftar besar ini, kita melihat beberapa tanda peringatan.
00:02:32Pertama, cumulative layout shift melonjak ke nilai yang sangat tinggi, yang menunjukkan bahwa elemen
00:02:38berpindah secara signifikan saat dimuat, menciptakan pengalaman yang tidak nyaman bagi pengguna.
00:02:43Kita juga melihat lonjakan DOM churn, yang berarti browser bekerja lembur untuk membongkar
00:02:49dan membangun kembali sejumlah besar node sekaligus.
00:02:52Ini juga mengakibatkan frame yang terputus, yang merusak persepsi kecepatan dan kehalusan
00:02:57dari antarmuka tersebut.
00:02:58Pada contoh element timing, setiap elemen DOM dengan atribut element timing akan diukur
00:03:04waktu perenderan tepatnya.
00:03:06Ini sangat berguna karena membantu Anda mengidentifikasi momen tepat saat konten utama
00:03:11atau ajakan bertindak Anda menjadi terlihat, memberi Anda gambaran yang lebih akurat tentang
00:03:17performa yang dirasakan daripada sekadar metrik pemuatan halaman biasa.
00:03:21Dan saat kita melihat contoh render yang berat, jika kita mengeklik tombol render ulang, itu menyebabkan
00:03:26durasi p95 melonjak.
00:03:29Ini terjadi karena thread utama tertahan oleh eksekusi JavaScript yang berat,
00:03:34membuat UI terasa sangat lamban.
00:03:36Kita juga melihat peringatan jitter frame di sini, yang menunjukkan perenderan yang tidak konsisten di mana
00:03:41waktu antar frame berubah-ubah secara drastis.
00:03:44Dan ada juga total blocking time atau TBT yang tinggi.
00:03:47TBT adalah tanda peringatan utama karena menunjukkan bahwa thread utama terblokir cukup lama
00:03:52hingga mencegah pengguna untuk berinteraksi dengan halaman, seperti mengeklik
00:03:57tombol atau menggulir layar.
00:03:58Kita melihat rincian serupa pada contoh pemborosan memoization.
00:04:03Di sini demonya menunjukkan bahwa merender ulang setiap elemen secara tidak perlu menyebabkan
00:04:08jeda yang besar.
00:04:09Sebaliknya, contoh memoization yang benar menunjukkan seberapa banyak pekerjaan yang bisa dihemat
00:04:15jika kita melakukan memoize pada komponen kita.
00:04:16Dengan melewatkan render yang berlebihan tersebut, kita menjaga thread utama tetap bersih dan frame rate terkunci
00:04:21sehingga kita mendapatkan 60 frame per detik yang sangat mulus.
00:04:25Pada contoh render cascade, kita melihat apa yang terjadi saat Anda menggunakan set state di dalam
00:04:30use layout effect.
00:04:31Setiap kenaikan tunggal memicu kaskade karena use layout effect berjalan secara sinkron setelah
00:04:37semua mutasi DOM, tetapi sebelum browser sempat melakukan proses paint.
00:04:42Jadi dengan memicu pembaruan state di sini, Anda memaksa React memproses ulang pohon komponen
00:04:47dan browser menghitung ulang tata letak untuk kedua kalinya bahkan sebelum pengguna melihat
00:04:52hasil pertamanya.
00:04:53Ini buruk karena secara efektif menggandakan pekerjaan untuk setiap frame, yang menyebabkan
00:04:58render lag yang dapat membuat interaksi sederhana sekalipun terasa berat.
00:05:02Lalu ada contoh style churn yang juga mendemonstrasikan pengamatan kritis.
00:05:07Apa yang terjadi saat kita mengubah inline style dari 600 node berbeda sekaligus?
00:05:13Kita segera melihat peringatan stall di bagian thrashing, yang menunjukkan bahwa
00:05:18browser dipaksa masuk ke dalam loop reflow.
00:05:21Ia mencoba menghitung posisi 600 elemen secara bersamaan sementara JavaScript masih
00:05:26melakukan perubahan.
00:05:27Ini menyebabkan vital yang sangat tidak sehat untuk metrik frame kita karena thread utama benar-benar
00:05:33terbebani sepenuhnya.
00:05:34Jadi saya harap semua contoh ini menunjukkan kepada Anda bagaimana cara menggunakan add-on storybook ini
00:05:38untuk mengidentifikasi hambatan dalam lingkungan yang jauh lebih presisi.
00:05:41Tentu, Anda bisa menggunakan alat seperti Lighthouse, tapi Lighthouse adalah gambaran umum.
00:05:46Ia tidak memberikan presisi bedah untuk melihat secara tepat bagaimana sebuah komponen individu
00:05:51berdampak pada performa aplikasi Anda.
00:05:53Saya sangat menyarankan Anda mengunduh add-on ini, menambahkannya ke rangkaian storybook Anda, dan
00:05:58cobalah memainkannya.
00:05:59Ada begitu banyak wawasan berharga yang bisa didapat begitu Anda melihat gambaran lengkap tentang bagaimana
00:06:03komponen Anda sebenarnya beroperasi di balik layar.
00:06:06Itu dia teman-teman, itulah add-on panel Performa GitHub Storybook yang baru
00:06:10secara singkat.
00:06:11Bagaimana menurut Anda tentang hal itu?
00:06:13Dan bagaimana Anda mengukur performa pada aplikasi Anda?
00:06:16Beri tahu kami di kolom komentar di bawah.
00:06:18Dan teman-teman, jika Anda menyukai jenis rincian teknis seperti ini, beri tahu saya dengan
00:06:22mengeklik tombol suka di bawah video dan juga jangan lupa untuk berlangganan saluran kami.
00:06:28Saya Andres dari Better Stack dan sampai jumpa di video-video berikutnya.