Bun 1.4는 Playwright나 Puppeteer에서 사용하는 일반적인 RAM의 약 3분의 1 수준만 사용하는 헤드리스 Chromium 또는 WebKit을 실행할 수 있는 내장 WebView API를 탑재하여 출시되었습니다. 이를 통해 개발자는 AI 기반 스크래핑 및 브라우저 자동화를 위한 가벼운 옵션을 확보할 수 있습니다.

Bun 1.4에서 추가된 기능

이번 릴리스의 주요 기능은 Bun.WebView입니다. 이 API는 Bun 런타임에서 Chrome DevTools Protocol을 직접 노출하므로, 개발자는 외부 npm 패키지나 드라이버 바이너리를 설치하지 않고도 헤드리스 브라우저를 실행할 수 있습니다. 또한 macOS에서는 WebKit 백엔드를 제공하여 사용자가 자신의 워크로드에 가장 적합한 엔진을 선택할 수 있도록 합니다.

메모리 절감 원리

Playwright 또는 Puppeteer를 통해 실행되는 전체 Chromium 인스턴스는 간단한 페이지를 로드할 때조차 정기적으로 500MB 이상의 상주 메모리를 초과합니다. 반면 Bun.WebView는 "복잡한 페이지"에 대해 192MB~256MB 범위의 사용량을 기록합니다. 이러한 감소는 런타임과의 긴밀한 통합과, 일반적인 자동화 도구들이 계속 로드해 두는 많은 무거운 구성 요소들을 건너뛰는 헤드리스 모드 실행 능력 덕분입니다.

실전 테스트: Claude Code를 위한 초소형 JSON API

Simon Willison은 코드는 생성할 수 있지만 클릭이나 JavaScript 렌더링은 할 수 없는 LLM인 Claude Code가 페이지를 스크래핑하고 임의의 스크립트를 실행할 수 있도록 하는 개념 증명(PoC)을 구축했습니다. 이 설정은 다음과 같은 최소한의 TypeScript 서버로 구성됩니다:

  1. 대상 URL과 선택적인 JavaScript가 포함된 요청을 받습니다.
  2. new WebView({ url })를 인스턴스화합니다.
  3. evaluate(script)를 호출하여 페이지 내부에서 코드를 실행합니다.
  4. 결과를 JSON으로 반환합니다.

전체 서비스는 간단한 스크래핑 작업에 흔히 사용되는 1GB 컨테이너보다 훨씬 작은, 소형 컨테이너에 충분히 들어갈 정도로 가볍게 실행됩니다. 아래 코드 스니펫은 핵심 로직을 보여줍니다:

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가 유용한 경우

  • 저메모리 환경 – RAM 사용이 제한적인 에지(edge) 또는 서버리스 플랫폼에 이상적입니다.
  • 비용 민감형 파이프라인 – LLM 에이전트 옆에서 경량 컨테이너를 실행하여 인프라 비용을 절감할 수 있습니다.
  • 간단한 자동화 – 제목 추출, 스크린샷 캡처, 또는 단일 페이지 양식 제출과 같은 작업이 즉시 가능합니다.

또한 이 API는 시각적 테스트(스크린샷 캡처 및 차이 비교)와 다단계 양식 채우기를 지원하므로, 무거운 프레임워크를 도입하지 않고도 적절한 브라우저 기능이 필요한 개발자에게 다재다능한 도구가 됩니다.

고려해야 할 주의 사항

Bun.WebView는 새로 추가된 기능이므로, 성숙한 생태계를 갖춘 Playwright나 Puppeteer에 비해 기능이 부족할 수 있습니다. 네트워크 인터셉션, 멀티 브라우저 오케스트레이션, 또는 광범위한 플러그인 지원과 같은 고급 사용 사례에는 여전히 기존 도구가 필요할 수 있습니다. 또한 내장 API가 대형 프레임워크에서 제공하는 풍부한 인스펙터(inspector) UI를 아직 제공하지 않으므로 디버깅이 더 수동적입니다.

향후 주목할 점

커뮤니티의 반응에 따라 Bun.WebView의 기능 확장 속도가 결정될 것입니다. 초기 사용자들은 기존 자동화 제품군과의 격차를 줄일 수 있는 래퍼(wrapper), 테스트 유틸리티, 통합 가이드를 발표할 가능성이 높습니다. API 사용이 확대됨에 따라 성능 개선, 추가 브라우저 엔진 옵션, 그리고 필요한 보안 강화 조치 등이 Bun의 릴리스 노트에 어떻게 반영되는지 계속 지켜보시기 바랍니다.

요약하자면: Bun 1.4의 WebView는 개발자에게 헤드리스 브라우징을 위한 가볍고 저메모리 중심의 경로를 제공하며, 작업 부하가 현재의 기능 범위 내에 있다면 저렴하고 컨테이너 친화적인 AI 기반 스크래핑 및 자동화의 길을 열어줍니다.