Chrome 148

Tanggal rilis stabil: 5 Mei 2026

Kecuali dinyatakan lain, perubahan berikut berlaku untuk rilis saluran stabil Chrome 148 untuk Android, ChromeOS, Linux, macOS, dan Windows.

CSS dan UI

Kueri penampung khusus nama CSS

Penampung kueri CSS dapat dikueri hanya berdasarkan container-name, dan penampung tidak memerlukan setelan container-type:

#container {
  container-name: --foo;
}
@container --foo {
  input { background-color: green; }
}
<div id="container">
  <div><input></div>
</div>

Sebelumnya, @container memerlukan jenis penampung selain nama.

Melacak bug #40287550 | Entri ChromeStatus.com | Spesifikasi

Aturan @: Deteksi fitur CSS

Fitur ini menambahkan fungsi at-rule() ke CSS @supports yang memungkinkan penulis mendeteksi dukungan untuk aturan @CSS.

Bug pelacakan #40211832 | Entri ChromeStatus.com | Spesifikasi

Pembentukan teks dan rendering glyph avar2 Open Font Format

Tabel avar (Variasi Sumbu) versi 2 memungkinkan desainer font membuat font variabel dengan kontrol yang lebih baik atas interpolasi. Meskipun spesifikasi font variabel asli menangani sumbu secara independen, avar2 memungkinkan sumbu saling memengaruhi. Hal ini menghasilkan font yang lebih mudah digunakan oleh penulis konten dan memungkinkan penyimpanan yang ringkas.

Avar2 berfungsi dengan menggunakan konsep variasi font yang sama, tetapi menerapkan nilai delta variabel ke spesifikasi sumbu desain itu sendiri. Selain itu, Anda dapat melakukannya di berbagai sumbu.

Sebagai contoh, fitur ini memungkinkan desainer font membuat "penggeser meta" yang mengontrol beberapa sumbu variasi sekaligus, sehingga pengguna tidak perlu menyesuaikan dan menemukan sudut yang berguna dari ruang desain font.

Avar2 memberi desainer font kontrol yang lebih baik atas ruang variasi yang dapat digunakan dari font mereka, dan memungkinkan mereka mengoordinasikan penyesuaian sumbu desain di beberapa sumbu.

Dengan menentukan hubungan antar-sumbu secara matematis dalam tabel avar versi 2, font dapat mencapai desain yang kompleks dengan lebih sedikit master, sehingga menghasilkan ukuran file yang lebih kecil, karena interpolasi disimpan secara lebih efisien.

Melacak bug #40246300 | Entri ChromeStatus.com | Spesifikasi

Kata kunci revert-rule

Kata kunci revert-rule mengembalikan susunan aturan ke aturan sebelumnya, mirip dengan cara revert-layer mengembalikan susunan aturan ke lapisan sebelumnya. Contoh:

div { color: green; }
div { color: revert-rule; /* Effectively green */ }

Hal ini sangat berguna jika dikombinasikan dengan kondisi, karena memungkinkan Anda menghapus aturan saat ini jika beberapa kondisi tidak terpenuhi:

div {
  display: if(style(--layout: fancy): grid; else: revert-rule);
}

Melacak bug #393582263 | Entri ChromeStatus.com | Spesifikasi

Pemuatan lambat untuk elemen video dan audio

Menambahkan atribut loading ke elemen <video> dan <audio>, sehingga developer dapat menunda pemuatan resource media hingga elemen berada di dekat viewport menggunakan loading="lazy". Hal ini sesuai dengan perilaku pemuatan lambat yang ada untuk elemen <img> dan <iframe>, sehingga meningkatkan performa pemuatan halaman dan mengurangi penggunaan data.

Bug pelacakan #469111735 | Entri ChromeStatus.com | Spesifikasi

text-decoration-skip-ink: all

Menambahkan dukungan untuk nilai all untuk properti CSS text-decoration-skip-ink.

Properti text-decoration-skip-ink sudah mendukung auto dan none. Nilai all memperluasnya dengan menerapkan penghilangan tinta tanpa syarat ke semua glif —termasuk karakter CJK—sedangkan auto membiarkan karakter CJK tidak dihilangkan karena penghilangan tinta cenderung menghasilkan hasil visual yang tidak diinginkan untuk skrip ideografis pada posisi garis bawah yang umum.

