Perbaiki Komponen React yang Lambat dalam Sekejap! (Addon GitHub Storybook Baru)

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

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.

Key Takeaway

Add-on performa Storybook dari GitHub memungkinkan pengembang mengoptimalkan komponen secara presisi melalui metrik real-time dan deteksi dini hambatan perenderan sebelum tahap produksi.

Highlights

GitHub merilis add-on panel performa baru untuk Storybook yang memberikan wawasan mendalam tentang metrik komponen.

Mengusung paradigma pengujian performa "shift-left" untuk mendeteksi masalah lebih awal dalam proses pengembangan.

Alat ini mampu melacak metrik teknis seperti frame timing, DOM churn, layout thrashing, dan cumulative layout shift.

Fitur khusus untuk React dapat menyoroti "render cascades" yang disebabkan oleh perubahan state yang tidak efisien.

Add-on ini mendukung berbagai framework termasuk Vue, Svelte, dan Web Components melalui mode universal.

Memberikan presisi tingkat bedah untuk komponen individual dibandingkan alat audit umum seperti Lighthouse.

Timeline

Pengenalan Add-on Performa Storybook Baru

Video dimulai dengan pengenalan alat baru dari GitHub yang dirancang khusus untuk meningkatkan kemampuan Storybook dalam menguji performa komponen. Panel performa ini menyediakan data ketelitian tinggi seperti profil React, stabilitas tata letak, dan tekanan memori yang sebelumnya sulit diakses secara instan. Pengembang kini dapat melihat bagaimana komponen mereka berinteraksi langsung dengan mesin perenderan browser. Bagian ini menekankan bahwa add-on ini akan mengubah cara tim pengembang dalam memastikan kualitas antarmuka mereka. Narator menjanjikan eksplorasi mendalam tentang fitur-fitur canggih yang ditawarkan oleh alat tersebut.

Konsep Shift-Left dan Metrik Performa Inti

Pembicara menjelaskan pentingnya pengujian performa "shift-left" yang berarti menguji efisiensi komponen sejak awal masa pengembangan. Fokus utama bagian ini adalah terminologi teknis seperti jitter, DOM churn, dan layout thrashing yang sering merusak pengalaman pengguna. DOM churn terjadi ketika elemen dibuat atau dihapus secara berlebihan, sementara thrashing muncul akibat pembacaan dan penulisan gaya yang berturut-turut. Alat ini membantu mengidentifikasi celah kecil tidak teratur di antara frame yang menyebabkan animasi terasa tersendat. Pemahaman awal ini krusial agar keputusan pengembangan yang tepat dapat diambil sebelum kode masuk ke lingkungan produksi.

Dukungan Multi-Framework dan Metrik P95

Meskipun sangat optimal untuk React dengan fitur pelacakan "render cascades", add-on ini juga memiliki mode universal untuk Vue dan Svelte. Salah satu metrik terpenting yang dibahas adalah durasi P95 yang menunjukkan performa pada skenario terburuk bagi pengguna dengan perangkat lambat. Penonton disarankan menggunakan browser berbasis Chromium seperti Chrome atau Edge untuk mendapatkan hasil analisis yang paling akurat. Render cascades disoroti sebagai masalah umum di mana perubahan state kecil memicu gelombang render ulang yang tidak perlu di seluruh aplikasi. Fleksibilitas ini memastikan bahwa alat ini berguna bagi berbagai ekosistem pengembangan web modern.

Analisis Kasus: Animasi vs Daftar Berat

Melalui demonstrasi praktis, narator membandingkan komponen kotak animasi yang sehat dengan komponen daftar yang memiliki masalah performa. Pada daftar yang berat, terlihat lonjakan Cumulative Layout Shift (CLS) yang menandakan elemen berpindah secara tidak stabil saat dimuat. Fenomena DOM churn juga meningkat tajam karena browser harus bekerja ekstra keras membongkar dan membangun kembali ribuan node secara bersamaan. Hal ini mengakibatkan frame yang terputus dan merusak persepsi kehalusan antarmuka bagi pengguna akhir. Contoh ini memberikan bukti visual tentang bagaimana metrik abstrak diterjemahkan ke dalam masalah pengalaman pengguna yang nyata.

Element Timing dan Masalah Thread Utama

Bagian ini membahas fitur element timing yang mengukur waktu perenderan tepat untuk elemen spesifik dengan atribut tertentu. Metrik ini sangat berguna untuk memantau kapan konten utama atau tombol ajakan bertindak (CTA) benar-benar terlihat oleh pengguna. Narator juga menjelaskan bahaya Total Blocking Time (TBT) yang tinggi yang menunjukkan thread utama terhenti oleh eksekusi JavaScript yang berat. Jika thread utama terblokir, pengguna tidak akan bisa berinteraksi dengan halaman seperti melakukan klik atau menggulir layar. Masalah jitter frame juga muncul di sini sebagai indikasi perenderan yang tidak konsisten yang membuat UI terasa lamban.

Optimasi Memoization dan Render Cascade

Video membandingkan dampak penggunaan memoization yang benar vs pemborosan render ulang pada komponen React. Dengan menerapkan memoize pada komponen, thread utama tetap bersih dan aplikasi dapat mempertahankan kecepatan stabil di 60 frame per detik. Sebaliknya, kesalahan penggunaan set state di dalam useLayoutEffect ditunjukkan sebagai pemicu render cascade yang sinkron dan berat. Tindakan tersebut memaksa browser menghitung ulang tata letak dua kali bahkan sebelum pengguna melihat hasil render pertama. Penjelasan ini memberikan panduan teknis bagi pengembang React untuk menghindari pola kode yang dapat melambatkan interaksi sederhana.

Style Churn dan Kesimpulan Akhir

Eksperimen terakhir menunjukkan apa yang terjadi ketika mengubah gaya inline pada 600 node sekaligus yang menyebabkan browser masuk ke loop reflow. Kondisi ini disebut sebagai "stall" dalam bagian thrashing yang membuat metrik frame menjadi sangat tidak sehat karena beban kerja yang berlebihan. Pembicara menegaskan bahwa meskipun Lighthouse berguna, add-on Storybook ini memberikan tingkat presisi bedah yang jauh lebih tinggi untuk komponen individu. Pengguna didorong untuk segera mengunduh dan mencoba add-on ini guna mendapatkan gambaran lengkap operasi di balik layar komponen mereka. Video ditutup dengan ajakan untuk berdiskusi di kolom komentar mengenai cara penonton mengukur performa aplikasi mereka.

Community Posts

View all posts