Bun 1.4 постачається з вбудованим WebView API, який запускає headless Chromium або WebKit, споживаючи приблизно на третину менше оперативної пам'яті, ніж зазвичай потребують Playwright або Puppeteer. Це пропонує розробникам легкий та оптимізований варіант для скрейпінгу на базі ШІ та автоматизації браузерів.

Що додає Bun 1.4

Головною особливістю релізу є Bun.WebView. Він надає доступ до Chrome DevTools Protocol безпосередньо з середовища виконання Bun, тому розробник може запустити headless-браузер без встановлення зовнішніх npm-пакетів або бінарних файлів драйверів. API також пропонує бекенд WebKit на macOS, дозволяючи користувачам обирати рушій, який найкраще підходить для їхніх завдань.

Як працює економія пам'яті

Повноцінний екземпляр Chromium, запущений через Playwright або Puppeteer, зазвичай перевищує 500 МБ оперативної пам'яті навіть для простих сторінок. Bun.WebView звітує про використання в діапазоні 192–256 МБ для «складних сторінок». Скорочення досягається завдяки тіснішій інтеграції з середовищем виконання та можливості запускати браузер у headless-режимі, який пропускає багато важких компонентів, що зазвичай завантажуються в інструментах загальної автоматизації.

Реальне тестування: крихітний JSON API для Claude Code

Саймон Віллісон створив прототип (proof-of-concept), який дозволяє Claude Code — LLM, що може генерувати код, але не вміє клікати або рендерити JavaScript — збирати дані зі сторінок та виконувати довільні скрипти. Конструкція складається з мінімального TypeScript-сервера, який:

  1. Отримує запит із цільовим URL та необов'язковим JavaScript.
  2. Створює екземпляр new WebView({ url }).
  3. Викликає evaluate(script), щоб виконати код на сторінці.
  4. Повертає результат у форматі JSON.

Весь сервіс працює в контейнері, розмір якого дозволяє легко розміститися в невеликому середовищі, що значно менше за 1 ГБ контейнерів, які часто використовуються для простих завдань скрейпінгу. Наведений нижче фрагмент коду відображає основну логіку:

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 може надсилати запит /scrape?url=…&script=… та отримувати відрендерені дані, фактично розширюючи свої можливості без накладних витрат на повний стек браузера.

Коли Bun.WebView є доцільним

  • Середовища з обмеженою пам'яттю — ідеально для edge або serverless-платформ, де оперативна пам'ять є дефіцитним ресурсом.
  • Економічно ефективні конвеєри (pipelines) — запуск легкого контейнера поруч із LLM-агентом дозволяє знизити витрати на інфраструктуру.
  • Проста автоматизація — такі завдання, як вилучення заголовків, створення скриншотів або відправка форм на одиночних сторінках, працюють «з коробки».

API також підтримує візуальне тестування (створення скриншотів та порівняння їхніх відмінностей) і заповнення багатоетапних форм, що робить його універсальним інструментом для розробників, яким потрібна лише необхідна потужність браузера без залучення важких фреймворків.

Нюанси, які слід враховувати

Bun.WebView — це нове доповнення, тому його функціональність поки що поступається зрілим екосистемам Playwright та Puppeteer. Для складних сценаріїв використання — перехоплення мережевого трафіку, оркестрації кількох браузерів або розширеної підтримки плагінів — все ще можуть знадобитися старіші інструменти. Налагодження також є більш ручним, оскільки вбудований API ще не надає багатого інтерфейсу інспектора, який постачається у великих фреймворках.

На що звернути увагу далі

Реакція спільноти визначатиме, як швидко Bun.WebView розширюватиме свої можливості. Перші користувачі, ймовірно, опублікують обгортки (wrappers), утиліти для тестування та посібники з інтеграції, що допоможе скоротити розрив із усталеними наборами інструментів автоматизації. Стежте за примітками до релізів Bun на предмет оптимізації продуктивності, додаткових варіантів рушіїв браузерів та будь-якого посилення безпеки, яке стане необхідним у міру ширшого використання API.

Підсумок: WebView у Bun 1.4 пропонує розробникам легкий шлях до headless-браузингу з низьким споживанням пам'яті, відкриваючи двері для дешевого та придатного для контейнеризації скрейпінгу та автоматизації на базі ШІ — за умови, що робоче навантаження вписується в межі поточних можливостей API.