Dengan text-decoration-skip-ink: all, developer yang telah menyesuaikan text-underline-position atau text-underline-offset untuk menghindari bentrokan dengan glif CJK dapat secara eksplisit memilih untuk mengaktifkan penghilangan tinta untuk karakter tersebut juga.

Melacak bug #40675832 | Entri ChromeStatus.com | Spesifikasi

Menetapkan dropEffect dengan benar untuk acara dragEnter, dragLeave, dan dragOver

Spesifikasi tarik lalu lepas memerlukan atribut dropEffect objek dataTransfer untuk memiliki nilai yang telah ditentukan sebelumnya pada dragEnter, dragOver, dan dragLeave. Operasi tarik lalu masuk dan tarik lalu lewat harus memiliki dropEffect berdasarkan effectAllowed saat ini, dan dragLeave harus selalu memiliki none dropEffect. Saat ini, Chromium tidak mematuhi aturan ini. Dengan peluncuran fitur ini, Chromium akan mulai mematuhi spesifikasi dan menetapkan nilai yang benar ke atribut ini sehingga developer web dapat mulai mengandalkannya.

Bug pelacakan #434151262 | Entri ChromeStatus.com | Spesifikasi

Penekanan peristiwa pointer saat mulai menarik

Menurut spesifikasi HTML, saat penarikan dimulai, agen pengguna harus mengirim peristiwa yang sesuai ke sumber penarikan untuk menunjukkan bahwa aliran peristiwa penunjuk telah berakhir, dan bahwa ia tidak boleh mengharapkan peristiwa lagi dari penunjuk ini. Kode ini telah diimplementasikan sebagian untuk peristiwa mouse dan diimplementasikan sepenuhnya untuk tarikan sentuh di Android. Dengan pekerjaan dalam fitur ini, kami berupaya untuk sepenuhnya memenuhi persyaratan spesifikasi ini di semua platform lainnya. Praktisnya, ini berarti bahwa setelah penarikan dimulai, sumber penarikan akan menerima peristiwa pointercancel, pointerout, dan pointerleave untuk menunjukkan bahwa aliran peristiwa saat ini telah selesai.

Bug pelacakan #452372355 | Entri ChromeStatus.com | Spesifikasi

Kemampuan

Pelokalan manifes

Mendukung pelokalan anggota manifes sehingga aplikasi dapat menyesuaikan nama, deskripsi, ikon, dan pintasannya dengan bahasa dan wilayah pengguna. Developer menyediakan nilai yang dilokalkan dalam manifes aplikasi web, dan browser secara otomatis memilih resource yang sesuai berdasarkan setelan bahasa pengguna, sehingga memperkenalkan dukungan bahasa di berbagai pasar.

Pelajari lebih lanjut di Dukungan pelokalan untuk manifes aplikasi web.

Bug pelacakan #380491647 | Entri ChromeStatus.com | Spesifikasi

Web di Android

Web Serial API di Android

Web Serial API menyediakan antarmuka untuk terhubung ke perangkat serial, baik melalui port serial di sistem pengguna atau perangkat USB dan Bluetooth yang dapat dilepas yang mengemulasi port serial. Sekarang didukung di Android.

Pengguna, terutama di sektor pendidikan, hobi, dan industri, menghubungkan perangkat periferal ke komputer mereka yang memerlukan software kustom untuk mengontrolnya. Misalnya, robotika sering digunakan untuk mengajari pemrograman komputer dan elektronik di sekolah. Hal ini memerlukan software yang dapat mengupload kode ke robot atau mengontrolnya dari jarak jauh. Dalam lingkungan industri atau hobi, peralatan seperti penggiling, pemotong laser, atau printer 3D dikontrol oleh program yang berjalan di komputer yang terhubung. Perangkat ini sering dikontrol oleh mikrokontroler kecil menggunakan koneksi serial.

Untuk mengetahui informasi selengkapnya, lihat panduan Web Serial API di web.dev dan spesifikasi Web Serial.

Bug pelacakan #365514951 | Entri ChromeStatus.com

