16 September 2026Eline Tiva

Firefox 155 Mengingatkan Kita untuk Menguji Web yang Benar-Benar Dikirim

Firefox 155 menambah kemampuan CSS, JavaScript, dan jaringan yang berguna. Bagi tim web kecil, pekerjaan praktisnya adalah menguji satu tugas pelanggan, menjaga fallback, dan mengukur hasilnya, bukan menganggap satu rilis browser sebagai dukungan universal.

0:00—
Cerita singkat oleh Eline Tiva
Ilustrasi pengembang yang meninjau layout browser responsif di dekat motif rubah oranye abstrak.

Firefox 155 dirilis pada 1 September 2026 dengan satu perubahan yang tampak kecil di daftar rilis: attr() kini dapat dipakai pada properti CSS apa pun, bukan hanya untuk konten yang dihasilkan. Dampak praktisnya tidak selalu kecil. Tim desain dapat memindahkan beberapa nilai presentasi ke atribut HTML lalu membiarkan CSS membacanya tanpa loop JavaScript. Rilis yang sama menambahkan progress(), helper promise berkunci, Happy Eyeballs v3 pada sebagian platform, dan negosiasi versi QUIC. Namun tak satu pun memberi izin kepada tim web kecil untuk menulis ulang situs produksi pada Selasa sore. Rilis ini memberi alasan untuk meninjau kebiasaan yang sering membuat situs rapuh: mengirim eksperimen khusus browser seolah satu rilis browser telah menjadikannya universal.

Pelajaran berguna dari Firefox 155 bukan “pakai CSS baru”. Pelajarannya adalah menjadikan kompatibilitas sebagai keputusan rilis yang eksplisit. Situs bisnis dinilai oleh orang yang menunya tak merespons, formulir pemesanannya kehilangan keadaan, atau koneksinya memilih jalur lambat. Fitur browser terbaru hanya bernilai setelah tim memahami apa yang digantikannya, siapa yang dapat menerimanya, dan bagaimana jalur lama berperilaku.

🧭 Rilis adalah titik keputusan

Catatan pengembang Firefox 155 mencakup CSS, JavaScript, HTTP, API, dan alat pengembang. Luasnya daftar itu justru alasan daftar fitur tidak boleh berubah menjadi daftar sprint. Setiap item berada di titik berbeda dalam rantai pengiriman. attr() dan progress() dapat memengaruhi tampilan. Promise.allKeyed() mengubah cara aplikasi mungkin mengatur pekerjaan serentak. Happy Eyeballs v3 dan negosiasi QUIC menyangkut perilaku koneksi yang biasanya tidak ditulis langsung oleh pemilik situs. Tim yang memasukkan semuanya ke satu tiket upgrade sudah mencampur risiko yang berbeda.

Pertanyaan pertama yang lebih baik jauh lebih sempit: tugas pelanggan mana yang punya masalah terukur saat ini dan mungkin dibantu oleh rilis ini? Jika katalog produk lambat karena skrip besar mengubah lebar kartu satu per satu, typed attr() layak diprototipekan. Jika checkout kadang gagal setelah masalah perutean IPv6, logika koneksi baru browser mungkin relevan untuk pengujian, tetapi bukan pengganti pemantauan DNS, TLS, CDN, dan jalur aplikasi situs itu sendiri.

Logo merek Firefox berwarna oranye dan ungu.
Logo merek Firefox, 2019. Reproduksi Wikimedia Commons dengan lisensi CC BY-SA 4.0.Mozilla Foundation via Wikimedia Commons

Pemisahan ini melindungi tim kecil dari teater catatan rilis. Membaca catatan browser berguna. Menyalin setiap kemampuan ke roadmap tidak. Masukkan setiap item ke satu dari tiga keranjang: fitur untuk dipantau, fitur untuk diuji pada permukaan kecil, atau fitur tanpa masalah bisnis mendesak. Keranjang ketiga adalah hasil yang sah.

📌 Apa yang benar-benar berubah di Firefox 155

Catatan Firefox 155 di MDN menyebut attr() dapat digunakan pada properti CSS apa pun, termasuk nilai bertipe dengan satuan serta nilai fallback. Catatan itu memberi contoh seperti width: attr(data-size px). Fungsi tersebut juga dapat dipakai di dalam container style queries. Firefox 155 mendukung fungsi CSS progress(), yang menghasilkan angka untuk menunjukkan kemajuan sebuah nilai di antara dua nilai dan dapat dipakai oleh perhitungan seperti opacity. Firefox juga menambahkan dukungan font-width, sambil mempertahankan font-stretch sebagai alias lama.

