Image Kit
1.7.1
2026-10-07
- Fixed: the preview now behaves exactly like the image it stands for. The idle placeholder of a
<VImage>used to be an empty<span>with inlinewidth: 100%andheight: auto, so withwidth: 50%, a fixed height or a parent that shrinks to its content it differed in size from the loaded image, and the layout jumped when loading started. It is now an<img>with the samewidth/heightattributes and classes (a transparent image of the same size assrc, the hash as its background), and the browser sizes it by the same rules and CSS as the real image. The box also stays the same while the file downloads: until its first bytes arrive the<img>carriescontain-intrinsic-sizeof itswidth×height. If you looked for the placeholder as aspanin a test or a stylesheet, look forimg[aria-hidden="true"].
1.7.0
2026-10-07
- HazeHash placeholders, the preferred ones: new
hazehashprop on<VImage>andhazehashinSourcePlaceholder,ImageMetaand manifest entries. A 7–48 byte string (28 by default) from the optional peerhazehashdecodes to a blurred preview with the right aspect ratio and alpha channel.hazehashwins overblurhash,thumbhashandplaceholder;v-lazy-imganduseBackgroundImage()use it too. The package loads on demand; without it one warning is logged and the next placeholder is used. - The build tools make HazeHash:
mode: 'hazehash'for the Vite plugin and the Nuxt option,placeholders --mode hazehash,generate --hazehash, the?hazehashand?placeholder=hazehashimports. - New
tuning.budget(--budget,&budget=in an import): the size of a HazeHash string in bytes, 7–48, default 28. - Changed: the default placeholder mode is
hazehashwhen thehazehashpackage is installed,blurhashotherwise. To keep BlurHash, setmode: 'blurhash'; installhazehashin the app, because the browser decodes the hashes.