Bun v1.3.14
type: NewsArticle
description: Here is a factual summary of the article: Bun version 1.3.14 introduces a built-in `Bun.Image` API for server-side image processing, supporting formats like JPEG, PNG, WebP, and GIF with chainable transforms such as resize, rotate, and format conversion, designed as a zero-dependency alternative to sharp. The update also adds an experimental global virtual store for `bun install --linker=isolated`, which uses symlinks instead of file copies to significantly speed up warm installs by sharing packages from a central cache.
date published: 2026-05-13T03:19:35+00:00
date modified: 2026-05-22T20:39:08+00:00
language: en
is accessible for free: true
article body: #### To install Bun ``` curl -fsSL https://bun.sh/install | bash npm install -g bun powershell -c "irm bun.sh/install.ps1|iex" scoop install bun brew tap oven-sh/bun brew install bun docker pull oven/bun docker run --rm --init --ulimit memlock=-1:-1 oven/bun ``` #### To upgrade Bun ``` bun upgrade ``` `Bun.Image` — Built-in Image Processing `Bun.Image` — Built-in Image ProcessingBun now ships a built-in image processing API that handles JPEG, PNG, WebP, GIF, and BMP — plus HEIC, AVIF, and TIFF on macOS and Windows — with **zero native module installs**. `Bun.Image` provides a chainable pipeline for decoding, transforming, and encoding images, designed as a drop-in alternative to sharp for common server-side image operations. ``` // Resize and convert a photo to WebP await Bun.file("photo.jpg") .image() .resize(1024, 1024, { fit: "inside" }) .rotate(90) .webp({ quality: 85 }) .write("thumb.webp"); // Generate a thumbnail from an upload in a single expression return new Response(new Bun.Image(upload).resize(200).jpeg()); ``` [Input sources](#input-sources) `Bun.Image` accepts path strings, `ArrayBuffer` /`TypedArray` (zero-copy), `Blob` /`BunFile` /`S3File` , and `data:` URLs. You can also use `Bun.file("photo.jpg").image()` or `blob.image()` to start a pipeline. [Chainable transforms](#chainable-transforms) The pipeline supports `.resize(w, h?, {filter, fit, withoutEnlargement})` , `.rotate(90|180|270)` , `.flip()` , `.flop()` , and `.modulate({brightness, saturation})` . Output format is set with `.jpeg()` , `.png()` , `.webp()` , `.heic()` , or `.avif()` — each with format-specific quality/compression options. [Resize filters](#resize-filters) All sharp filters are supported: `nearest` , `box` , `bilinear` , `cubic` , `mitchell` , `lanczos2` , `lanczos3` , plus `mks2013` and `mks2021` . [Terminal methods](#terminal-methods) All processing runs off the main thread (except `metadata()` ). Output via `.bytes()` , `.buffer()` , `.blob()` , `.toBase64()` , `.dataurl()` …
publisher: Web Pulse
keywords: developer-tools, open-source, products
mentions: Bun
mentions: JPEG
mentions: PNG
mentions: WebP
mentions: GIF
mentions: BMP
mentions: HEIC
mentions: AVIF
citation: CreativeWork