Di sisi JavaScript, Promise.allKeyed() dan Promise.allSettledKeyed() menerima objek promise dan menghasilkan objek dengan kunci yang sama. Catatan rilis menjelaskannya secara langsung: hasil dapat dibaca berdasarkan nama, bukan posisi. Di jaringan, Firefox kini memakai Happy Eyeballs versi 3 pada sebagian platform dan mendukung negosiasi versi QUIC untuk koneksi HTTP/3.

Pernyataan itu cukup presisi untuk memandu pengujian, tetapi tidak membuktikan bahwa sebuah fitur siap untuk setiap pengunjung. Referensi MDN untuk attr() memberi label tersedia luas sambil memperingatkan bahwa sebagian bentuk dukungan dapat bervariasi. Peringatan ini penting. Fungsi yang tersedia luas tidak sama dengan setiap bentuk bertipe baru berfungsi pada setiap versi browser yang masih dilayani bisnis.

“Keduanya bekerja seperti Promise.all() dan Promise.allSettled(), tetapi menerima objek promise, bukan iterable.”

Intinya bukan mencurigai rilis tersebut. Intinya adalah menempatkan catatan rilis pada fungsi yang tepat: bukti perilaku Firefox, bukan jaminan kompatibilitas global.

🧪 Fitur bukan rencana peluncuran

Godaan CSS mudah dipahami. Satu deklarasi pendek dapat terlihat lebih bersih daripada komponen JavaScript. Namun contoh kode yang lebih bersih tetap bisa menimbulkan kegagalan bila fallback tidak tersedia. Bayangkan komponen kartu membaca atribut data-size melalui typed attr() untuk mengatur lebar. Sebelum memakainya di produksi, jawab empat pertanyaan biasa.

  • Apakah komponen tetap muat dan terbaca ketika deklarasi itu diabaikan?
  • Apakah nilai atribut ditulis dan divalidasi tim, bukan disalin dari konten yang tidak tepercaya?
  • Apakah CSS yang ada menyediakan lebar default yang biasa?
  • Apakah fitur dapat dibatasi menjadi penyempurnaan visual yang tidak kritis pada rilis pertama?

Disiplin yang sama berlaku bagi progress(). Fitur itu mungkin berguna untuk transisi visual responsif, tetapi perhitungan visual harus berdiri di atas tata letak yang andal. Jangan melekatkan kontrol checkout, pilihan persetujuan, pesan kesalahan, atau informasi penting pada efek baru. Jika efeknya hilang, tugas tetap harus selesai.

Ilustrasi layout web yang sama diuji di frame browser desktop, tablet, dan seluler.
Ilustrasi: layout responsif harus mempertahankan fallback yang berguna di setiap perangkat yang didukung.Ilustrasi hasil generasi 1garis Studio

Prototipe kecil sebaiknya sengaja membosankan. Buat satu halaman dengan konten representatif, uji pada browser yang muncul di analitik, lalu periksa fallback. Uji perangkat seluler lambat, bukan hanya desktop baru. Setelah itu, hapus fitur sekali untuk membuktikan pengalaman dasar tetap dapat dipakai. Langkah terakhir ini menangkap banyak ketergantungan yang tidak disengaja.

🧱 Fallback harus ada di commit pertama

Progressive enhancement kadang dibahas sebagai ideologi. Untuk situs bisnis, maknanya lebih sederhana: halaman dasar harus menyelesaikan tugasnya sebelum kode dan penyempurnaan rendering opsional datang. HTML membawa makna. CSS standar menata konten. JavaScript menambah perilaku yang memang memerlukannya. CSS yang lebih baru dapat memperhalus tampilan tanpa menjadi satu-satunya jalan menuju antarmuka yang dapat dipakai.

Untuk attr(), itu dapat berarti menetapkan lebar tetap atau cair sebagai default sebelum deklarasi berbasis atribut bertipe. Untuk respons visual khusus, itu dapat berarti mempertahankan warna atau ukuran normal sebelum memakai progress(). Untuk helper promise berkunci, itu dapat berarti tidak menjadikan kenyamanan bawaan satu browser sebagai satu-satunya cara aplikasi menyelesaikan permintaan. Jika sistem build dapat mentransformasikan sintaks dengan aman, gunakan secara sengaja. Jika tidak, jaga jalur runtime tetap sederhana.