SharedWorker di Android

Untuk waktu yang lama, SharedWorker telah dinonaktifkan di Android karena kekhawatiran tentang siklus prosesnya yang tidak dapat diprediksi. Instance SharedWorker dapat berakhir secara tiba-tiba, tanpa memberi tahu pengguna atau developer web.

Namun, diskusi baru-baru ini di GitHub (lihat diskusi GitHub) menunjukkan bahwa sifat siklus proses SharedWorker yang tidak dapat diprediksi mungkin tidak menjadi masalah yang signifikan seperti yang diperkirakan sebelumnya. Berdasarkan hal ini, SharedWorker diaktifkan kembali di Android selama perilaku ini diselidiki untuk memastikan pengalaman yang stabil dan dapat diandalkan.

Melacak bug #40290702 | Entri ChromeStatus.com | Spesifikasi

Web API

WebGPU: Fitur linear_indexing

Fitur ini menambahkan fungsi ke spesifikasi WebGPU setelah pengiriman pertamanya di browser.

Menambahkan dua nilai bawaan shader komputasi baru untuk kualitas hidup pengguna. Nilai ini diterapkan untuk semua backend (sebagai polyfill nilai bawaan yang ada).

Bug pelacakan #482840564 | Entri ChromeStatus.com | Spesifikasi

Mode UI Langsung untuk Autentikasi Web

Mode baru untuk navigator.credentials.get() yang menyebabkan UI login browser ditampilkan kepada pengguna jika ada kunci sandi atau sandi untuk situs yang langsung diketahui oleh browser, atau menolak promise dengan NotAllowedError jika tidak ada kredensial tersebut. Hal ini memungkinkan situs menghindari menampilkan halaman login jika browser dapat menawarkan pilihan kredensial login yang kemungkinan berhasil, sekaligus tetap mengizinkan alur halaman login tradisional untuk kasus saat tidak ada kredensial tersebut.

Bug pelacakan #408002783 | Entri ChromeStatus.com | Spesifikasi

Mendapatkan kemampuan Konfirmasi Pembayaran Aman

Menambahkan metode statis baru ke Permintaan Pembayaran yang memungkinkan developer web mendapatkan kemampuan penerapan Konfirmasi Pembayaran Aman di browser.

Hal ini membantu developer web mengetahui kemampuan yang tersedia untuk Konfirmasi Pembayaran Aman sehingga mereka dapat memutuskan apakah akan menggunakan Konfirmasi Pembayaran Aman dengan kemampuan tersebut atau tidak.

Melacak bug #484043990 | Entri ChromeStatus.com | Spesifikasi

Shared worker dengan masa aktif yang diperpanjang

Update ini menambahkan opsi baru, extendedLifetime: true, ke konstruktor SharedWorker. Opsi baru ini meminta agar shared worker tetap aktif meskipun semua klien saat ini telah dihapus muatannya. Hal ini memungkinkan halaman melakukan tugas asinkron yang memerlukan JavaScript setelah halaman dihapus muatannya, tanpa perlu mengandalkan service worker.

Melacak bug #400473072 | Entri ChromeStatus.com | Spesifikasi

Prompt API

Prompt API memberi developer web akses langsung ke model bahasa AI di perangkat yang disediakan browser. Desain API menawarkan kontrol terperinci, yang selaras dengan bentuk API cloud, untuk meningkatkan kualitas situs secara progresif dengan interaksi model yang disesuaikan dengan kasus penggunaan individual. Hal ini melengkapi API model bahasa berbasis tugas, misalnya, Summarizer API, serta berbagai API dan framework untuk inferensi di perangkat yang digeneralisasi dengan model ML yang disediakan developer.

Implementasi awal mendukung input teks, gambar, dan audio. Selain itu, batasan respons memastikan bahwa teks yang dihasilkan sesuai dengan format ekspresi reguler dan skema JSON yang telah ditentukan sebelumnya.

Hal ini mendukung berbagai kasus penggunaan, mulai dari membuat teks gambar dan melakukan penelusuran visual, hingga mentranskripsikan audio, mengklasifikasikan peristiwa suara, membuat teks yang mengikuti petunjuk tertentu, dan mengekstrak informasi atau insight dari materi sumber multimodal.

