/ Docs

Bundle Size #

PublishedUpdated Sep 16, 2026

All measurements are for ESM output with minification enabled. Gzipped delta is the cost of adding that plugin on top of the base bundle.

Size Table #

Plugin Minified Gzipped Delta
Base (createVList) 27.3 KB 10.3 KB —
vlist/synthetic entry (deprecated) 34.2 KB 12.9 KB +2.6 KB
a11y 32.0 KB 12.0 KB +1.7 KB
selection 37.8 KB 13.6 KB +3.3 KB
data 41.0 KB 15.1 KB +4.8 KB
scrollbar 35.5 KB 13.2 KB +2.9 KB
sortable 39.2 KB 13.9 KB +3.6 KB
groups 43.4 KB 15.7 KB +5.4 KB
page 29.9 KB 11.2 KB +0.9 KB
snapshots 30.6 KB 11.4 KB +1.1 KB
transition 34.1 KB 12.3 KB +2.0 KB
autosize 30.6 KB 11.5 KB +1.2 KB
search 36.9 KB 13.6 KB +3.3 KB
carousel 43.2 KB 15.8 KB +5.5 KB
Layout
grid 34.7 KB 12.9 KB +2.6 KB
table 46.3 KB 16.4 KB +6.1 KB
masonry 39.4 KB 14.7 KB +4.4 KB
tree 43.1 KB 15.6 KB +5.3 KB

The synthetic driver is not in the base. A list that goes synthetic, with scroll.mode: "synthetic" or "auto" past the browser's size limit, downloads it as a separate file, synthetic-driver.js (about 3.4 KB gzipped), the first time it needs it.

Tree-Shaking #

Only imported plugins are bundled. Dead code elimination has been verified for all 16 plugins.

Example: importing only createVList + selection produces a 13.6 KB gzipped bundle — no cost for unused plugins.

// Only createVList + selection are bundled — nothing else
import { createVList, selection } from "vlist";

Measuring #

bun run size