Alasannya bukan nostalgia terhadap browser lama. Alasannya adalah kejelasan operasional. Ketika pelanggan melaporkan halaman tampak salah, tim dengan baseline yang jelas dapat mengisolasi apakah masalah berasal dari konten, CSS, skrip, jaringan, atau dukungan browser. Tumpukan penyempurnaan cerdas yang saling erat mengubah laporan itu menjadi permainan tebak-tebakan.

Fallback harus ditinjau dalam pull request yang sama dengan penyempurnaannya. Menambahkannya nanti sering berarti tim akan menemukannya dari keluhan pelanggan.

📱 Trafik Anda, bukan grafik browser, yang menentukan batas

Kompatibilitas adalah sifat dari audiens tertentu. Portofolio agensi desain, halaman janji temu klinik lokal, dan dashboard internal dapat memilih dengan cara berbeda walau memakai framework yang sama. Dua yang pertama mungkin harus melayani perangkat seluler lama dan browser di dalam aplikasi. Yang terakhir dapat memiliki perangkat terkendali serta kebijakan upgrade terdokumentasi.

Mulailah dari bukti yang Anda miliki. Periksa pangsa browser dan sistem operasi dalam analitik, tetapi jangan berhenti di sana. Tandai halaman yang menghasilkan pendapatan, mengumpulkan prospek, menerima pembayaran, atau menangani dukungan. Bandingkan bauran browsernya dengan rata-rata situs. Fitur yang aman bagi halaman blog dapat tidak cocok untuk alur pembayaran atau pemesanan.

Gunakan catatan keputusan pendek: fitur, halaman, tugas pelanggan, audiens yang terdampak, manfaat yang diharapkan, fallback, hasil pengujian, dan cara rollback. Ini bukan birokrasi. Catatan itu membuat keputusan masa depan dapat dijelaskan ketika orang yang menulis CSS awal tidak tersedia.

Smartphone dan laptop digunakan berdampingan di sebuah kantor.
Foto ilustrasi: pengalaman web pada smartphone dan laptop, bukan dokumentasi pengujian tertentu.Foto oleh Magnetme di Pexels

Bila mungkin, simpan pemeriksaan perangkat nyata dalam rutinitas. Emulasi bernilai, namun telepon fisik mengungkap target sentuh, tekanan memori, perpindahan jaringan, perilaku keyboard, dan keanehan browser tertanam yang tidak dapat ditampilkan viewport desktop. Tujuannya bukan laboratorium perangkat yang besar. Tujuannya satu pemeriksaan yang kredibel sebelum perubahan berdampak tinggi menjangkau semua pengunjung.

🔍 Ukur perjalanan sebelum dan sesudah

Kemampuan browser dan performa situs saling terkait, tetapi tidak saling membuktikan. Panduan Web Vitals Google menetapkan ambang baik pada persentil ke-75: Largest Contentful Paint dalam 2,5 detik, Interaction to Next Paint 200 milidetik atau kurang, dan Cumulative Layout Shift 0,1 atau kurang. Ini pagar pembatas yang berguna karena menjelaskan pemuatan, respons, dan kestabilan visual, bukan framework pilihan tim.

Gunakan metrik tersebut sebagai pemeriksaan sebelum dan sesudah, bukan trofi. Catat baseline halaman yang hendak diubah. Terapkan versi perubahan terkecil. Pantau data lapangan dan pelaporan kesalahan. Bandingkan seluler dengan desktop. Jika perubahan desain memperbaiki skor lab namun memindahkan tombol formulir ketika orang mulai mengetuk, pengalaman pelanggan memburuk meski tangkapan layar terlihat lebih rapi.

Tampilan mingguan yang berguna cukup ringkas:

  • Tiga Core Web Vitals pada template prioritas, dipisahkan antara seluler dan desktop.
  • Kesalahan skrip serta permintaan jaringan yang gagal setelah setiap rilis.
  • Sinyal konversi atau penyelesaian tugas sesuai tujuan halaman.
  • Sampel keluhan dukungan yang ditandai browser dan perangkat bila diketahui.