Bug pelacakan #417526788 | Entri ChromeStatus.com | Spesifikasi

Jaringan dan konektivitas

Aturan ContextJ IDNA

IDNA adalah mekanisme untuk karakter non-ASCII dalam nama domain. Mengenkode URL seperti http://네이버.한국/ sebagai http://xn--950bt9s8xi.xn--3e0b707e/ (pengalihan ke naver.com).

Spesifikasi URL menetapkan flag CheckJoiners, yang mengaktifkan aturan ContextJ di IDNA2008. Hal ini melarang penggunaan ZWNJ (U+200C ZERO WIDTH NON-JOINER) dan ZWJ (U+200D ZERO WIDTH JOINER) di sebagian besar tempat dalam URL. Penerapan ini meneruskan opsi UIDNA_CHECK_CONTEXTJ ke ICU, tempat aturan ini diterapkan.

Melacak bug #40765949 | Entri ChromeStatus.com | Spesifikasi

Menggunakan kembali gambar no-store pada penetapan ulang same-src

Mengizinkan penggunaan ulang gambar yang tersedia di dokumen yang sama untuk melewati pemuatan ulang Cache-Control: no-store saat nilai src yang sama ditetapkan ulang ke elemen <img>. Sebelumnya, Blink akan mengambil ulang gambar meskipun sudah didekode dan tersedia dalam dokumen. Hal ini sesuai dengan perilaku Gecko dan WebKit yang ada.

Bug pelacakan #486562295 | Entri ChromeStatus.com | Spesifikasi

Performa

ContentType di Resource Timing

Menambahkan kolom contentType ke PerformanceResourceTiming untuk menyimpan string yang sesuai dengan header HTTP Content-Type dari resource yang diambil seperti yang ditampilkan oleh server.

Bug pelacakan #1366706 | Entri ChromeStatus.com | Spesifikasi

WebRTC Datachannel: Selalu negosiasikan saluran data

Menerapkan ekstensi WebRTC alwaysNegotiateDataChannels yang menentukan cara aplikasi menegosiasikan saluran data dalam penawaran SDP sebelum membuat saluran data. Bagian ini juga menegosiasikan bagian m= data sebelum bagian m audio atau video dan menggunakannya sebagai "bagian m= yang diberi tag penawar" untuk BUNDLE.

Hal ini berarti:

const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true });
const offer = await pc.createOffer();

akan membuat penawaran dengan m-line aplikasi di SDP dan:

const pc = new RTCPeerConnection({ alwaysNegotiateDataChannels: true });
pc.addTransceiver('audio');
pc.createDataChannel('somechannel');
const offer = await pc.createOffer();

akan membuat penawaran yang menegosiasikan m-line aplikasi yang diikuti dengan m-line audio dalam SDP.

Melacak bug #433898678 | Entri ChromeStatus.com | Spesifikasi

Uji coba origin baru

Skrip modul CSS deklaratif

Skrip Modul CSS Deklaratif adalah ekstensi dari Skrip Modul CSS berbasis skrip yang ada. Hal ini memungkinkan developer membagikan stylesheet deklaratif dengan root shadow, termasuk root shadow deklaratif. Developer dapat menentukan modul gaya inline dengan <style type="module" specifier="foo"> dan menerapkan modul deklaratif ke shadow DOM deklaratif dengan mereferensikan penentu atau URL, seperti <template shadowrootmode="open" shadowrootadoptedstylesheets="foo">.

Uji Coba Origin | Bug pelacakan #448174611 | Entri ChromeStatus.com | Spesifikasi

Container Timing API

Container Timing API memungkinkan pemantauan saat bagian DOM yang diberi anotasi ditampilkan di layar dan telah menyelesaikan paint awal. Developer akan dapat menandai subbagian DOM dengan atribut containertiming (mirip dengan elementtiming untuk Element Timing API) dan menerima entri performa saat bagian tersebut telah digambar untuk pertama kalinya. API ini akan memungkinkan developer mengukur waktu berbagai komponen di halaman mereka.

Uji Coba Origin | Bug pelacakan #382422286 | Entri ChromeStatus.com | Spesifikasi

