Bun 1.4 wprowadza wbudowane API WebView, które uruchamia bezgłowy (headless) Chromium lub WebKit, zużywając około jednej trzeciej pamięci RAM typowej dla Playwright lub Puppeteer, co daje programistom lekką alternatywę dla scrapingu opartego na AI i automatyzacji przeglądarek.
Co dodaje Bun 1.4
Główną nowością w wydaniu jest Bun.WebView. Udostępnia on Chrome DevTools Protocol bezpośrednio z runtime'u Bun, dzięki czemu programista może uruchomić bezgłową przeglądarkę bez instalowania zewnętrznych pakietów npm czy binarnych sterowników. API oferuje również backend WebKit na macOS, co pozwala użytkownikom wybrać silnik najlepiej dopasowany do ich zadań.
Jak działają oszczędności pamięci
Pełna instancja Chromium uruchomiona przez Playwright lub Puppeteer regularnie przekracza 500 MB pamięci rezydentnej, nawet przy prostych stronach. Bun.WebView raportuje zużycie w zakresie 192–256 MB dla „złożonych stron”. Redukcja wynika ze ściślejszej integracji z runtime'em oraz możliwości uruchomienia przeglądarki w trybie headless, który pomija wiele ciężkich komponentów, które ogólne narzędzia do automatyzacji utrzymują w pamięci.
Test w rzeczywistych warunkach: małe API JSON dla Claude Code
Simon Willison zbudował dowód koncepcji (proof-of-concept), który pozwala Claude Code — modelowi LLM, który potrafi generować kod, ale nie może klikać ani renderować JavaScriptu — na scrapowanie stron i wykonywanie dowolnych skryptów. Konfiguracja składa się z minimalnego serwera TypeScript, który:
- Odbiera żądanie z docelowym adresem URL i opcjonalnym kodem JavaScript.
- Instancjonuje
new WebView({ url }). - Wywołuje
evaluate(script), aby uruchomić kod wewnątrz strony. - Zwraca wynik jako JSON.
Cała usługa działa w kontenerze na tyle małym, że bez problemu mieści się w niewielkiej przestrzeni, znacznie poniżej limitów 1 GB często stosowanych w prostych zadaniach scrapingu. Poniższy fragment kodu przedstawia główną logikę:
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 może teraz wysyłać zapytania /scrape?url=…&script=… i otrzymywać wyrenderowane dane, co skutecznie rozszerza jego możliwości bez narzutu związanego z pełnym stosem przeglądarkowym.
Kiedy Bun.WebView ma sens
- Środowiska o niskiej ilości pamięci – idealne dla platform edge lub serverless, gdzie pamięć RAM jest towarem deficytowym.
- Potoki (pipelines) wrażliwe na koszty – uruchamianie lekkiego kontenera obok agenta LLM pozwala obniżyć rachunki za infrastrukturę.
- Prosta automatyzacja – zadania takie jak wyodrębnianie tytułów, robienie zrzutów ekranu czy wypełnianie formularzy na pojedynczych stronach działają od razu po użyciu.
API wspiera również testowanie wizualne (robienie zrzutów ekranu i porównywanie różnic) oraz wielokrokowe wypełnianie formularzy, co czyni je wszechstronnym narzędziem dla programistów, którzy potrzebują wystarczającej mocy przeglądarki bez wdrażania ciężkich frameworków.
Uwagi, które należy wziąć pod uwagę
Bun.WebView to nowość, więc jego zestaw funkcji odstaje od dojrzałych ekosystemów Playwright i Puppeteer. Zaawansowane przypadki użycia — takie jak przechwytywanie sieci, orkiestracja wielu przeglądarek czy rozbudowane wsparcie dla wtyczek — mogą wciąż wymagać starszych narzędzi. Debugowanie jest również bardziej manualne, ponieważ wbudowane API nie zapewnia jeszcze bogatego interfejsu inspektora, który jest częścią większych frameworków.
Co obserwować dalej
Reakcja społeczności ukształtuje tempo rozszerzania możliwości Bun.WebView. Wcześni użytkownicy prawdopodobnie opublikują wrappery, narzędzia do testowania i przewodniki integracyjne, które mogą zniwelować różnicę względem uznanych pakietów do automatyzacji. Warto śledzić notatki z wydania Bun pod kątem poprawek wydajności, dodatkowych opcji silników przeglądarek oraz wszelkich wzmocnień bezpieczeństwa, które staną się niezbędne wraz z szerszym wykorzystaniem API.
Podsumowując: WebView w Bun 1.4 oferuje programistom lekką i oszczędną pod względem pamięci ścieżkę do bezgłowego przeglądania, otwierając drzwi do taniego, przyjaznego dla kontenerów scrapingu i automatyzacji opartej na AI — o ile obciążenie mieści się w ramach obecnych możliwości funkcji.