Jangan meminta cerita sebab-akibat dari data satu hari. Komposisi trafik, kampanye, cache, dan gangguan dapat mengubah angka. Disiplinnya adalah melihat regresi lebih awal dan mempunyai cara yang diketahui untuk membalikkannya.

🌐 Perbaikan jaringan tidak menghapus kewajiban situs

Perubahan jaringan Firefox 155 mungkin terasa jauh dari tim konten atau niaga, tetapi perubahan ini mengingatkan bahwa pengguna mencapai situs melalui banyak lapisan. Happy Eyeballs adalah strategi koneksi untuk menghindari penundaan berlebihan ketika keluarga alamat berperilaku berbeda. Negosiasi versi QUIC membantu endpoint menyepakati versi QUIC yang didukung. Keduanya kemampuan browser dan protokol, bukan janji bahwa setiap situs sudah dikonfigurasi benar.

Situs tetap membutuhkan catatan DNS yang valid, rantai sertifikat yang berfungsi, origin yang dapat dijangkau, caching masuk akal, dan aplikasi yang merespons saat beban naik. Jika bisnis memakai IPv6, ujilah. Jika melayani HTTP/3, verifikasikan dengan alat dan klien nyata, bukan dengan memeriksa tombol dashboard. Jika skrip pihak ketiga memblokir main thread, koneksi yang lebih baik tidak bisa membuat interaksi terasa seketika.

Ilustrasi permintaan web yang bergerak antara perangkat, node jaringan, dan server aman.
Ilustrasi: perjalanan pengunjung mencakup lapisan jaringan dan server di luar antarmuka browser.Ilustrasi hasil generasi 1garis Studio

Perlakukan dukungan transport sebagai satu bagian dari ketahanan. Pantau seluruh jalur yang dilihat pelanggan: pencarian domain, koneksi, respons pertama, rendering halaman, interaksi penting, dan pengiriman formulir. Satu pemeriksaan uptime di origin bukan pengganti perjalanan tersebut.

🛠️ Rutinitas rilis yang sanggup dijalankan tim kecil

Proses terkuat adalah proses yang benar-benar dijalankan tim beranggotakan dua orang. Sisihkan slot singkat yang berulang setelah rilis browser bermakna. Agendanya dapat selesai dalam tiga puluh menit.

Pertama, baca catatan resmi dan pilih hanya fitur yang terkait pertanyaan produk atau pemeliharaan aktif. Kedua, periksa analitik dan buat daftar browser yang penting pada halaman terdampak. Ketiga, buat branch atau prototipe staging kecil dengan fallback yang disengaja. Keempat, uji tugas utama di browser terkini dan setidaknya satu lingkungan lama atau terbatas yang mencerminkan pengunjung. Kelima, catat hasilnya dan putuskan: kirim, tunda, atau tinggalkan.

Untuk deployment produksi, tambahkan satu lapisan: rollback yang tidak mengharuskan rekonstruksi perubahan menegangkan pada tengah malam. Feature flag, override CSS sederhana, atau deploy sebelumnya yang diketahui berfungsi dapat memenuhi kebutuhan ini. Opsi yang tepat bergantung pada stack. Yang penting, orang yang bertugas dapat menemukannya.

Rutinitas ini juga memperbaiki percakapan dengan klien. Alih-alih menyatakan situs “modern”, studio dapat menjelaskan bahwa penyempurnaan yang dipilih telah diuji terhadap audiens dan tugas penting tetap memiliki jalur dasar. Itu standar yang lebih berguna daripada mengejar item terbaru di setiap catatan rilis browser.

🗂️ Simpan catatan dukungan browser

Keputusan kompatibilitas menjadi mahal ketika hanya hidup dalam ingatan seseorang. Buat catatan kecil di samping codebase. Tidak perlu alat baru. Tabel Markdown, template tiket, atau catatan rilis di repositori cukup selama menjawab pertanyaan yang kelak akan diajukan maintainer.

Untuk setiap penyempurnaan, simpan nama fitur, perilaku browser yang diandalkan, URL dokumentasi kanonis, tanggal uji terakhir, halaman terdampak, dan fallback. Tambahkan pemilik untuk peninjauan berikutnya. Ini sangat berguna bagi fitur yang hadir tidak merata di berbagai engine atau sistem operasi. Pernyataan seperti “didukung browser target” terlalu kabur enam bulan kemudian. “Diuji pada browser seluler yang mewakili 94% sesi checkout pada tanggal ini; grid default tetap berlaku ketika typed attr() tidak tersedia” memberi pegangan yang dapat ditindaklanjuti.

