Bun 1.4 मध्ये एक बिल्ट-इन WebView API येते जी साधारणपणे Playwright किंवा Puppeteer साठी लागणाऱ्या RAM च्या केवळ एक तृतीयांश वापरून हेडलेस Chromium किंवा WebKit चालवते, ज्यामुळे डेव्हलपर्सना AI-आधारित स्क्रॅपिंग आणि ब्राउझर ऑटोमेशनसाठी एक कार्यक्षम पर्याय मिळतो.
Bun 1.4 मध्ये काय नवीन आहे
या रिलीजचे मुख्य वैशिष्ट्य म्हणजे Bun.WebView. हे Bun रनटाइममधून थेट Chrome DevTools Protocol उपलब्ध करून देते, ज्यामुळे डेव्हलपर बाह्य npm पॅकेजेस किंवा ड्रायव्हर बायनरीज इन्स्टॉल न करता हेडलेस ब्राउझर सुरू करू शकतो. हे API macOS वर WebKit बॅकएंड देखील प्रदान करते, ज्यामुळे वापरकर्त्यांना त्यांच्या कामासाठी (workload) सर्वात योग्य इंजिन निवडता येते.
मेमरीची बचत कशी होते
Playwright किंवा Puppeteer द्वारे सुरू केलेले पूर्ण Chromium इन्स्टन्स साध्या पेजेससाठी देखील नियमितपणे ५०० MB पेक्षा जास्त रेझिडेंट मेमरी वापरतात. Bun.WebView "कॉम्प्लेक्स पेजेस" साठी १९२ MB-२५६ MB च्या दरम्यान मेमरी वापरते. ही बचत रनटाइमसोबतच्या अधिक घट्ट एकत्रीकरणामुळे आणि ब्राउझरला अशा हेडलेस मोडमध्ये चालवण्याच्या क्षमतेमुळे होते, जो सामान्य ऑटोमेशन टूल्समध्ये लोड केल्या जाणाऱ्या अनेक जड (heavyweight) घटकांना वगळतो.
वास्तविक जगातील चाचणी: Claude Code साठी एक लहान JSON API
Simon Willison यांनी एक प्रूफ-ऑफ-कॉन्सेप्ट तयार केले आहे जे Claude Code—एक LLM जे कोड तयार करू शकते परंतु क्लिक किंवा JavaScript रेंडर करू शकत नाही—ला एखादे पेज स्क्रॅप करण्यास आणि कोणत्याही स्क्रिप्ट्स कार्यान्वित करण्यास सक्षम करते. यामध्ये एका किमान (minimal) TypeScript सर्व्हरचा समावेश आहे जो:
- टार्गेट URL आणि पर्यायी JavaScript सह विनंती (request) प्राप्त करतो.
new WebView({ url })तयार करतो.- पेजमधील कोड चालवण्यासाठी
evaluate(script)कॉल करतो. - निकाल JSON स्वरूपात परत करतो.
ही संपूर्ण सेवा एका लहान कंटेनरमध्ये सहज बसू शकेल इतकी लहान कंटेनरमध्ये चालते, जी साध्या स्क्रॅपिंग कामांसाठी सहसा वापरल्या जाणाऱ्या १ GB कंटेनरपेक्षा खूपच कमी आहे. खालील कोड स्निपेट मुख्य लॉजिक दर्शवते:
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) किंवा सर्व्हरलेस प्लॅटफॉर्मसाठी आदर्श जिथे RAM अत्यंत मौल्यवान आहे.
- खर्च-संवेदनशील पाइपलाइन्स – LLM एजंटच्या शेजारी एक हलका (lightweight) कंटेनर चालवल्यामुळे इन्फ्रास्ट्रक्चरचा खर्च कमी राहतो.
- साधे ऑटोमेशन – टायटल एक्स्ट्रॅक्शन, स्क्रीनशॉट कॅप्चर किंवा सिंगल-पेज फॉर्म सबमिशन यांसारखी कामे थेट (out of the box) करता येतात.
हे API व्हिज्युअल टेस्टिंग (स्क्रीनशॉट कॅप्चर आणि डिफ) आणि मल्टी-स्टेप फॉर्म फिलिंगला देखील सपोर्ट करते, ज्यामुळे हे डेव्हलपर्ससाठी एक अष्टपैलू साधन बनते ज्यांना जड फ्रेमवर्क न वापरता फक्त आवश्यक ब्राउझर पॉवर हवी आहे.
विचारात घेण्यासारख्या काही मर्यादा
Bun.WebView हे एक नवीन वैशिष्ट्य आहे, त्यामुळे याची वैशिष्ट्ये Playwright आणि Puppeteer च्या प्रगत इकोसिस्टमच्या तुलनेत मागे आहेत. प्रगत वापरासाठी—नेटवर्क इंटरसेप्शन, मल्टी-ब्राउझर ऑर्केस्ट्रेशन किंवा व्यापक प्लगइन सपोर्ट—कदाचित जुन्या साधनांची गरज भासू शकते. डीबगिंग देखील अधिक मॅन्युअल आहे, कारण बिल्ट-इन API मध्ये अद्याप मोठ्या फ्रेमवर्कप्रमाणे समृद्ध इन्स्पेक्टर UI उपलब्ध नाही.
पुढील काय पाहावे
समुदायाचा प्रतिसाद Bun.WebView ची क्षमता किती वेगाने वाढते हे ठरवेल. सुरुवातीचे वापरकर्ते (Early adopters) रॅपर्स, टेस्टिंग युटिलिटीज आणि इंटिग्रेशन गाईड्स प्रकाशित करण्याची शक्यता आहे, ज्यामुळे स्थापित ऑटोमेशन सूट्समधील अंतर कमी होऊ शकते. परफॉर्मन्स सुधारणा, अतिरिक्त ब्राउझर इंजिन पर्याय आणि API च्या वाढत्या वापरामुळे आवश्यक असलेल्या सुरक्षा सुधारणांसाठी Bun च्या रिलीज नोट्सवर लक्ष ठेवा.
थोडक्यात सांगायचे तर: Bun 1.4 चे WebView डेव्हलपर्सना हेडलेस ब्राउझिंगसाठी एक हलका आणि कमी मेमरीचा मार्ग देते, ज्यामुळे स्वस्त, कंटेनर-फ्रेंडली AI-आधारित स्क्रॅपिंग आणि ऑटोमेशनसाठी मार्ग मोकळा होतो—जर तुमचे काम सध्याच्या वैशिष्ट्यांच्या मर्यादेत बसत असेल तर.