Elemen penginstalan HTML aplikasi web

Memungkinkan situs secara deklaratif meminta pengguna menginstal aplikasi web. Elemen ini secara opsional menerima dua atribut yang memungkinkan penginstalan konten dari origin yang berbeda.

Uji Coba Origin | Bug pelacakan #454827186 | Entri ChromeStatus.com | Spesifikasi

Durasi gaya Long Animation Frames

Menambahkan informasi styleDuration dan forcedStyleDuration ke Long Animation Frame API, sehingga developer dapat membedakan waktu gaya dan tata letak.

Uji Coba Origin | Bug pelacakan #476826067 | Entri ChromeStatus.com | Spesifikasi

HTML dalam kanvas

HTML dalam kanvas memungkinkan penyesuaian rendering HTML menggunakan kanvas dengan tiga primitif baru: atribut untuk mengaktifkan elemen kanvas (layoutsubtree), metode untuk menggambar elemen turunan (2d: drawElementImage, webgl: texElementImage2D, webgpu: copyElementImageToTexture), dan peristiwa paint yang diaktifkan untuk menangani update.

Uji Coba Origin | Bug pelacakan #500967896 | Entri ChromeStatus.com | Spesifikasi

Daftar yang Diizinkan untuk Koneksi

Daftar Izin Koneksi adalah fitur yang dirancang untuk memberikan kontrol eksplisit atas endpoint eksternal dengan membatasi koneksi yang dimulai menggunakan Fetch API atau API platform web lainnya dari dokumen atau pekerja.

Penerapan yang diusulkan melibatkan distribusi daftar endpoint yang sah dari server melalui header respons HTTP. Sebelum membuat koneksi apa pun oleh agen pengguna atas nama halaman, agen akan mengevaluasi tujuan berdasarkan daftar yang diizinkan ini; koneksi ke endpoint terverifikasi akan diizinkan, sementara koneksi yang gagal mencocokkan entri dalam daftar akan diblokir.

Uji Coba Origin | Bug pelacakan #447954811 | Entri ChromeStatus.com | Spesifikasi

Parameter sampling API perintah

Menambahkan parameter pengambilan sampel ke Prompt API. Parameter ini mengontrol cara pengambilan sampel token dari model, sehingga memberi developer kontrol atas "kreativitas" atau "keacakan" output. Selain itu, kode ini menambahkan atribut ke instance LanguageModel untuk membaca nilai yang ditetapkan, serta fungsi LanguageModel statis untuk mendapatkan nilai default dan maksimum dari parameter ini.

Implementasi pertama menambahkan parameter temperature dan topK.

Uji Coba Origin | Bug pelacakan #496663356 | Entri ChromeStatus.com | Spesifikasi

Mem-parsing petunjuk pemrosesan di HTML

Petunjuk pemrosesan (sintaksis: <?target data>) adalah konstruksi DOM yang ada, yang diekspos dalam XML, yang memungkinkan objek node yang bukan elemen tetapi dapat memiliki beberapa makna semantik untuk pemrosesan dokumen.

Misalnya, dapat digunakan untuk menunjukkan rentang streaming atau penyorotan tanpa memerlukan elemen DOM baru dan mengubah struktur DOM sejauh yang berkaitan dengan CSS, atau sebagai direktif untuk parser HTML tentang cara melakukan buffering dan streaming.

Melacak bug #481087638 | Entri ChromeStatus.com

OpaqueRange

OpaqueRange merepresentasikan rentang teks aktif dalam nilai kontrol formulir, seperti <textarea> atau <input> berbasis teks, sehingga developer dapat menggunakan teks nilai menggunakan API seperti rentang.

API ini memungkinkan operasi seperti getBoundingClientRect(), getClientRects(), dan integrasi dengan CSS Custom Highlight API untuk UI seperti saran inline, sorotan, dan popover yang ditambatkan. Hal ini mempertahankan enkapsulasi dengan hanya mengekspos offset nilai sambil menampilkan null untuk startContainer dan endContainer, sehingga endpoint DOM dan struktur internal tidak diekspos.

Uji Coba Origin | Melacak bug #421421332 | Entri ChromeStatus.com