Chrome dan Firefox akan segera mencapai versi utama 100

Perubahan string Agen Pengguna, strategi yang digunakan Chrome dan Firefox untuk mengurangi dampaknya, dan cara Anda dapat membantu.

Chrome dan Firefox akan mencapai versi 100 dalam beberapa bulan. Hal ini berpotensi menyebabkan kerusakan pada situs yang mengandalkan identifikasi versi browser untuk menjalankan logika bisnis. Postingan ini membahas linimasa peristiwa, strategi yang dilakukan Chrome dan Firefox untuk mengurangi dampaknya, dan cara Anda dapat membantu.

String Agen Pengguna

Agen Pengguna (UA) adalah string yang dikirim browser di header HTTP, sehingga server dapat mengidentifikasi browser. String ini juga dapat diakses melalui JavaScript dengan navigator.userAgent. Formatnya biasanya seperti berikut:

<browser_name>/<major_version>.<minor_version>

Misalnya, versi rilis terbaru browser pada saat memublikasikan postingan ini adalah:

  • Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36
  • Firefox: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:96.0) Gecko/20100101 Firefox/96.0
  • Safari: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.2 Safari/605.1.15

Versi utama 100—nomor versi tiga digit

Versi utama 100 merupakan tonggak pencapaian besar bagi Chrome dan Firefox. Hal ini juga berpotensi menyebabkan kerusakan di situs saat kita beralih dari nomor versi dua digit ke nomor versi tiga digit. Developer web menggunakan semua jenis teknik untuk mengurai string ini, dari kode kustom hingga menggunakan library penguraian Agen Pengguna, yang kemudian dapat digunakan untuk menentukan logika pemrosesan yang sesuai. Agen Pengguna dan mekanisme pelaporan versi lainnya akan segera melaporkan nomor versi tiga digit.

Linimasa versi 100

Browser versi 100 pertama kali akan dirilis dalam versi eksperimental (Chrome Canary, Firefox Nightly), lalu versi beta, dan akhirnya di saluran stabil.

Browser Linimasa
Chrome (jadwal rilis) 29 Maret 2022
Firefox (jadwal rilis) 3 Mei 2022

Mengapa nomor versi tiga digit dapat menimbulkan masalah?

Saat browser pertama kali mencapai versi 10 lebih dari 12 tahun yang lalu, banyak masalah ditemukan terkait library penguraian Agen Pengguna karena nomor versi utama berubah dari satu digit menjadi dua digit.

Tanpa spesifikasi tunggal untuk diikuti, browser yang berbeda memiliki format yang berbeda untuk string Agen Pengguna dan penguraian Agen Pengguna khusus situs. Ada kemungkinan bahwa beberapa library penguraian mungkin memiliki asumsi hard code atau bug yang tidak memperhitungkan nomor versi utama tiga digit. Banyak library meningkatkan logika penguraian saat browser dipindahkan ke nomor versi dua digit, sehingga mencapai milestone tiga digit diperkirakan akan menyebabkan lebih sedikit masalah. Mike Taylor, engineer di tim Chrome, telah melakukan survei terhadap library penguraian UA umum yang tidak menemukan masalah apa pun. Menjalankan eksperimen Chrome di kolom telah menampilkan beberapa masalah yang sedang ditangani.

Apa yang dilakukan browser tentang hal ini?

Firefox dan Chrome telah menjalankan eksperimen di mana versi browser saat ini melaporkan berada di versi utama 100 untuk mendeteksi kemungkinan kerusakan situs. Hal ini menyebabkan beberapa masalah yang dilaporkan, beberapa di antaranya telah diperbaiki. Eksperimen ini akan terus berjalan hingga rilis versi 100.

Selain itu, strategi mitigasi cadangan telah diterapkan, jika versi 100 dirilis ke saluran stabil akan menyebabkan kerusakan yang lebih besar pada situs daripada yang diperkirakan.

Mitigasi Chrome

Di Chrome, rencana cadangannya adalah menggunakan flag untuk membekukan versi utama di versi 99 dan melaporkan nomor versi utama yang sebenarnya di bagian versi minor dari string Agen Pengguna (kode telah mendarat).

Versi Chrome seperti yang dilaporkan dalam string Agen Pengguna mengikuti pola <major_version>.<minor_version>.<build_number>.<patch_number>.

Jika rencana cadangan digunakan, string Agen Pengguna akan terlihat seperti ini:

99.101.4988.0

Chrome juga menjalankan eksperimen untuk memastikan bahwa pelaporan nilai tiga digit di bagian versi minor string tidak akan mengakibatkan kerusakan, karena versi minor dalam string Agen Pengguna Chrome telah melaporkan 0 dalam waktu yang sangat lama. Tim Chrome akan memutuskan apakah akan menggunakan opsi pencadangan berdasarkan jumlah dan tingkat keparahan masalah yang dilaporkan.

Mitigasi Firefox

Di Firefox, strateginya akan bergantung pada seberapa penting kerusakan. Firefox memiliki mekanisme intervensi situs. Tim webcompat Mozilla dapat memperbaiki situs yang rusak di Firefox dengan cepat menggunakan mekanisme ini. Jika Anda mengetik about:compat di kolom URL Firefox, Anda dapat melihat apa yang sedang diperbaiki. Jika situs tidak memiliki versi utama 100 di domain tertentu, Anda dapat memperbaikinya dengan mengirimkan versi 99.

Jika kerusakan meluas, nomor versi utama dapat dibekukan. Terdapat berbagai kemungkinan strategi, masing-masing dengan pro dan kontranya. Mozilla dapat mengirimkan nomor versi yang sebenarnya sebagai nomor versi minor, membekukan string sepenuhnya apa adanya, atau mengirim nomor versi sebenarnya melalui parameter lain.

Setiap strategi yang menambah kompleksitas pada string Agen Pengguna memiliki dampak yang kuat terhadap ekosistem. Mari kita bekerja sama untuk menghindari perilaku unik lainnya.

Apa yang dapat Anda lakukan untuk membantu?

Di Chrome dan Firefox Nightly, Anda dapat mengonfigurasi browser untuk melaporkan versi sebagai 100 saat ini dan melaporkan masalah yang ditemukan.

Konfigurasi Chrome untuk melaporkan versi utama sebagai 100

  1. Buka chrome://flags/#force-major-version-to-100
  2. Tetapkan opsi ke Enabled.

Konfigurasi Firefox Nightly untuk melaporkan versi utama sebagai 100

  1. Buka menu Setelan Malam di Firefox.
  2. Cari "Firefox 100", lalu periksa opsi "Firefox 100 User-Agent String".

Menguji dan mengajukan laporan

  • Jika Anda adalah pengelola situs, uji situs Anda dengan Chrome dan Firefox 100. Tinjau kode dan library penguraian Agen Pengguna Anda, dan pastikan library tersebut dapat menangani nomor versi tiga digit. Kami telah mengompilasi beberapa pola yang saat ini rusak.
  • Jika Anda mengembangkan library penguraian Agen Pengguna, tambahkan pengujian untuk mengurai versi yang lebih besar dari dan sama dengan 100. Pengujian awal kami menunjukkan bahwa versi library terbaru dapat menanganinya dengan benar. Namun, web memiliki durasi yang lama. Jadi, jika Anda memiliki versi library penguraian yang lama, saatnya memeriksa masalah dan akhirnya melakukan upgrade.
  • Jika Anda menjelajahi web dan menemukan masalah pada versi utama 100, kirimkan laporan di webcompat.com.