Catatan juga mencegah kesalahan umum: mengira proposal standar adalah jaminan implementasi. Proposal Await Dictionary yang mendokumentasikan Promise.allKeyed() berada pada Tahap 2.7 dan menyatakan tidak memiliki implementasi native maupun polyfill/transpiler. Catatan Firefox 155 mungkin menjelaskan dukungan pada browser itu, tetapi situs yang harus berjalan pada beberapa engine tidak seharusnya menulis ulang kode aplikasi bersama berdasar fitur tersebut tanpa strategi kompatibilitas. Sikap yang sama berlaku untuk contoh kode dari blog browser, issue framework, atau saran yang dihasilkan asisten.

Sumber tepercaya penting di sini. Penjelasan Mozilla tentang server MDN MCP menyampaikan satu hal sederhana: informasi dukungan browser tanpa dokumentasi mutakhir dapat salah. Contohnya mencatat Firefox 151 sebagai browser pertama yang merilis shadowrootslotassignment deklaratif, sementara jawaban tanpa sumber mengklaim dukungan di browser lain. Detail teknisnya bukan inti. Praktiknya yang penting. Verifikasikan klaim kemampuan saat keputusan dibuat.

🤝 Biarkan desain dan engineering berbagi risiko

Kompatibilitas browser kadang diserahkan ke engineering setelah desain sudah berkomitmen pada efek visual. Urutan itu menciptakan konflik yang tidak perlu. Desainer dapat membantu merinci apa yang harus tetap benar ketika penyempurnaan tidak hadir: urutan informasi, kontras yang terbaca, luas target sentuh minimum, keadaan kontrol terpilih yang terlihat, dan keterbacaan harga atau tenggat. Engineering lalu dapat memilih implementasi yang menjaga hasil tersebut.

Libatkan editor konten dalam percakapan yang sama ketika atribut digunakan. Jika atribut presentasi dimasukkan lewat CMS, tetapkan nilai yang diizinkan dan default yang masuk akal. Atribut tidak valid tidak boleh menghasilkan kartu tak terlihat, judul bertumpuk, atau tata letak yang menghalangi tindakan berikutnya. Typed attr() memiliki sintaks fallback, tetapi fallback bukan pengganti validasi konten. Ia adalah garis pertahanan kedua.

Tim dukungan dan operasi juga membawa bukti. Mereka melihat laporan pelanggan yang tidak pernah muncul di dashboard: halaman gagal hanya setelah beralih dari Wi-Fi ke data seluler, tombol daftar tertutup panel cookie, atau browser yang tertanam di aplikasi lain. Buat cara sederhana bagi mereka untuk melampirkan detail perangkat dan browser bila tersedia. Itu mengubah anekdot menjadi kasus uji.

Sebelum pengujian berubah menjadi rilis, tentukan arti lulus. “Tidak crash di laptop saya” bukan ambang yang berguna. Untuk halaman produk, kondisi lulus dapat berupa gambar produk tetap memiliki ruangnya, harga terlihat pada lebar 320 CSS pixel, kontrol tambah ke keranjang dapat dijangkau dengan keyboard dan sentuhan, serta keadaan keranjang bertahan ketika pengguna bernavigasi. Untuk halaman kontak, kondisinya dapat berupa pengunjung melihat kesalahan field, memperbaikinya, lalu mengirim tanpa memerlukan penyempurnaan visual. Ini mengubah kompatibilitas dari diskusi browser yang abstrak menjadi hasil yang dapat diamati.

Jaga bukti pengujian tetap sepadan dengan risiko. Animasi dekoratif mungkin cukup dengan tangkapan layar dan pemeriksaan perangkat singkat. Komponen yang dipakai pada setiap halaman komersial membutuhkan URL staging, matriks browser, dan peninjau yang tidak menulis perubahan. Alur pembayaran, akun, kesehatan, aksesibilitas, dan persetujuan hukum patut memperoleh pemeriksaan manual eksplisit meski pengujian otomatis berwarna hijau. Otomasi menemukan banyak regresi, tetapi tidak dapat memutuskan apakah label masuk akal, indikator fokus cukup terlihat, atau pergeseran tata letak mengganggu manusia sungguhan.

