Bun 1.4 hadir dengan API WebView bawaan yang menjalankan Chromium atau WebKit secara headless menggunakan sekitar sepertiga RAM yang biasanya dibutuhkan oleh Playwright atau Puppeteer, memberikan opsi yang lebih ramping bagi pengembang untuk scraping berbasis AI dan otomatisasi browser.

Apa yang ditambahkan Bun 1.4

Fitur utama dari rilis ini adalah Bun.WebView. Fitur ini mengekspos Chrome DevTools Protocol secara langsung dari runtime Bun, sehingga pengembang dapat menjalankan browser headless tanpa perlu menginstal paket npm eksternal atau biner driver. API ini juga menawarkan backend WebKit pada macOS, memungkinkan pengguna memilih engine yang paling sesuai dengan beban kerja mereka.

Cara kerja penghematan memori

Instansi Chromium penuh yang dijalankan melalui Playwright atau Puppeteer biasanya melebihi 500 MB memori residen, bahkan untuk halaman yang sederhana. Bun.WebView melaporkan penggunaan dalam rentang 192 MB-256 MB untuk “halaman kompleks”. Pengurangan ini berasal dari integrasi yang lebih erat dengan runtime dan kemampuan untuk menjalankan browser dalam mode headless yang melewatkan banyak komponen berat yang biasanya tetap dimuat oleh alat otomatisasi generik.

Uji coba dunia nyata: API JSON kecil untuk Claude Code

Simon Willison membangun proof-of-concept yang memungkinkan Claude Code—sebuah LLM yang dapat menghasilkan kode tetapi tidak dapat mengeklik atau merender JavaScript—untuk melakukan scraping halaman dan mengeksekusi skrip arbitrer. Pengaturannya terdiri dari server TypeScript minimal yang:

  1. Menerima permintaan dengan URL target dan JavaScript opsional.
  2. Menginstansiasi new WebView({ url }).
  3. Memanggil evaluate(script) untuk menjalankan kode di dalam halaman.
  4. Mengembalikan hasilnya sebagai JSON.

Seluruh layanan berjalan dalam kontainer yang cukup kecil untuk masuk dengan nyaman ke dalam kontainer kecil, jauh di bawah kontainer 1 GB yang sering digunakan untuk tugas scraping sederhana. Cuplikan kode di bawah ini menangkap logika intinya:

import { WebView } from "bun";

const server = Bun.serve({
  port: 3000,
  async fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/scrape") {
      const target = url.searchParams.get("url");
      const script = url.searchParams.get("script") || "return document.title";
      const wv = new WebView({ url: target });
      const result = await wv.evaluate(script);
      return Response.json({ result });
    }
    return new Response("Not found", { status: 404 });
  },
});

Claude Code sekarang dapat meminta /scrape?url=…&script=… dan menerima data yang telah dirender, secara efektif memperluas kemampuannya tanpa beban tambahan dari tumpukan browser penuh.

Kapan Bun.WebView masuk akal untuk digunakan

  • Lingkungan memori rendah – Ideal untuk platform edge atau serverless di mana RAM sangat terbatas.
  • Pipeline sensitif biaya – Menjalankan kontainer ringan di samping agen LLM menjaga biaya infrastruktur tetap rendah.
  • Otomatisasi sederhana – Tugas-tugas seperti ekstraksi judul, pengambilan tangkapan layar, atau pengiriman formulir satu halaman dapat langsung digunakan.

API ini juga mendukung pengujian visual (pengambilan dan perbandingan tangkapan layar) serta pengisian formulir multi-langkah, menjadikannya alat serbaguna bagi pengembang yang hanya membutuhkan kekuatan browser secukupnya tanpa harus menarik framework yang berat.

Hal-hal yang perlu dipertimbangkan

Bun.WebView adalah tambahan baru, sehingga set fiturnya masih tertinggal dari ekosistem Playwright dan Puppeteer yang sudah matang. Kasus penggunaan tingkat lanjut—intersepsi jaringan, orkestrasi multi-browser, atau dukungan plugin yang luas—mungkin masih memerlukan alat-alat lama. Debugging juga lebih manual, karena API bawaan belum menyediakan UI inspector yang kaya seperti yang disertakan oleh framework yang lebih besar.

Apa yang perlu diperhatikan selanjutnya

Respons komunitas akan membentuk seberapa cepat Bun.WebView memperluas kemampuannya. Pengguna awal kemungkinan akan menerbitkan wrapper, utilitas pengujian, dan panduan integrasi yang dapat menutup celah dengan rangkaian otomatisasi yang sudah mapan. Pantau terus catatan rilis Bun untuk penyesuaian performa, opsi mesin browser tambahan, dan penguatan keamanan apa pun yang menjadi perlu seiring dengan meluasnya penggunaan API ini.

Intinya: WebView dari Bun 1.4 memberikan jalur browsing headless yang ramping dan rendah memori bagi pengembang, membuka pintu bagi scraping dan otomatisasi berbasis AI yang murah dan ramah kontainer—asalkan beban kerjanya sesuai dengan cakupan fitur saat ini.