Pendekatan yang sama membantu saat menghapus kode lama. Jangan menyimpan fallback selamanya hanya karena belum ada yang mengukurnya. Tinjau terhadap trafik terkini, komitmen dukungan yang terdokumentasi, dan biaya untuk mengujinya. Ketika tim memutuskan menghentikan jalur lama, sebutkan tanggal, dampak audiens, dan rencana pemulihan. Menghapus fallback dapat menjadi keputusan pemeliharaan yang sehat jika disengaja. Menghapusnya karena tim menganggap fitur telah menjangkau semua orang adalah risiko rilis yang berbeda.

Kerja kompatibilitas juga berguna untuk menjaga dependency drift. Pembaruan framework, tag analitik baru, platform persetujuan, atau pengoptimal gambar dapat mengubah halaman yang dirender tanpa ada engineer menyentuh komponen yang memakai fitur browser baru. Simpan perjalanan pengguna representatif dalam pemeriksaan setelah deploy: beranda ke halaman layanan, halaman layanan ke formulir minat, produk ke keranjang, keranjang ke checkout, serta kunjungan kembali ketika login atau keadaan tersimpan penting. Daftar persisnya harus mengikuti bisnis, tetapi harus didasarkan pada tugas yang benar-benar dicoba orang.

Jika insiden terjadi, catat pelajaran konkret alih-alih slogan. Tulis browser dan versinya bila diketahui, apa yang dicoba pengunjung, apa yang muncul, mengapa pemantauan melihat atau tidak melihatnya, serta pagar pengaman mana yang seharusnya menangkapnya lebih awal. Laporan itu memberi materi untuk tinjauan rilis berikutnya. Kesimpulan kabur seperti “uji lebih teliti” tidak memberi apa pun.

⚠️ Batas penalaran dari catatan rilis

Artikel ini memiliki batas. Catatan Firefox 155 menjelaskan Firefox 155. Catatan itu tidak mengesahkan detail implementasi di Chromium, Safari, browser tertanam, sistem operasi lama, atau framework situs tertentu. Dukungan dapat bervariasi berdasarkan versi dan platform browser. Perilaku jaringan juga bergantung pada kondisi lokal, DNS, perantara, dan konfigurasi server.

Ada batas kedua: analitik web tidak lengkap. Pilihan persetujuan, perlindungan privasi, sampling, dan browser di dalam aplikasi yang tidak dikenal dapat memberi tim visibilitas parsial. Ini alasan untuk penyempurnaan konservatif serta pengujian terarah, bukan alasan berpura-pura audiens diketahui sepenuhnya.

Terakhir, metrik performa yang terukur adalah indikator, bukan nilai moral. Halaman dapat melewati ambang tetapi tetap membingungkan manusia. Halaman dapat meleset sementara akibat peristiwa operasional namun tetap mudah dipakai. Pasangkan metrik dengan pengujian tugas dan bukti dukungan.

✅ Bangun untuk browser yang Anda miliki, bukan rilis yang Anda kagumi

Firefox 155 layak dibaca karena membuat platform web sedikit lebih mampu dalam styling, promise, dan jaringan. Keputusan bisnisnya bukan apakah kemampuan itu layak dikagumi. Keputusan itu adalah apakah salah satunya menyelesaikan masalah pelanggan yang terdefinisi tanpa membuat situs kurang dapat diandalkan bagi orang yang sudah memakainya.

Pilih satu komponen, satu halaman, dan satu tugas yang dapat diukur. Libatkan satu rekan untuk memeriksa fallback sebelum perubahan masuk ke produksi. Tetapkan versi biasa terlebih dahulu. Tambahkan penyempurnaan dengan fallback. Uji terhadap audiens nyata. Pantau hasil setelah rilis, lalu hilangkan jika tidak sepadan dengan kerumitannya. Begitulah rilis browser menjadi pemeliharaan yang berguna, bukan undangan untuk mengirim risiko.

*Sumber: catatan rilis Mozilla MDN Firefox 155; referensi MDN attr(); proposal TC39 Await Dictionary; RFC 8305; RFC 9000; panduan Google web.dev Web Vitals.*

Keep reading